知识卡片

HTTP-DNS:灵活可控及时的代价是高开发成本与侵入性

普通读书笔记卡

内容

传统DNS做负载均衡只能解决”地理级别”的均衡(把用户导向不同地区的机房),没法做到”机器级别”的均衡——原因是IP资源成本太高,比如百度搜索业务需要上万台机器支撑,不可能每台机器都配一个公网IP(可以用dig baidu.com验证百度实际暴露的IP数量远少于机器数)。传统DNS本身还有两个固有缺陷:一是DNS缓存时间较长,即便及时更换IP,由于缓存原因,还会有一部分用户继续访问旧的IP;二是DNS是三方提供的,无法感知后端服务器的状态和处理能力差异,出了问题只能等运营商处理,速度较慢。针对访问延迟和故障敏感的业务,部分公司开始自己建设私有HTTP-DNS系统——本质上是绕开传统DNS体系,改用HTTP协议直接请求自己的私有DNS服务器集群,从而实现自主的域名解析。HTTP-DNS带来三个明显好处:灵活(可根据业务需求灵活定制域名解析策略)、可控(自己开发的系统,域名解析可以做到自主可控,不受传统DNS逐层缓存的限制)、及时(不会受到传统DNS缓存的影响,可以更加实时地更新数据,也可以更快隔离有问题的服务器)。但HTTP-DNS也有明显代价:开发成本高(没有现成产品可用,需要自己开发整套体系)、侵入性强(业务需要改造代码才能使用HTTP-DNS,不是简单实现就可以)。这也解释了为什么HTTP-DNS目前主要用在App类业务上——因为App可以自己实现灵活的服务器访问策略;而Web业务由于域名解析是浏览器完成的,业务方难以插入自定义逻辑,因此较难推广HTTP-DNS。

参考来源

- 位置:《从零开始学架构》第42讲《互联网架构模板:"网络层"技术》"负载均衡"之"1.DNS"(源文件:_epub-src/OEBPS/text00003.html) - 结论依据:原文说明"因为DNS缓存的时间比较长,一旦某台业务机器发生故障,即使我们及时修改了DNS,但由于缓存的原因,还是会有一部分用户继续访问故障的机器""部分业务为了实现更灵活的控制,会实现自己的HTTP-DNS系统……优点为:灵活、可控、及时;缺点为:开发成本高、侵入性强",直接支撑本卡片结论。 - 原始内容:DNS是这几种负载均衡方式中最简单也是最常见的负载均衡方式……由于DNS是多级解析,每一级都可能缓存,因此更新startup速度慢……HTTP-DNS的方式主要应用在通过App访问的业务上,因为App可以方便地实现自定义的HTTP-DNS