【网络协议】聊聊HTTPDNS如何工作的

传统 DNS 存在哪些问题?

域名缓存问题

我们知道CND会进行域名解析,但是由于本地会进行缓存对应的域名-ip地址,所以可能出现过期数据的情况。
域名转发问题
出口 NAT 问题
域名更新问题
解析延迟问题

因为在解析DNS的时候,需要进行递归的遍历多个DNS服务器,这中间有一定的时延,所以会有时间延迟问题。

HTTPDNS的工作模式

既然DNS存在一定的问题, 那么又没有轻量级的DNS解析方式,HTTPDNS其实就是一种,使用HTTP协议进行DNS解析,请求服务器集群,获取最近的地址。

整体流程如下:

1.手机客户端请求HTTPDNS服务器,获取IP列表,缓存在本地,随着不断的解析域名,本地也会存储一份DNS解析结果的缓存数据。

2.如果从本地缓存可以获取数据,直接返回

3.如果从本地没有获取,那么直接请求HTTPDNS服务器,选择一个IP列表中一个发起HTTP请求。

4.HTTPDNS 服务会有智能调度和健康检查等接口。

HTTPDNS的缓存设计

为了提升读取速度,有自己的本地缓存。但是缓存的失效和更新如何保证呢。

对于HTTPDNS来说,就是手机客户端、DNS缓存、HTTPDNS服务器。

更新缓存的方式其实就是两种,一种是同步更新。也就是cache-Aside机制。先读取缓存,如果失效,读取源数据,然后设置更新缓存。

另一种是异步方式也就是快失效的时候,异步起一个线程进行处理。本质上来说DNS缓存,也需要有数据的持久化能力,保证数据不丢失。

HTTPDNS 的调度设计

调度设计其实就是需要根据不同的后端服务应用,给出一个优先响应列表,比如根据服务的容错率、健康检查、所在宿主机的配置、服务所在区域等进行调度,分配。

传统的 DNS 有很多问题,例如解析慢、更新不及时。因为缓存、转发、NAT 问题导致客户端误会自己所在的位置和运营商,从而影响流量的调度。

HTTPDNS 通过客户端 SDK 和服务端,通过 HTTP 直接调用解析 DNS 的方式,绕过了传统 DNS 的这些缺点,实现了智能的调度。

相关推荐
狼头长啸李树身5 分钟前
眼儿媚·秋雨绵绵窗暗暗
大数据·网络·服务发现·媒体
SizeTheMoment1 小时前
初识HTTP协议
网络·网络协议·http
哲伦贼稳妥2 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
hgdlip3 小时前
如何快速切换电脑的ip地址
网络·tcp/ip·电脑
程序员-珍5 小时前
虚拟机ip突然看不了了
linux·网络·网络协议·tcp/ip·centos
4647的码农历程5 小时前
Linux网络编程 -- 网络基础
linux·运维·网络
向李神看齐5 小时前
RTSP协议讲解
网络
Death2005 小时前
使用Qt进行TCP和UDP网络编程
网络·c++·qt·tcp/ip
魏大橙6 小时前
linux RCE本地/公网测试
网络·网络协议·udp
陈逸轩*^_^*6 小时前
Java 网络编程基础
java·网络·计算机网络