当前位置: 首页 > news >正文

网络协议之传统DNS存在的问题以及httpdns

写在前面

传统的DNS虽然使用的非常广泛,但是也是存在一些问题的,本文就来一起来看下,以及其解决方案http dns。

1:传统DNS存在的问题

1.1:域名缓存问题

用户某次访问时,可能已经有了距离用户更近的服务IP,但是因为还是使用缓存的那个服务IP(注意并不是不能用了),所以就无法拿到最优的那个IP了。

1.2:域名转发问题

存在这个问题的原因是,有些运营商,自己并不会取获取DNS信息,而是将这个工作转发到其他的运营商来做,而DNS服务器来返回IP地址时会根据当前请求者所在的运营商,优先返回同一个运营商的IP地址,这样访问的速度会更快,而因为中间转发了一次,所以,最终返回的IP地址就不一定和用户是同一个运营商了。如下:
在这里插入图片描述

1.3:NAT

域名转发,可能会造成返回非同一个运营商下IP的问题。

1.4:域名更新问题

传统的DNS服务器解析流程如下:
在这里插入图片描述
这里的域名更新问题,就出在本地DNS服务器上,这个本地DNS服务器,是网络所属的运营商提供的,是不受我们自己控制的,而不同的运营商提供的本地DNS服务器的质量也是参差不齐,所以,就会存在对缓存处理上的不足,比如明明已经过期了却还不重新请求(忽略TTL,一种不负责的做法),而因为这不是我们自己的服务,所以对此也无能为力。

1.5:解析延迟

传统的DNS服务器解析流程如下:
在这里插入图片描述
一层套一层,需要多个请求,对于延时比较敏感的应用不是很友好,甚至可能造成解析超时。

2:httpDNS

httpDNS就是搭建一个基于http协议的服务或者是服务集群,然后通过访问这些http服务来获取IP地址,而因为是自己的服务,所以对于过期时间,更新啥的都好说,而不用受制于运营商的本地DNS缓存。因为需要绕过默认的DNS解析流程,所以需要额外的SDK的支持。但这种方式目前主要还是使用在手机移动客户端,架构如下:
在这里插入图片描述
主要是缓存设计,和智能调度两部分。分别看下。

2.1:缓存

为了方便理解httpDNS缓存,来和应用架构的缓存做个对比:
在这里插入图片描述

  • 同步更新
    同步更新就是,如果是本地缓存过期,则直接请求httpDNS服务器,对应到应用架构就是Cache-aside 机制,即先读缓存,缓存读不到再请求HTTP DNS服务,如下图:
    在这里插入图片描述
    这种方式好处是保证数据最新,坏处是对httpDNS服务器在过期那一刻,可能会存在并发访问,增加httpDNS服务器的压力,当然也是一种浪费。
  • 异步更新
    对应到应用架构缓存就是refresh-aside 机制,即通过异步的方式来更新缓存,好处是保证只有一个请求更新缓存,坏处是如果是更新不及时可能会读到过期的数据。如下图:
    在这里插入图片描述

2.2:智能调度

为了能够保证返回最优的一个IP地址给客户端,需要综合考虑各方面的因素,除了距离之外,还要考虑,服务器响应速度(sdk上报),错误率(sdk上报),服务是是否存活(健康检测),为了能够综合处理这些信息,就需要智能调度这样的一个组件。当然HTTP DNS也需要开放接口来让用户对调度策略进行查看和管理,所以最终架构如下:
在这里插入图片描述

写在后面

参考文章列表

网络协议之DNS 。

http://www.dtcms.com/a/582240.html

相关文章:

  • Linux——9
  • 广西网站建设证件查询安装wordpress到服务器
  • 电子电气架构 --- 高阶智能辅助驾驶浅析
  • GPT-4o与GPT-5存在七项零点击攻击漏洞
  • 医院信息化建设会议安排网站县级网站
  • 网站建设方案文库wordpress的标签页
  • 17zwd一起做网站官网wordpress开发视频网站模板
  • 仓颉语言:全栈开发新利器,从服务端到鸿蒙的深度解析与实践
  • GitPuk零基础学习,使用GitPuk + Arbess进行CICD自动化部署
  • 部署基于 LNMP 的 Discuz! 论坛服务器
  • Cordova 开发鸿蒙应用完全指南
  • HarmonyOS开发-系统AI视觉能力-图片识别
  • YAML语言
  • ChatBox AI 中配置阿里云百炼模型实现聊天对话
  • 基于 GitCode 云端环境的 CANN ops-math 算子库深度测评:Ascend NPU 上的数学引擎解析
  • php网站本地搭建做采集网站赚钱
  • 03 Model组件及其使用技巧
  • 指针深入第四弹--sizeof和strlen的对比、数组和指针笔试题解析、指针运算笔试题解析
  • 做刷单的网站网站关键词优化遇到的情况和解决方法
  • 【Java】Java 打印字符数组的正确姿势
  • 做两个阿里网站wordpress教程下载
  • Rust 练习册 :Minesweeper与二维数组处理
  • Flink CDC「Data Pipeline」定义与参数速查
  • 电子烟花:科技点亮夜空的艺术
  • Anatomy-guided Pathology Segmentation
  • 广州建设工程合同备案系统网站做一个网站需要多少费用
  • 内存区域划分——垃圾回收
  • 网站建设可行性分析网站开发需求分析用的图
  • Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
  • 一致性哈希和普通哈希有什么区别