【系统设计系列】 DNS和CDN

系统设计系列初衷


System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

中文版: https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md

初衷主要还是为了学习系统设计,但是这个中文版看起来就像机器翻译的一样,所以还是手动做一些简单的笔记,并且在难以理解的地方对照英文版,根据自己的理解在AI的帮助下进行翻译和知识扩展。

域名系统(Domain name system, 简称DNS)

                                                来源:DNS 安全介绍

什么是DNS

域名系统是把 www.example.com 等域名转换成 IP 地址。

这里需要了解一下DNS协议。

DNS 协议的作用是将域名转换为 IP 地址,使得计算机之间可以通过域名进行通信。例如,当用户在浏览器中输入网址时,DNS 协议会将这个网址对应的域名解析成 IP 地址,然后计算机就可以通过这个 IP 地址连接到目标服务器,获取相应的网页信息。同时,DNS 还支持反向解析,即通过 IP 地址查找对应的域名。

域名系统是分层次的,一些 DNS 服务器位于顶层。当查询(域名) IP 时,路由或 ISP 提供连接 DNS 服务器的信息。较底层的 DNS 服务器缓存映射,它可能会因为 DNS 传播延时而失效。DNS 结果可以缓存在浏览器或操作系统中一段时间,时间长短取决于存活时间 TTL。

  • NS 记录(域名服务) ─ 指定解析域名或子域名的 DNS 服务器。
  • MX 记录(邮件交换)  ─ 指定接收信息的邮件服务器。
  • A 记录(地址)  ─ 指定域名对应的 IP 地址记录。
  • CNAME(规范)  ─ 一个域名映射到另一个域名或 CNAME 记录( example.com 指向 www.example.com )或映射到一个 A 记录。

CloudFlare 和 Route 53 等平台提供管理 DNS 的功能。某些 DNS 服务通过集中方式来路由流量:

  • 加权轮询调度
    • 防止流量进入维护中的服务器
    • 在不同大小集群间负载均衡
    • A/B 测试
  • 基于延迟路由
  • 基于地理位置路由

DNS的查询方式

DNS(Domain Name System,域名系统)主要有以下几种查询方式:

递归查询(Recursive Query):

递归查询是一种将查询请求传递给其他 DNS 服务器的方式,直到收到查询结果。当客户端向本地域名服务器发送查询请求时,本地域名服务器会代表客户端在域名树中逐级向上查询,直到找到对应的 IP 地址或查询到顶级域名服务器。在这个过程中,本地域名服务器会先查询自己的缓存,如果缓存中没有相应的记录,它会向其他 DNS 服务器发送查询请求,直到收到回答。

迭代查询(Iterative Query):

迭代查询是另一种查询方式,客户端向本地域名服务器发送查询请求,如果本地域名服务器没有相应的记录,它会将查询请求依次转发给其他 DNS 服务器,直到收到有效的 IP 地址。在迭代查询过程中,客户端和服务器之间存在多次交互,服务器在查询过程中逐步向上查找,直至找到答案。

反向查询(Reverse Query):

反向查询是基于 IP 地址查询主机名的方式。当客户端知道一个 IP 地址,想要查询其对应的主机名时,可以发送反向查询请求。本地域名服务器会接收到这个请求,并向其他 DNS 服务器发送查询请求,最终返回对应的主机名。

负载均衡查询(Load Balancing Query):

负载均衡查询是一种多个服务器之间的负载均衡技术。当一个域名对应多个 IP 地址时,为了避免单一服务器压力过大,可以将这些 IP 地址分配给多个服务器,组成一个服务器集群。这时,域名服务器需要将多个 IP 地址存储在 A 记录中,并将这些 A 记录分配给不同的服务器。当客户端发送查询请求时,本地域名服务器会依次向这些服务器发送查询请求,直到收到第一个有效的 IP 地址。

这些查询方式在域名解析过程中发挥着重要作用,不同的查询方式适用于不同的场景和需求。

DNS的缺陷

  • 虽说缓存可以减轻 DNS 延迟,但连接 DNS 服务器还是带来了轻微的延迟。
  • DNS服务管理通常由政府,网络服务提供商和大公司,而且通常非常复杂
  • DNS 服务最近遭受 DDoS 攻击,会导致不良的影响,比如用户在不知道 Twitter IP 地址的情况下无法访问 Twitter 等网站。(由于IP和域名无法解析对应上)

CDN(Content delivery network 内容分发网络)

什么是CDN

内容分发网络(CDN)是一个全球性的代理服务器分布式网络,它从靠近用户的位置提供内容。通常,HTML/CSS/JS,图片和视频等静态内容由 CDN 提供,虽然亚马逊 CloudFront 等也支持动态内容。CDN 的 DNS 解析会告知客户端连接哪台服务器。

将内容存储在 CDN 上可以从两个方面来提供性能:

  • 从靠近用户的数据中心提供资源
  • 通过 CDN 你的服务器不必真的处理请求

CDN 推送(push)

当你服务器上内容发生变动时,推送 CDN 接受新内容。直接推送给 CDN 并重写 URL 地址以指向你的内容的 CDN 地址。你可以配置内容到期时间及何时更新。内容只有在更改或新增是才推送,流量最小化,但储存最大化。流量较小的网站或内容不经常更新的网站可以很好地使用推送 CDN。 内容一次性放置在 CDN 上,而不是定期重新拉取。

CDN 拉取(pull)

CDN 拉取是当第一个用户请求该资源时,从服务器上拉取资源。你将内容留在自己的服务器上并重写 URL 指向 CDN 地址。直到内容被缓存在 CDN 上为止,这样请求只会更慢,

存活时间(TTL)决定缓存多久时间。CDN 拉取方式最小化 CDN 上的储存空间,但如果过期文件并在实际更改之前被拉取,则会导致冗余的流量。

流量大的网站可以很好地使用CDN拉取,因为流量分布得更均匀,CDN 上仅保留最近请求的内容。

CDN的缺陷

根据流量的不同,CDN 成本可能会很高,但应权衡不使用 CDN 时可能产生的额外成本。

如果在 TTL 过期之前更新内容,则内容可能会过时。

CDN 需要更改静态内容的 URL 以指向 CDN。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】堆排序 详解

堆排序 详解 堆排序代码实现 排序: 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录&#xff0c…

Python入门教程 | Python3 列表(List)

Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。 Python 有 6 个序列的内置类型,但最常见的是列表和元组。 列表都可以进…

Nacos配置文件更新+热更新+多环境配置共享+集群搭建

对服务配置文件 场景: 如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…

citavi合并重复文献题录

文章目录 一、宏macro的使用方法二、合并重复题录的macro代码2.1 下载并加载macro代码2.2 显示重复题录并合并2.3 合并的规则2.4 其他 附:macro代码 一、宏macro的使用方法 参考官方文档 Using macros - Citavi 6 Manual Macro files have the .cs file extension…

【ES系列】(一)简介与安装

首发博客地址 首发博客地址[1] 系列文章地址[2] 教学视频[3] 为什么要学习 ES? 强大的全文搜索和检索功能:Elasticsearch 是一个开源的分布式搜索和分析引擎,使用倒排索引和分布式计算等技术,提供了强大的全文搜索和检索功能。学习 ES 可以掌…

【性能测试】Jenkins+Ant+Jmeter自动化框架的搭建思路

前言 前面讲了Jmeter在性能测试中的应用及扩展。随着测试的深入,我们发现在性能测试中也会遇到不少的重复工作。 比如某新兴业务处于上升阶段,需要在每个版本中,对某些新增接口进行性能测试,有时还需要在一天中的不同时段分别进行…

【强化学习】MDP马尔科夫链

基本元素 状态集:表示智能体所处所有状态的全部可能性的集合。类似的集合,行为集,回报集决策:规定我在某个状态下,我做出某个action马尔可夫链:学术上来说是无记忆性质。说白了就是我只在乎我目前的状态。…

【C语言】入门——指针

目录 ​编辑 1.指针是什么 2.指针类型和指针运算 2.1指针-整数 2.2指针-指针 2.3指针的关系运算 3.野指针 3.1野指针成因 👍指针未初始化: 👍指针越界访问: 👍指针指向空间释放: 3.2如何规避野指针 …

超图嵌入论文阅读2:超图神经网络

超图嵌入论文阅读2:超图神经网络 原文:Hypergraph Neural Networks ——AAAI2019(CCF-A) 源码:https://github.com/iMoonLab/HGNN 500star 概述 贡献:用于数据表示学习的超图神经网络 (HGNN) 框架&#xf…

【探索Linux】—— 强大的命令行工具 P.8(进程优先级、环境变量)

阅读导航 前言一、进程优先级1. 优先级概念2. Linux查看系统进程3. PRI(Priority)和NI(Nice) 二、环境变量1. 概念2. 查看环境变量方法3. 环境变量的组织方式4.通过代码获取环境变量5. 环境变量的特点 总结温馨提示 前言 前面我们…

线性空间、子空间、基、基坐标、过渡矩阵

线性空间的定义 满足加法和数乘封闭。也就是该空间的所有向量都满足乘一个常数后或者和其它向量相加后仍然在这个空间里。进一步可以理解为该空间中的所有向量满足加法和数乘的组合封闭。即若 V 是一个线性空间,则首先需满足: 注:线性空间里面…

命令执行漏洞(附例题)

一.原理 应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。 二.利用条…

基于Matlab实现多个图像增强案例(附上源码+数据集)

图像增强是数字图像处理中的一个重要步骤,它通过一系列的算法和技术,使图像在视觉上更加清晰、明亮、对比度更强等,以便更好地满足人们的需求。在本文中,我们将介绍如何使用Matlab实现图像增强。 文章目录 部分源码源码数据集下载…

【Arduino25】液晶模拟值实验

硬件准备 LCD1602显示屏&#xff1a;1 个 220欧的电阻&#xff1a;1 个 旋钮电位器&#xff1a;1 个 面包板&#xff1a;1个 杜邦线&#xff1a;若干 硬件连线 软件程序 #include <LiquidCrystal.h>LiquidCrystal lcd(12,11,5,4,3,2);void setup(){lcd.begin(16,2);…

element-ui 修改tooltip样式

1.表格tooltip 统一修改 <el-table:data"tableDatas"tooltip-effect"light" .el-tooltip__popper.is-light {background: #FFF;box-shadow: 0px 0px 8px 1px rgba(0,0,0,0.16);border-radius: 4px;opacity: 1;border: none;&[x-placement^top] .p…

Android笔记(二十八):在雷电模拟器安卓7.0+上使用Charles抓包详细教程

背景 由于手头没有合适的真机,所有经常使用雷神模拟器来跑项目,模拟器也需要能够抓包看看接口返回的数据,以便自测调试。本文记录了如何在雷电模拟器安卓7.0+上使用Charles抓包,其他模拟器没试过。 最终效果 浏览器打开百度网页,能抓到百度页面数据 具体步骤 模拟器…

POI-TL制作word

本文相当于笔记&#xff0c;主要根据官方文档Poi-tl Documentation和poi-tl的使用&#xff08;最全详解&#xff09;_JavaSupeMan的博客-CSDN博客文章进行学习&#xff08;上班够用&#xff09; Data AllArgsConstructor NoArgsConstructor ToString EqualsAndHashCode public …

1.创建项目(wpf视觉项目)

目录 前言本章环境创建项目启动项目可执行文件 前言 本项目主要开发为视觉应用&#xff0c;项目包含&#xff08;视觉编程halcon的应用&#xff0c;会引入handycontrol组件库&#xff0c;工具库Masuit.Tools.Net&#xff0c;数据库工具sqlSugar等应用&#xff09; 后续如果还有…

骨传导耳机对身体有损伤吗、骨传导耳机好不好

骨传导耳机是相对安全的&#xff0c;不会对身体造成损伤。它们的工作原理是通过将声音振动传递到颅骨&#xff0c;然后通过骨骼传导到内耳&#xff0c;而不是直接通过传统的扬声器将声音发送到耳朵。 这种声音的传导方式有一潜在的优势&#xff0c;接下来就和大家说说&#xff…

51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真+程序+原理图+报告+讲解视频)

51单片机简易时钟闹钟八位数码管显示仿真( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图元器件清单 5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 51单片机…