Godns - Go实现的DNS缓存服务器[zt]
clq
浏览(513) -
2018-12-23 23:18:48 发表
编辑
关键字: golang
Godns - Go实现的DNS缓存服务器
https://studygolang.com/articles/1252
这是一个创建于 2014-10-11 10:15:28 的文章,其中的信息可能已经有所发展或是发生改变。
最近用Go写了一个DNS缓存服务器,主要实现两个功能:
DNS缓存
有缓存失效机制,在cache未命中时,支持设置上层递归服务器。
全局hosts
维护全局的hosts设置,统一实现解析域名到指定IP的需求。
另外,支持动态更新hosts记录,而不需要重启服务器进程。
重新造一个轮子的原因
实现了DNS缓存服务器并支持自定义的hosts的开源软件有很多,例如dnsmasq,之所以我们要自己写一个,是因为dnsmasq的hosts记录都是写在本地文件中,更新一条记录后,要重启进程才能生效。而我们需要能在不同的服务器上共同维护一个全局的hosts记录,并在hosts记录修改后能立即生效。目前能找到的实现,包括dnsmasq,pdnsd,djbdns,还没有一个能完全满足我们需求的。
用Go实现的原因
之所以用Go来实现主要是担心Python的性能问题,刚好最近看了大量Go的开源项目,因此便想要Go来尝试一下。实践证明,Go确实非常适合这类服务器端应用的开发。程序性能还不错,我们在4核2.5G CPU, 46G 内存的服务器上测试,每秒大概能处理1.6W多个请求,这台机器上同时还跑了一些其它应用,如果在干净的机器上测试,数据应该还会更好一些。另外,整个开发效率也没比python慢多少,差不多一个礼拜就完成了所有功能的开发。
目前godns已经部署到了我们的生产系统。
同时把代码放到github上:https://github.com/kenshinx/godns , 欢迎有需要的同学试用,如果有什么问题可以在github上反馈。
Godns - Go实现的DNS缓存服务器
kenshin · 2014-10-11 10:15:28 · 6211 次点击 · 预计阅读时间 1 分钟 · 大约11小时之前 开始浏览
这是一个创建于 2014-10-11 10:15:28 的文章,其中的信息可能已经有所发展或是发生改变。
最近用Go写了一个DNS缓存服务器,主要实现两个功能:
DNS缓存
有缓存失效机制,在cache未命中时,支持设置上层递归服务器。
全局hosts
维护全局的hosts设置,统一实现解析域名到指定IP的需求。
另外,支持动态更新hosts记录,而不需要重启服务器进程。
重新造一个轮子的原因
实现了DNS缓存服务器并支持自定义的hosts的开源软件有很多,例如dnsmasq,之所以我们要自己写一个,是因为dnsmasq的hosts记录都是写在本地文件中,更新一条记录后,要重启进程才能生效。而我们需要能在不同的服务器上共同维护一个全局的hosts记录,并在hosts记录修改后能立即生效。目前能找到的实现,包括dnsmasq,pdnsd,djbdns,还没有一个能完全满足我们需求的。
用Go实现的原因
之所以用Go来实现主要是担心Python的性能问题,刚好最近看了大量Go的开源项目,因此便想要Go来尝试一下。实践证明,Go确实非常适合这类服务器端应用的开发。程序性能还不错,我们在4核2.5G CPU, 46G 内存的服务器上测试,每秒大概能处理1.6W多个请求,这台机器上同时还跑了一些其它应用,如果在干净的机器上测试,数据应该还会更好一些。另外,整个开发效率也没比python慢多少,差不多一个礼拜就完成了所有功能的开发。
目前godns已经部署到了我们的生产系统。
同时把代码放到github上:https://github.com/kenshinx/godns , 欢迎有需要的同学试用,如果有什么问题可以在github上反馈。
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.