读发布!设计与部署稳定的分布式系统(第2版)笔记05_层叠

news2024/10/6 1:47:12

1. 水平扩展

1.1. 增加服务器来增加容量

1.1.1. 这些服务器集群被称为“农场”

1.2. 负载均衡的服务器集群

1.2.1. 不易遭遇单点系统失效

1.2.2. 高负载比低负载更易导致竞态条件的并发缺陷

1.3. 如果双节点集群出现失效,那么幸存服务器的工作负载将增加一倍

1.4. 承担其原始负载(占总负载的一半),也要承担失效节点的负载(另一半)

2. 垂直扩展

2.1. 构建越来越大的服务器

2.1.1. 为主机添加CPU核数、内存和存储空间

3. 部分交互式工作负载通过垂直扩展实现,大多数交互式工作负载则依赖水平扩展

4. 同层连累反应

4.1. 由于一台服务器停机,其他服务器必须负担其工作负载,这样就会发生同层连累反应

4.2. 如果应用程序存在缺陷(通常是资源泄漏或与负载相关的崩溃),就会发生

4.2.1. 如果应用程序发生内存泄漏,便会发生同层连累反应

4.2.2. 同构层的每台服务器都会有同样的缺陷

4.2.3. 当一台服务器耗尽内存并停机时,其他服务器不得不负担它的工作负载,但所增加的流量会加快内存泄漏

4.3. 寻找难以捕捉的时序缺陷

4.3.1. 流量状况也可能引发难以捕捉的竞态条件

4.3.2. 同构层的每台服务器都会有同样的缺陷

4.3.3. 如果一台服务器陷入死锁,其他服务器所增加的负载也极易使它们陷入死锁

4.4. 修复潜在的软件缺陷成了避免同层连累反应的唯一方法

4.5. 某一层上同层连累反应的系统失效容易导致其调用层上的层叠失效

4.6. 舱壁模式

4.6.1. 分隔服务器,可以防止同层连累反应毁掉整个系统服务

4.7. 将一层细分成多个池

4.7.1. 将单个同层连累反应分成速率不同的同层连累反应

4.8. 采用自动扩展

4.8.1. 将关闭未通过健康状况检查的服务器实例,并启动新的实例

4.8.2. 只要自动扩展机制的响应速度比同层连累反应的蔓延速度快,那么系统服务就依然可用

5. 层叠失效

5.1. 有一个将系统失效从一个层级传到另一个层级的机制

5.2. 当服务提供方的系统失效状态触发调用层的不良反应时,系统失效就会“跳过层级之间的间隙”,蔓延开来

5.3. 推测性重试也会让系统失效“跳过层级之间的间隙”而蔓延

5.4. 通常源于枯竭的资源池

5.4.1. 资源池枯竭的原因往往是较低层级所发生的系统失效

5.5. 下层提供的细节不足以区分是瞬态错误还是更严重的错误

5.5.1. 一旦下层开始出现一些真正的问题

5.5.2. 调用层就开始越来越频繁地访问下层

5.5.3. 下层越难以响应,调用层访问越频繁

5.5.4. 调用层会倾尽全部CPU资源调用下层,并把调用失败记录到日志中

5.6. 没有设置超时时间的集成点,必定会导致层叠失效

5.6.1. 集成点是裂纹的头号来源

5.6.2. 层叠失效是裂纹的头号加速器

5.7. 防止发生层叠失效,是保障系统韧性的关键

5.7.1. 断路器和超时是克服层叠失效最有效的模式

5.7.2. 断路器模式通过避免向已经陷入困境的集成点发出调用请求,进而保护系统

5.7.3. 使用超时模式,可以确保对有问题的集成点的调用能及时返回

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

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

相关文章

SpringBoot集成企业微信自建应用消息

目录 参考文档概述发送限制成员收不到应用推送消息的原因创建应用五、发送消息1、文本 text2、卡片文本3、图文news4、markdown 参考文档 官方文档 企业微信群机器人应用 概述 消息群发,是企业微信提供的用于企业向成员推送企业通知的工具,支持管理端…

AN13743-移植-无eSE

PN553/PN557 to PN7160 migration guidelines 1目的 本文件提供了从PN553/PN557 NFC控制器迁移到PN7160 NFC控制器的指南。它旨在从硬件和软件的角度描述PN7160 NFC控制器与PN553/PN557 NFC控制器的主要区别和新功能。软件部分逐步介绍如何适应Android开源项目 为PN553/PN55…

React学习笔记(二)组件详解

一、组件的概念: 当你开始学习 React 的时候,你会了解到 React 组件是 React 应用程序的基本构建块。组件是一个隔离的、可重复使用的代码块,由 HTML 元素、其他组件或自定义的 UI 元素组成,组件也就是react的核心思想&#xff0c…

Visual Studio Code 插件安装

目录 1、在线安装 1.1 单个插件的安装 1.2 根据配置文件一次性安装多个插件 1.3 同步配置的方式 1.3.1 第一种方式使用VSCode自带的同步功能。 1.3.2 第二种方式,首先需要先安装插件 Settings Sync 2、离线安装 2.1 去官方下载离线安装包进行安装 2.2 直接…

DolphinScheduler任务调度工具

任务调度:系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程 分布式调度: 分布性:每个部分可以独立部署,服务之间通过网络通信伸缩性:每个部分可以集群部署,动态伸缩扩容高可用 jd…

IntelliJ IDEA 2022.3.1 (Community Edition)代码注释风格设置

Setting -> Editor -> Code Style -> Java -> Comment Code

Unity 之 最新Ads原生广告接入流程详解和工具类分享

Unity 之 Ads接入流程详解 一,注册 Unity Ads 广告 SDK二,下载 Unity Ads 广告 SDK三,配置 Unity Ads 广告 SDK3.1 广告位展示流程3.2 代码初始化 四,集成 Unity Ads 广告 SDK4.1 相关介绍4.2 代码分享 五,测试 Unity …

C语言变量学习2

前文已经学习了C语言变量; C语言变量_c语言变量块_bcbobo21cn的博客-CSDN博客 继续再学习;VC6新建一个单文档工程; void CVtestView::OnDraw(CDC* pDC) {CVtestDoc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for na…

【C语言复习】第三篇、Gitee码云的创建和使用

目录 第一部分、Gitee码云的用处 1、为什么要使用Gitee? 2、我参考的视频 第二部分、软件安装流程 1、下载Git for windows软件和TortoiseGit软件 2、Git for windows软件的安装流程 3、TortoiseGit软件软件的安装流程 第三部分、Gitee如何创建仓库&#xf…

jquery和jquery ui有什么区别

jquery和jquery ui有什么区别 jquery和jquery ui有什么区别 jQuery UI 与 jquery 的主要区别是:(1) jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。(2) jQuery UI则是在jQuery的基础上,利用jQuery的扩展性&…

企业搭建小型直播间、中型直播间、大型直播间的介绍

常用的直播间搭建大致分为实景和绿幕两种类型。实景区即公司具体场景,如会客厅、LOGO墙、海报展板以及纯白背景等,根据企业直播主题而调整;绿幕区则是通过搭建绿幕,满足企业直播过程中需要进行抠像,设置沉浸式背景的需…

国产麒麟服务器等保二级 配置规范(一)

麒麟linux的加固 1.检查设备密码复杂度策略 配置文件 vi /etc/pam.d/system-auth password requisite pam_cracklib.so ucredit-1 lcredit-1 dcredit-1 minlen6 auth required pam_tally.so deny5 unlock_time600 no_lock_time account required pam_tally.sopassword suffi…

大数据Doris(四十五):Routine Load注意事项

文章目录 Routine Load注意事项 Routine Load注意事项 1、查看作业状态的具体命令和示例可以通过 HELP SHOW ROUTINE LOAD; 命令查看。 2、用户可以通过 STOP/PAUSE/RESUME 三个命令来控制作业的停止,暂停和重启。可以通过 HELP STOP ROUTINE LOAD; HELP PAUSE ROUTINE LOA…

调用万维易源API实现证件照换装

目录 1. 作者介绍2. 万维易源API简介2.1 易源数据2.2 易源API管理2.3 调用参数简介 3. 万维易源API调用过程3.1 获取ID和代码3.2 代码实现3.3 完整代码 参考(可供参考的链接和引用文献) 1. 作者介绍 吴宇,男,西安工程大学电子信息…

LVS keepalived 集群

LVS keepalived 集群 LVS keepalived 集群一、Keepalived及其工作原理1.Keepalived体系主要模块及其作用2.健康检查的方式(探针) 二、LVSKeepalived 高可用群集部署1.LVS部署一:配置负载调度器(主、备相同)二&#xff…

FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库)

文章目录 前言系统配置任务创建动态任务创建删除实践静态任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程,涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置(在FreeRTOSconfig.h) “INCLUDE…

100天精通Python(可视化篇)——第92天:Pyecharts绘制炫酷柱状图、条形图实战大全

文章目录 专栏导读1. 基础柱状图2. 旋转x轴标签3. 旋转坐标轴4. 添加坐标轴名称5. 添加标记点6. 添加标注线7. 添加数据8. 添加自定义背景图9. 堆叠柱状图10. 柱状图与折线图组合11. 三维柱状图12. 水平滑动、鼠标滚轮缩放柱状图 专栏导读 🔥🔥本文已收…

ConcurrentHashMap源码

HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。 介绍 ConcurrentHashMap的底层原理和HashMap是比较相…

网页之http

目录 一、网页概念: 1.纯文本格式文件 2.编写语言-----html---超文本标记语言 3.浏览器相当于翻译器,检查是否为html文件,是的话就翻译,否则就报错。 二、域名 三、DNS解析 1.分布式域名解析-----层次性:迭代处…

谁是远程界的天花板?2023年5款最常用的远程软件横测:ToDesk、向日葵、TeamViewer、Splashtop、AnyDesk

前言 一个优秀的远控软件,追求的是可信赖的安全感,连接的流畅度、画质的清晰度、操作的简单化、毫秒级的无感延迟以及全方位的功能。另外,远控软件还应拥有独立的创新技术,具备竞争对手无法超越的市场前瞻性,与世界保…