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

作者:小董亮出你的8块腹肌吧!日期:2025/11/8

写在前面

传统的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


网络协议之传统DNS存在的问题以及httpdns》 是转载文章,点击查看原文


相关推荐


Python编程实战 · 基础入门篇 | 集合(set)
程序员爱钓鱼2025/11/6

在 Python 的基础数据结构中,除了列表(list)、元组(tuple)、字典(dict),还有一种特殊但非常实用的数据类型——集合(set)。 集合的最大特点是:不重复、无序、可进行集合运算。 它常用于去重、数据筛选、关系判断等场景,是数据处理中的高效利器。 一 什么是集合(set) 集合(Set)是一种 无序、可变 的数据容器, 用于存放 不重复的元素。 在 Python 中,可以通过 {} 或 set() 创建集合。 fruits = {"apple", "banana", "ch


(3)100天python从入门到拿捏
硅基工坊2025/11/1

Python3 基本数据类型 Python 中的变量不需要声明,它没有类型,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建 文章目录 Python3 基本数据类型一、数据类型介绍1. 数值类型(Numeric Types)1.1 整数(int)1.2 浮点数(float)1.3 复数(complex) 2. 字符串类型(String)3. 布尔类型(Boolean)4. 列表类型(List)5. 元组类型(Tuple)6. 字典类型(Dictionary)


数据库连接详解:从基础到实践
培风图南以星河揽胜2025/10/30

数据库连接详解:从基础到实践 在现代软件开发中,数据库是存储和管理数据的核心组件。无论是Web应用、移动应用还是数据分析系统,都离不开与数据库的交互。而这一切的基础,就是数据库连接。本文将深入浅出地介绍数据库连接的基本概念、原理、实现方式以及最佳实践,帮助你构建高效、稳定的数据库访问层。 1. 什么是数据库连接? 简单来说,数据库连接(Database Connection) 是应用程序与数据库服务器之间建立的一个通信通道。通过这个通道,应用程序可以发送SQL查询、接收查询结果、执行事


【案例实战】智能出行导航助手HarmonyOS 开发全流程复盘
cooldream20092025/10/27

目录 前言1. 项目概述与目标设定1.1 项目背景1.2 技术选型与总体方案 2. 架构设计:分布式与模块化融合2.1 设计思路2.2 模块化的实践价值 3. HarmonyOS 开放能力集成实战3.1 云开发(Cloud Development)3.2 性能监控与调优(APMS)3.3 分布式软总线:多端协同核心 4. 性能优化体系建设4.1 启动优化分层策略4.2 内存与功耗控制4.3 云函数响应优化 5. 经验复盘与开发心得5.1 架构先行,分布式思维贯穿始终5.2 善用


vue.js 视频截取为 gif - 2(将截取到的gif 转换为base64 、file)
改了一个昵称2025/10/25

demo.vue <template> <div> <div> <video ref="videoRef" :src="theUrl" controls autoplay muted crossOrigin="anonymous"></video> <!-- <div class="controls"> <button :disabled="isRecording" @click="startCapture"> 开始录制


华为Java专业级科目一通过心得
想要AC的dly2025/10/22

华为Java专业级科目一通过心得 最近顺利通过了Java专业级科目一考试。在这个过程中,我积累了一些心得体会,希望分享给大家,尤其是那些正在备考的朋友。考试并不像想象中那么难,只要掌握好基础,保持练习,就能轻松应对。下面我从几个方面谈谈我的备考经验。 1. 每天坚持使用Java,保持手感 备考Java考试,最基础的就是要保持对语言的熟悉度。我建议大家每天都用一用Java,哪怕只是写一些简单的代码片段。比如,编写一个算法题、调试一段程序,或者参与开源项目。这样做能帮助你维持“手感”,避免考试


网络速度测试工具——SpeedTest使用指南
好学的Jack2025/10/21

本文还有配套的精品资源,点击获取 简介:SpeedTest是一款用于测量互联网上传下载速度、网络延迟和数据传输稳定性的工具。软件通过连接最近的服务器进行一系列网络测试,帮助用户识别网络问题和性能瓶颈。测试步骤包括初始化测试、下载速度测试、上传速度测试、ping测试、Jitter测试和丢包率测试。安装程序“SpeedTestInstall.exe”允许用户通过简单步骤设置软件,从而进行日常或周期性的网络速度检查。 1. 网络速度测试工具使用 随着互联网技术的发展,家庭和企


EtherCAT转ModbusTCP工业智能网关:开启仓储自动化通信变革的技术桥梁
捷米特研发一部2025/10/20

一、项目背景与核心痛点 某大型智能物流中心占地10万平方米,部署了超过200台自动化设备,其中包括基于Modbus TCP协议的西门子PLC、研华工控机等主站设备,以及采用EtherCAT协议的高精度编码器、智能仪表和协作机器人。由于协议不兼容,设备间通信存在诸多问题: 效率瓶颈:PLC下发分拣指令至EtherCAT机器人响应延迟达500ms,导致分拣线节拍混乱,单日吞吐量下降20%; 故障频发:编码器位置数据无法实时同步至HMI界面,设备异常需人工巡检发现,平均故障停机时间长达1.5小时


Vue3 状态管理完全指南:从响应式 API 到 Pinia
90后晨仔2025/10/19

什么是状态管理? 在 Vue 开发中,状态管理是一个核心概念。简单来说,状态就是驱动应用的数据源。每一个 Vue 组件实例都在管理自己的响应式状态,让我们从一个简单的计数器组件开始理解: <script setup> import { ref } from 'vue' // 状态 - 驱动应用的数据源 const count = ref(0) // 动作 - 修改状态的方法 function increment() { count.value++ } </script> <!-- 视图


Python快速落地的临床知识问答与检索项目(2025年9月教学配置部分)
Allen_Lyb2025/10/17

项目概述与技术选型 本项目定位为临床辅助决策支持工具,而非替代临床诊断的独立系统,旨在解决医疗行业两大核心痛点:一是医学知识更新速率加快,2025 年临床指南年均更新量较 2020 年增长 47%,传统知识管理方式难以同步;二是科室规范呈现碎片化分布,不同院区、亚专科的诊疗流程存在差异,导致知识检索效率低下。技术路线采用 RAG 知识库 + ChatFlow 多轮对话 + 工具节点对接 的三层架构,通过整合指南文献、临床路径和院内 SOP 文档,满足门诊快速问诊、病房随访问答及科室知识库精

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0