周志明的软件架构课
周志明
博士,远光软件研究院院长,《深入理解 Java 虚拟机》《凤凰架构》等书作者
54203 人已学习
免费领取
课程目录
已完结/共 74 讲
架构师的视角 (24讲)
周志明的软件架构课
15
15
1.0x
00:00/00:00
登录|注册

16 | 域名解析系统,优化HTTP性能的第一步

你好,我是周志明。从今天这节课开始,我们一起来学习下,如何引导流量分配到最合适的系统部件中进行响应。
那么在正式开始学习之前,我们先来了解下所谓的透明多级分流系统的定义。

理解透明多级分流系统的设计原则

我们都知道,用户在使用信息系统的过程中,请求首先是从浏览器出发,在 DNS 的指引下找到系统的入口,然后经过了网关、负载均衡器、缓存、服务集群等一系列设施,最后接触到了系统末端存储于数据库服务器中的信息,然后再逐级返回到用户的浏览器之中。
这个过程需要经过许许多多的技术部件。那么作为系统的设计者,我们应该意识到不同的设施、部件在系统中,都具有各自不同的价值:
有一些部件位于客户端或网络的边缘,能够迅速响应用户的请求,避免给后方的 I/O 与 CPU 带来压力,典型的如本地缓存、内容分发网络、反向代理等。
有一些部件的处理能力能够线性拓展,易于伸缩,可以通过使用较小的代价堆叠机器,来获得与用户数量相匹配的并发性能,并且应尽量作为业务逻辑的主要载体,典型的如集群中能够自动扩缩的服务节点
有一些部件的稳定服务,对系统运行具有全局性的影响,要时刻保持着容错备份,维护着高可用性,典型的如服务注册中心、配置中心
有一些设施是天生的单点部件,只能依靠升级机器本身的网络、存储和运算性能来提升处理能力,比如位于系统入口的路由、网关或者负载均衡器(它们都可以做集群,但一次网络请求中无可避免至少有一个是单点的部件)、位于请求调用链末端的传统关系数据库等,都是典型的容易形成单点部件。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了DNS域名解析系统的工作原理和设计原则,强调了其作为透明多级分流系统的重要性。文章首先以作者自身对DNS的误解为引子,介绍了DNS的基本工作原理,包括递归解析过程和权威域名服务器的作用。接着,文章指出了DNS系统多级分流设计的优势,如能够经受全球网络流量冲击,但也存在响应速度受影响和中间人攻击的风险。最后,文章提到了DNS Prefetching和DNS over HTTPS等前端优化手段和新的DNS工作模式,以应对这些问题。总的来说,本文通过介绍DNS系统的工作原理和设计特点,为读者展示了如何优化HTTP性能,构建高可用、高并发的系统架构。

该试读文章来自《周志明的软件架构课》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • bigben
    HTTPDNS的地址用ip还是域名呢,如果是域名,则达不到安防的目的吧?

    作者回复: 是用IP的,不然就成套娃了。 譬如腾讯云的HTTPDNS,它的查询地址是这样的:http://119.29.29.29/d?dn=www.dnspod.cn

    2020-12-25
    3
    22
  • 大力水手Jerry
    周老师,文中说“本地 DNS 收到查询请求后,会按照“是否有 www.icyfenix.com.cn 的权威服务器”→“是否有 icyfenix.com.cn 的权威服务器”→“是否有 com.cn 的权威服务器”→“是否有 cn 的权威服务器”的顺序,依次查询自己的地址记录。如果都没有查询到,本地 DNS 就会一直找到最后点号代表的根域名服务器为止。”,这里描述好像不太准确,针对www.icyfenix.com.cn是直接进行域名解析,即从本地DNS缓存中查找www.icyfenix.com.cn的A记录,如果没有,则在缓存中查找icyfenix.com.cn的NS记录,再就是com.cn的NS记录,再就是cn的NS记录,如果还没有找到,则再根域名服务器从上向下查找。

    作者回复: 在第一步中有写:“后续每一级 DNS 查询的过程,都会有类似的缓存查询操作,所以我就不重复说了”

    2021-03-16
    1
  • Helios
    各种proxy,什么MySQL proxy,redis proxy都是分流手段,软件的问题没有是加一层不能解决的

    作者回复: proxy是分流手段,分流不仅仅是proxy

    2021-02-03
    1
  • zhanyd
    一个不起眼的DNS竟然暗藏了这么多精妙的设计,计算机技术发展的每个阶段成果,都是人类智慧的结晶。 关于奥卡姆剃刀原则,做点补充。 奥卡姆剃刀法则,又被称为“简约之法则”,它是由14世纪圣方济各会修道士奥卡姆(英格兰的一个地方)的威廉(William of Occam)提出来的,他说过这样一段话: “切勿浪费较多东西,去做‘用较少的东西,同样可以做好的事情’。” 更有名的一句话是:如无必要,勿增实体。 在历史上各个时代,最高深的物理学理论,从形式上讲都不复杂,从牛顿力学,到爱因斯坦的相对论,到今天物理学的标准模型。 例如:质能方程 E=mc^2 ,欧拉恒等式 e^(iπ) + 1 = 0 都以极简的方式描述了极其复杂的规律。 关于计算机系统,在能满足需求的前提下,最简单的系统就是最好的系统。 很多人为了显示自己的技术水平,明明是很简单的需求,却上了一堆高大上的技术,为了技术而技术,忘了技术的本质是为业务服务的,这显然违背了奥卡姆剃刀原则。
    2020-12-23
    2
    30
  • 大头
    1 dns解析,域名解析配置多个IP,利用DNS本身得解析做分流 2 dns加速,通过缓存一些静态资源,达到加速得效果 3 静态资源分离,图片,css,js等静态资源独立部署,像现在的前后端分离,我觉得也算是达到分流的效果 4 SLB,做负载均衡,分发给多个服务 5 redis,memcached缓存服务,对数据库压力进行分流 6 mongodb,es等文档存储,缓解数据库单点风险 7 中间件kafka,mq 起到削峰填谷,分流的作用(当然还有一个解耦作用) 8 数据库的主从,读写分离,从数据库的维度做分流
    2020-12-24
    19
  • neohope
    资源预下载,资源异步加载,资源压缩,dns加速,静态资源内容分发,多机房服务器就近访问,购买多条网络链路,防火墙过滤非法请求,F5负载,反向代理,API网关,多实例部署,缓存加速,一致性Hash分流,DB分库,异步任务队列等等。 其实还有P2P加速,网盘文件特征码上传加速,多网卡带宽绑定等特殊手段。
    2021-03-30
    3
  • Johar
    http dns还有一个好处,可以方便更新路由信息或者路由策略
    2022-06-10
    1
  • 华仔
    分流手段,除了负载均衡、分库分表、缓存、CDN之外,还有个前端的前后端分离,前端加重一些业务逻辑,减少对后端依赖。
    2021-08-26
    1
  • 李二木
    在能满足需求的前提下,最简单的系统就是最好的系统。
    2021-03-21
    1
  • worry
    域名劫持,在实际产品中确实是很无奈的,关键运营商也劫持。HTTPDNS虽说能解决问题,但是要在终端写死IP地址,不利于后续的维护,比如机房迁移。
    2021-02-23
    1
收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部