当前位置:网站首页>除了解析域名,DNS还能干吗?
除了解析域名,DNS还能干吗?
2020-11-09 12:53:00 【osc_fge5j3lp】
一个http请求,典型的执行流程是怎么样的呢?
可以看到,典型流程为:
(1)客户端请求dns-server,发起域名解析;
(2)dns-server返回域名对应的外网ip(1.2.3.4);
(3)客户端通过外网ip(1.2.3.4),访问反向代理;
(4)反向代理通过内网ip(192.168.x.x),将请求分发给web-server;
(5)web-server对请求进行处理;
其中,第一个步骤,将域名转化ip的过程,发生在应用系统的外部,是通过DNS实现的。
除了域名解析,在架构设计时,还能利用DNS做一些什么事情呢?
一、用户就近访问
DNS可以实现,用户所需资源的就近访问:
(1)电信用户想要访问某一个服务器资源;
(2)浏览器向dns-server发起域名解析请求;
(3)dns-server识别出访问者是电信用户;
(4)dns-server将电信机房的nginx外网ip返回给访问者;
(5)访问者就近访问;
根据用户ip来返回最近的服务器ip,称为“智能DNS”,CDN以及多机房多活中最常用。
二、反向代理水平扩展
典型的互联网架构中,可以通过增加web-server来扩充web层的性能,但反向代理nginx仍是整个系统的唯一入口,如果系统吞吐超过nginx的性能极限,难以扩容,此时就需要dns-server来配合水平扩展。
具体做法是:在dns-server对于同一个域名可以配置多个nginx的外网ip,每次DNS解析请求,轮询返回不同的ip,这样就能实现nginx的水平扩展,这个方法叫“DNS轮询”。
三、web-server负载均衡
既然“dns轮询”可以将同一个域名的流量均匀分配到不同的nginx,那么也可以利用它来做web-server的负载均衡:
(1)架构中去掉nginx层;
(2)将多个web-server的内网ip直接改为外网ip;
(3)在dns-server将域名对应的外网ip进行轮询解析;
通过DNS来实施负载均衡有什么优缺点呢?
优点:
(1)利用第三方DNS实施,服务端架构不用动;
(2)少了一层网络请求;
不足:
(1)DNS只具备解析功能,不能保证对应外网ip的可用性,而nginx做反向代理时,与web-server之间有保活探测机制,当web-server挂掉时,能够自动迁移流量;
(2)当web-server需要扩容时,通过DNS扩容生效时间长,而nginx是服务端完全自己可控的部分,web-server扩容更实时更方便;
因为上面两个原因,架构上一般都使用高可用反向代理。
总结
架构设计中,除了域名解析,DNS还有其他用武之地:
(1)智能DNS,根据用户ip来就近访问服务器;
(2)DNS轮询,水平扩展反向代理层;
(3)利用DNS实施负载均衡;
希望大家有收获。
扫码关注“架构师之路”视频号
视频号要有100个关注,才能开通认证,希望大家成为前100个朋友。感谢,感恩。
版权声明
本文为[osc_fge5j3lp]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4417091/blog/4709460
边栏推荐
猜你喜欢
Wechat circle
JVM learning (4) - garbage collector and memory allocation
Flink 系例 之 Reduce
Understanding data structures starts with this article~
天啦撸!打印日志竟然只晓得 Log4j?
彩虹排序 | 荷兰旗问题
“开源软件供应链点亮计划 - 暑期 2020”公布结果 基于 ChubaoFS 开发的项目获得最佳质量奖
技美那么贵,不如找顾问 | AALab企业顾问业务
Interface tests how to pass files in post requests
An attempt to read or write to protected memory occurred using the CopyMemory API. This usually indicates that other memory is corrupted.
随机推荐
Nine kinds of distributed primary key ID generation schemes of sub database and sub table are quite comprehensive
Aren't you curious about how the CPU performs tasks?
外贸自建网站域名的选择— Namesilo 域名购买
JVM learning (5) - execution subsystem
EFF 认为 RIAA 正在“滥用 DMCA”来关闭 YouTube-DL
Setting up a proxy for the WGet command
Detailed explanation of [golang] GC
VisualStudio(Mac)安装过程笔记
The middle stage of vivo Monkey King activity
JVM学习(五) -执行子系统
解决IDEA快捷键 Alt+Insert 失效的问题
Vscode plug-in configuration pointing North
PAT_甲级_1074 Reversing Linked List
Show profile analysis of SQL statement performance overhead
Use treeview tree menu bar (recursively call database to create menu automatically)
从汇编的角度看pdb文件
嗯,查询滑动窗口最大值的这4种方法不错....
SEO见风使舵,是对还是错?
Mobile security reinforcement helps app achieve comprehensive and effective security protection
服务应用 ClockService安卓实现闹钟