网络通信 频道

除了域名解析,DNS 在架构设计中的三大妙用!

  一般来说,DNS有什么用?

  如上图所示,DNS一般用作域名解析,将域名转化为NG的外网IP,以便于NG将HTTP请求路由给内网的web-server集群。

  在架构设计的过程中,DNS还有其他用途吗?

  至少还能干这三件事。

  其一:用户就近访问。

  通过智能DNS技术,可以很容易的实现,用户对所需资源的就近访问。

  如上图所示,不同用户访问同一个资源:

  电信用户,DNS可以返回电信机房的IP;

  联通用户,DNS可以返回联通机房的IP;

  教育网用户,DNS可以返回教育网机房的IP;

  如此一来,所用用户的访问速度都会加快。

  智能DNS技术是CDN以及多机房多活架构中必不可少的部分。

  其二:反向代理的水平扩展。

  在第3集《延时与吞吐量》的视频中曾经留了一个尾巴:

  说Nginx一般是系统的入口,假如Nginx的吞吐量是10W次每秒,google首页的Nginx,要如何抗住100W次每秒的并发呢?

  有小伙伴说LVS,有小伙伴说F5,都没错,但这两种本质上都是scale up方案,性能总有极限,治标不治本。

  scale out方案的正解方案是:DNS轮询。

  如上图所示,在DNS侧,对于同一个域名配置多个nginx的外网ip,每次DNS解析域名请求,轮询返回不同的ip,这样就能实现nginx的水平扩展,达到:1台NG抗10W吞吐,10台NG抗100W吞吐的目的。

  其三:web-server的负载均衡。

  在反向代理技术出现之前,可以借助“DNS轮询”的功能,将流量均匀分配到不同的web-server上去。这个方案的好处是架构少了一层网络请求,坏处是“DNS轮询”并不能保障后端web-server的可用性。

  而反向代理除了能保证负载均衡,同时还兼具保活探测的能力,故在反向代理技术出现后,就不用DNS轮询来做负载均衡了。

  稍作总结,在架构设计过程中,DNS除了解析域名,还可以:

  其一,智能DNS,根据用户ip来就近访问服务器;

  其二,DNS轮询,水平扩展反向代理层;

  其三,利用DNS实施负载均衡;

  知其然,知其所以然。

  思路比结论更重要。

0
相关文章