读发布!设计与部署稳定的分布式系统(第2版)笔记23_互联层之DNS

news2024/11/15 8:06:54

 

1. 互连层是可以真正构建高可用性的地方

1.1. 流量管理

1.2. 负载均衡

1.3. 服务发现

2. 不同规模的解决方案

2.1. 在小公司中

2.1.1. 只有少数开发人员的小企业可以直接使用DNS条目

2.1.2. 生成变更的开发人员较少,变更频度变低

2.1.3. 可能根本就没有独立的运维团队

2.1.4. 所有的开发人员都一起工作、一起吃饭

2.2. 在大型公司中

2.2.1. 服务发现

2.2.1.1. 可以处理服务的频繁变更,同时也能处理这些服务中实例位置的频繁变更

2.2.1.2. 本身就是另一个服务,所以它能增大运维团队的影响力

2.2.1.3. 在一家大公司,每个开发人员都不会知道其他开发人员做出的变更

2.2.1.3.1. 让服务消费方随时跟进其服务提供方IP地址的变更是不现实的
2.2.1.3.2. 在高度虚拟化、云或容器基础设施中尤其如此

3. 使用DNS

3.1. 当服务不经常发生变动时适合使用DNS

3.2. 对小型团队来说,直接使用DNS可能是最佳选择,特别是在基础设施变动不频繁的时候,这样的基础设施包括专用的物理机和长期使用的虚拟机

3.3. IP地址会比较稳定,DNS就有了用武之地

3.4. 当客户端去调用服务时,该服务提供方可能只有一个DNS名字,这意味着提供方负责负载均衡和高可用性

3.5. 提供方有多个DNS名字,那么负载均衡和高可用性就需要由调用方负责了

3.6. 服务发现是人际交互的过程,之后在配置中设置DNS名字

3.7. 团队需要找到服务所有者,并努力从他们那获取某个或全部DNS名字

3.8. 当使用DNS时,要通过一个逻辑服务名字(而不是物理主机名)来调用

3.9. 只须在一个地方(域名服务器的数据库)而不是每个消费应用程序中修改别名

4. 基于DNS的负载均衡

4.1. DNS轮询负载均衡调度是最早的技术之一

4.1.1. 提供了一种低成本的负载均衡方式

4.1.2. 轮询机制分配IP地址并不能保证负载被均匀分配,均匀分配仅在初始连接时发生

4.1.3. 当其中一个实例变得繁忙时,DNS服务器也是无法知晓的,它只会一直把某个特定连接分配到这个“步履蹒跚”的实例

4.1.4. 该技术在OSI模型的应用层(第7层)上执行

4.1.5. 在地址解析期间(而不是服务请求期间)有效

4.2. 前端IP地址对客户端可见且可访问

4.3. 客户端掌握了过多的控制权,这是DNS轮询的一个缺陷

4.4. 当调用方是长期运行的企业系统时,也不适用DNS轮询负载均衡

5. 基于DNS的GSLB

5.1. global server load balancing 全局服务器负载均衡

5.2. 普通DNS服务器只包含域名和地址的静态数据库

5.3. GSLB服务器还能够追踪实例池的健康状况和响应能力,只对外提供那些通过了健康状况检查的底层地址

5.4. 不同的GSLB服务器会为同一请求返回不同的IP地址

5.4.1. 可以在多个本地池间实现负载均衡

5.4.2. 为客户端提供最近的访问点

5.4.2.1. 会优先把流量发给最近的实例池

5.5. 全局流量管理器可以为选择路由搜集大量的相关信息

5.5.1. 当全局流量管理器与本地负载均衡器结合使用时,DNS的优势能有效发挥

5.6. 会使用加权分布和一系列负载均衡算法,用于灾难恢复策略,甚至可以用作滚动部署过程

6. DNS的可用性

6.1. DNS的价值在于其服务器可以满足地址解析的请求

6.2. DNS属于基础设施中不可见的那部分

6.3. DNS服务的中断会导致重大的事故

6.4. 不要将DNS服务器托管在与生产环境相同的基础设施上

6.5. 要确保有两个或两个以上的DNS服务提供方,且其服务器位于不同的地点

6.6. 公共系统状态监控页面需要使用不同的DNS服务提供方

6.7. 要确保在系统失效时至少有一台DNS服务器可以工作

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

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

相关文章

高阶C语言|指针的进阶

指针的主题,在指针初阶阶段,我们知道了指针的概念: 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2.指针的大小是固定4/8个字节(32为平台/64位平台)。 3.指针是有类型&#xff0c…

java+springboot基于云的学习笔记系统设计与开发 _44va6

学习笔记系统按照权限的类型进行划分,分为管理员和用户共两个模块。系统实现登录、个人信息修改,还可以对个人中心,用户管理,笔记本管理,笔记分享管理,分享类型管理,学习资料管理,购…

Makefile:10分钟带你了解makefile

1、Makefile是什么 在Linux系统中,Makefile是一个脚本文件,通常名为Makefile或者makefile,它使得程序员能够快速便捷地完成调用程序、编译代码、定位故障等工作。 Makefile是一个用于自动化构建和编译程序的脚本文件。它包含了程序的所有源…

Ubuntu下配置Redis哨兵集群

目录 准备实例和配置 启动哨兵集群 测试配置 搭建一个三节点形成的Sentinel集群,来监管Redis主从集群。 三个sentinel哨兵实例信息如下: 节点IPPORTs1192.168.22.13527001s2192.168.22.13527002s3192.168.22.13527003 准备实例和配置 要在同一台虚…

01. Docker基础环境构建

目录 1、前言 2、关于Docker 2.1、几个术语 2.2、Docker容器化的价值 3、搭建基础环境 3.1、安装VMware 3.2、安装Doker 3.3、启动 3.4、验证Docker环境 4、小结 1、前言 在这里我们将学习关于Docker的一些技能知识,那么首先我们应该怼Docker有一个基础的…

服务器离线部署docker,镜像迁移,mysql主从搭建等服务

公司项目要上线项目,买了两台云服务器,需进行环境部署(1台接入公网,一台只能局域网访问),主要部署以下内容 1、服务器之间配置ssh免密 2、离线docker部署 3、docker镜像迁移 4、redis服务 5、minio文件…

Idea配置Maven优先从本地仓库获取依赖

idea配置maven依赖优先从指定本地仓库获取 在设置中搜索 Runner ,在VM Option中设置参数-DarchetypeCataloginternal <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

沐风老师MaxScript快速入门教程

Maxscript是将自定义3dMax应用的更强大的方法之一。结合内置的侦听器和编辑器&#xff0c;我们在运行时操作和测试代码&#xff0c;使其成为用户试验和探索改进软件体验的强大选项。通过Maxscript&#xff0c;我们几乎可以操作软件中的每一个对象&#xff0c;包括但不限于&…

【C++】-vector的模拟实现(以及memcpy如何使用)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Spring-MVC的注解扫描-spring17

包括我们业务层和Dao层&#xff0c;去帮助别人去扫 只扫controller下的注解

00_YS_硬件电路图

1.主控制芯片的型号 STM32F407IGT6&#xff0c;LQFP-176&#xff0c;1MB 内部 FLASH&#xff0c;192KB RAM USART3 RS485 通信&#xff0c;芯片使用 SP3072EEN; UART5 RS232 通信&#xff0c; CAN 1 路&#xff0c;型号 SN65HVD230 USB 支持 …

Python应用实例(二)数据可视化(三)

数据可视化&#xff08;三&#xff09; 1.使用Plotly模拟掷骰子1.1 安装Plotly1.2 创建Die类1.3 掷骰子1.4 分析结果1.5 绘制直方图1.6 同时掷两个骰子1.7 同时掷两个面数不同的骰子 1.使用Plotly模拟掷骰子 本节将使用Python包Plotly来生成交互式图表。需要创建在浏览器中显示…

代码随想录算法训练营第十九天 | 动态规划系列5,6,7,8

动态规划系列5,6,7,8 377 组合总和 Ⅳ未看解答自己编写的青春版重点代码随想录的代码我的代码(当天晚上理解后自己编写) 爬楼梯进阶322 零钱兑换未看解答自己编写的青春版写完这道题后的感受重点代码随想录的代码动态规划&#xff0c;也要时刻想着剪枝操作。我的代码(当天晚上理…

异常执行结果随笔

前段时间有朋友问我异常执行顺序问题&#xff0c;这里简单记录下哈。 伪代码描述&#xff0c;当j0和j1&#xff0c;输出结果分别是什么&#xff1f; int i 0; int j 0或1; try {j i / j&#xff1b;System.out.println(i);return i; } catch (Exception e) {System.out.pri…

win10如何使用wsl配置Ubuntu并使用vscode连接

文章目录 0. 前置资料1. 下载wsl2. 下载Ubuntu3. vscode连接wsl 0. 前置资料 wsl为适用于 Linux 的 Windows 子系统&#xff0c;可参考以下微软的官方文档 https://learn.microsoft.com/zh-cn/windows/wsl/ 1. 下载wsl 点击屏幕左下角的放大镜&#xff0c;直接在输入框键入P…

第 354 场LeetCode周赛

A 特殊元素平方和 模拟 class Solution { public:int sumOfSquares(vector<int> &nums) {int res 0;int n nums.size();for (int i 0; i < n; i)if (n % (i 1) 0)res nums[i] * nums[i];return res;} };B 数组的最大美丽值 差分数组: n u m s [ i ] nums[…

cmake处理参数时的一些问题说明

cmake处理参数时的一些问题说明 函数传参空格和分号的坑函数转发的坑demo 函数传参遇到不平衡方括号的坑 函数传参空格和分号的坑 我们在处理函数和宏的时候不过不小心会遇到很多坑例如: someCommand(a b c) someCommand(a b c)因为cmake中使用空格或者分号分隔符所以上面代…

Django实现接口自动化平台(十一)项目模块Projects序列化器及视图【持续更新中】

相关文章&#xff1a; Django实现接口自动化平台&#xff08;十&#xff09;自定义action names【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue httprunner …

LangChain 本地化方案 - 使用 ChatYuan-large-v2 作为 LLM 大语言模型

一、ChatYuan-large-v2 模型 ChatYuan-large-v2是一个开源的支持中英双语的功能型对话语言大模型&#xff0c;与其他 LLM 不同的是模型十分轻量化&#xff0c;并且在轻量化的同时效果相对还不错&#xff0c;仅仅通过0.7B参数量就可以实现10B模型的基础效果&#xff0c;正是其如…

自动化测试-selenium环境搭建

文章目录 1. 什么是自动化2. 自动化测试分类3. selenium的环境搭建4. 测试selenium 1. 什么是自动化 自动化是指使用软件工具、脚本或程序来执行一系列的任务、操作或流程&#xff0c;而无需人工干预或指导。 自动化测试&#xff1a;使用自动化工具和脚本来执行测试用例&#x…