除了域名解析,DNS在架构设计中的三大妙用! | 架构师之路(12)

科技   2024-11-22 12:11   北京  
《架构师之路:架构设计中的100个知识点》
12.DNS在架构设计中的三大妙用


一般来说,DNS有什么用?

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

在架构设计的过程中,DNS还有其他用途吗?
至少还能干这三件事。

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

如上图所示,不同用户访问同一个资源:
1. 电信用户,DNS可以返回电信机房的IP;
2. 联通用户,DNS可以返回联通机房的IP;
3. 教育网用户,DNS可以返回教育网机房的IP;
如此一来,所用用户的访问速度都会加快。

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

其二:反向代理的水平扩展。
在第3集《延时与吞吐量》的视频中曾经留了一个尾巴:
第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实施负载均衡;

知其然,知其所以然。

思路比结论更重要。


补充阅读材料
https://www.cloudflare-cn.com/learning/dns/what-is-dns/

简图:DNS解析全流程
不少童鞋说,补充阅读材料总放英文文档,这次满足你,中文的好资料来了:《DNS的来龙去脉》,5分钟搞定

==全文完==


20年口罩期间做过的一个系列,以实践为主线,结合讲解架构知识点流量从10万到10亿,遇见的80个架构问题(8000字长文)》几十个小时视频内容,已完结

今年启动一个新系列《架构设计中的100个知识点》,以架构知识点为主线,结合讲实践。讲解形式:短视频+图文+直播+星球社群,免费欢迎感兴趣的童鞋关注。
短视频第14期:session sticky过时了吗?

平台对专业内容不推流,大家多帮忙标星,以及点赞,转发,在看三连。感谢!

架构师之路
架构师之路,坚持撰写接地气的架构文章
 最新文章