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

news2024/11/26 20:26:34

传统 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 的这些缺点,实现了智能的调度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1178928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】函数的系统化精讲(二)

🌈write in front :🔍个人主页 : 啊森要自信的主页 🌈作者寄语 🌈: 小菜鸟的力量不在于它的体型,而在于它内心的勇气和无限的潜能,只要你有决心,就没有什么事情是不可能的…

vue3错误排查-POST请求的body参数 传参方式form-data和json

问题:vue3实现登录功能,登录成功后 跳转到登陆后的界面 一秒后 闪退回登录页 对应的输出结果也一闪而过,反复复查了代码,没问题。 自测:进行断点输出调试。强行跳转到登陆后的界面,查看输出的结果。 没有报…

安全操作(安卓推流)程序

★ 安全操作项目 项目描述:安全操作项目旨在提高医疗设备的安全性,特别是在医生离开操作屏幕时,以减少非授权人员的误操作风险。为实现这一目标,我们采用多层次的保护措施,包括人脸识别、姿势检测以及二维码识别等技术…

Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化

前言 NOTE:本文中所指 “线程” 均为可执行调度单元 Kernel Thread。 NUMA 体系结构 NUMA(Non-Uniform Memory Access,非一致性存储器访问)的设计理念是将 CPU 和 Main Memory 进行分区自治(Local NUMA node&#x…

1070 结绳

一.问题: 给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来…

【网络安全 --- web服务器解析漏洞】IIS,Apache,Nginx中间件常见解析漏洞

一,工具及环境准备 以下都是超详细保姆级安装教程,缺什么安装什么即可(提供镜像工具资源) 1-1 VMware 16.0 安装 【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)-CSDN博客文章浏览阅读20…

Android Datastore 动态创建与源码解析

涉及到的知识点 1、协程原理---->很好的博客介绍,一个小故事讲明白进程、线程、Kotlin 协程到底啥关系? 2、Channel知识点---->Android—kotlin-Channel超详细讲解 3、Coroutines : CompletableDeferred and structured concurrency 封装的DataS…

动态规划-丑数

** 描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。 数据范围: 0≤n≤2000 要求&#x…

Mysql数据库 9.SQL语言 查询语句 连接查询、子查询

连接查询 通过查询多张表,用连接查询进行多表联合查询 关键字:inner join 内连接 left join 左连接 right join 右连接 数据准备 创建新的数据库:create database 数据库名; create database db_test2; 使用数据库:use 数据…

企业如何搭建智能客服系统?

在数字化时代,企业面临着客户需求多样化、市场竞争日益激烈等多重挑战。为了更好地满足客户的需求、提供高效的服务,越来越多的企业开始搭建智能客服系统。智能客服系统结合了人工智能和自然语言处理技术,可以实现自动回复、智能推荐以及数据…

Linux内核移植之主频设置

一. Linux内核移植 正点原子 ALPHA开发板已经添加到 Linux内核里面去了,前面文章关于如何添加已经掌握。但是,还有一些驱动的问题需要修改。 正点原子 I.MX6U-ALPHA 开发板所使用的 I.MX6ULL 芯片主频都是 792MHz 的,也就是NXP 官方宣…

MySQL的event的使用方法

MySQL的event的使用方法 一、事件定时策略 1、查看event事件开启状态 SHOW VARIABLES LIKE event_scheduler;如图,Value值 ON:打开,OFF:关闭。 2、设置event事件打开 SET GLOBAL event_scheduler ON;如果MySQL重启了&#x…

Python模块导入出现ModuleNotFoundError: No module named ‘***’解决方法

概述 几年没弄python了,全部还会给老师,今天弄了个demo,老是报错,在此记录下,方便后续查阅。 环境:Windows10 开发IDEA:PyCharm 2023.1.3 1、报错如下所示 2、解决方法:安装execjs…

AJAX-解决回调函数地狱问题

一、同步代码和异步代码 1.同步代码 浏览器是按照我们书写代码的顺序一行一行地执行程序的。浏览器会等待代码的解析和工作,在上一行完成之后才会执行下一行。这也使得它成为一个同步程序。 总结来说:逐行执行,需原地等待结果后&#xff0…

[python 刷题] 437 Path Sum III

[python 刷题] 437 Path Sum III 之前有写过 Path Sum I & II, leetcode 112 & 113,虽然使用 JS 写的,不过 python 的实现也更新了一下 题目如下: Given the root of a binary tree and an integer targetSum, return the number o…

解释一下Node.js中的事件循环(event loop)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

目前安卓、鸿蒙、澎湃的关系

1、了解AOSP是什么 AOSP全名为Android Open-Source Project,中文为安卓开源项目,开源即开放源代码。Android是一个基于Linux,由Google主导的开源系统。 2、AOSP谁的贡献最大? 3、华为的鸿蒙、小米的澎湃是套壳安卓吗&#xff1…

docker基础用法

docker基础用法 什么是docker docker中的容器: lxc --> libcontainer --> runC OCI Open Container-initiative 由Linux基金会主导于2015年6月创立旨在围绕容器格式和运行时制定一个开放的工业化标准contains two specifications the Runtime Specificat…

类的基本概念

类的概念是为了让程序设计语言能更清楚地描述日常生活中的事物。类是对某一类事物的描述,是抽象的、概念上的定义;而对象则是实际存在的属该类事物的具体个体,因而也称为实例(instance)。下面用一个现实生活中的例子来…

远程管理SSH服务

一、搭建SSH服务 1、关闭防火墙与SELinux # 关闭firewalld防火墙 # 临时关闭 systemctl stop firewalld # 关闭开机自启动 systemctl disable firewalld ​ # 关闭selinux # 临时关闭 setenforce 0 # 修改配置文件 永久关闭 vim /etc/selinux/config SELINUXdisabled 2、配置…