读发布!设计与部署稳定的分布式系统(第2版)笔记13_断路器与舱壁

news2024/11/16 18:44:25

 

1. 电路保险丝

1.1. 保险丝通过自身率先失效,控制整体的系统失效方式

1.2. 当遇到电阻时,电流产生的热量与电流强度的平方和电阻的乘积(I^2R)成正比

1.3. 在房子着火前先行熔断,切断电路并避免火灾

1.4. 民用保险丝早已被淘汰

2. 断路器

2.1. 断路器可以避免房屋起火

2.1.1. 由于短路或其他原因导致电流过大时,断路器能允许一个子系统(电路)发生系统失效,从而保护整个系统(房屋)

2.2. 出现问题,停止调用

2.3. 断路器会阻止而不是重新执行操作

2.3.1. 即用一个组件将那些有风险的操作纳入其中,在系统异常时,该组件能防止调用

2.4. 断路器能有效防止集成点、层叠失效、系统容量失衡和响应缓慢等危及稳定性的反模式出现,它能与超时模式紧密协作,跟踪调用超时失败

2.4.1. 断路器是一种系统在流量压力之下实现自动功能降级的方法

2.5. 断路器会将系统失效记录下来

2.5.1. 一旦系统失效次数(或更复杂情况下的系统失效频率)超过阈值,断路器就会跳闸并“断开电路

2.6. 当断路器处于断开状态时,必须对调用访问做出处理

2.6.1. 最简单的方式是让调用立即返回失败结果

2.7. 经过超时设定的时间后,断路器决定尝试执行重复操作,因此进入半断开状态

2.7.1. 如果这次尝试失败,断路器将返回到断开状态,直到另一个超时时间结束

3. 断路器的状态

3.1. 开放、跟踪并报告断路器状态变化情况

3.2. 应该始终用日志记录断路器状态的变化,并开放断路器当前的状态,以供查询和监控

3.3. 断路器也有助于收集有关调用量和响应时间的信息

3.4. 一个简单累加次数的计数器并不能说明问题

3.4.1. 5个小时之内观察到的5次均匀分布的失败与最近30秒之内发生的5次失败,这两个现象之间存在巨大的差异

3.4.2. 相比失败的总数,我们通常对失败的密度更感兴趣

3.5. 在单个进程的范围内构建断路器

3.5.1. 一个进程只会令其内部的各个线程了解其断路器状态,但不会向多个其他进程共享其断路器状态

4. 舱壁

4.1. 船舶的舱壁是一些隔板,一旦将其密封起来,就能将船分隔成若干独立的水密隔舱

4.1.1. 船体即使被洞穿一次也不会沉没

4.2. 舱壁这种设计强调了控制损害范围的原则

4.3. 通过使用隔板对系统进行分区,就可以将系统失效控制在其中某个分区内,而不会令其摧毁整个系统

4.4. 确定一些自然边界,这些边界能够以具备技术可行性和经济收益性的方法对系统加以分隔,具体分隔边界可以根据调用方、功能或系统拓扑来划定

4.5. 当灾难发生时,舱壁模式将系统进行分隔,确保部分系统功能可用

4.6. 物理冗余是实现舱壁最常见的形式

4.6.1. 在一台服务器上运行两个应用程序实例,如果其中一个崩溃,那么另一个仍将继续运行

4.6.2. 物理机冗余设计比虚拟机冗余设计更加稳健

4.7. 当访问请求量到达系统最大容量时,就可以为系统的关键服务分配几个独立的服务器农场,预留其中的某些农场供关键应用程序使用,其他农场用于非关键应用程序

4.8. 在云环境中,应该在服务的不同分区中运行实例

4.8.1. 每个分区的规模都很大,彼此隔离性很强

4.8.2. 当使用函数即服务时,基本上每个函数调用都会在自己的隔间中运行

4.9. 当系统容量规模较小时,进程绑定就是通过舱壁进行分隔的一个例子

4.9.1. 这种做法能够减少进程在CPU内核之间迁移时对缓存的冲击,所以进程绑定通常被认为是一种性能调优手段

4.9.2. 如果该进程被绑定到一个CPU内核上,则它只能在该内核上使用所有可用的CPU处理周期

4.9.3. 可以对应用程序内的线程池进行分隔,对服务器的CPU进行分隔,或对集群中的服务器进行分隔

4.10. 即使在出现系统失效时,舱壁也能有效地维持整个或部分服务的正常运行

4.10.1. SOA内的每个服务都存在单点失效问题

4.10.2. 对于单一服务失效就能拖垮整个企业应用系统的SOA,这点特别有用

4.11. 当使用共享服务模型时,尤其要考虑使用舱壁模式

4.11.1. SOA或微服务架构的系统失效,可能会非常迅速地蔓延开来

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

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

相关文章

HOT22-相交链表

leetcode原题链接:相交链表 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结…

可视化低代码编程平台项目

后端Spring BootMySQL 前端Vue 同学通过这个项目练手,简历上写出来也蛮有亮点的。 技术栈比较全面, 项目可以提高公司的开发效率,特别是方便产品经理或者业务线人员直接可视化生成UI

java之路——带你了解springboot框架与其基本使用

文章目录 一、springboot的发展背景二、什么是springboot三、springboot的地位四、开发步骤 一、springboot的发展背景 要了解springboot,我们先要了解Spring Boot的发展背景。 Spring Boot的发展背景可以追溯到Spring Framework的诞生和演进过程。 首先&#xff…

Linux常用命令——free命令

在线Linux命令查询工具 free 显示内存的使用情况 补充说明 free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 语法 free(选项)选项 -b # 以Byte为单位显示内存使用情况; -k # 以KB为单位显示内存使用情况…

【Docker】Exited 139解决Window下docker启动oracle11g失败Exited 139

前几天,在docker安装了oracle11,安装非常简单,但是启动的时候启动不起来,且没有任何log日志输出! docker 拉取安装oracle11 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g安装完成后启动oracle …

Nature Biomedical Engineering --利用白细胞“吃掉”实体瘤

癌症仍然是美国死亡率最高的疾病之一,每年导致的死亡人数超过60万人。形成实体肿瘤的癌症,如乳房、大脑或皮肤肿瘤,尤其难以治疗。外科手术通常是对抗实体肿瘤的第一道防线。但是,手术可能无法完全清除癌细胞,残留的细…

Linux运维监控学习笔记6

触发器(重点) 触发器(trigger):定义监控项到达一个临界值(阈值)或者满足一个条件,就会发现状态变化(OK变为Problem,Problem变为OK)。 监控agent1…

FFmpeg工具使用(一)

转码 指令 ffmpeg -i input.mp4 output.avi 这个指令是使用FFmpeg工具对视频进行格式转换的命令。 其中,"-i input.mp4"表示指定输入文件为"input.mp4",而"output.avi"则是指定输出文件名,并将视频转码成A…

【无标题】TI AM64x工业核心板规格书(双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F,主频1GHz)

1 核心板简介 创龙科技SOM-TL64x是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 单/四核Cortex-R5F 单核Cortex-M4F设计的多核工业级核心板,通过工业级B2B连接器引出5x TSN Ethernet、9x UART、2x CAN-FD、GPMC、PCIe/USB 3.1等接口。核心板经过专业的PCB Layo…

ModaHub AI模型开源社区——向量数据库Milvus存储操作教程

目录 存储操作 数据插入 数据落盘 定时触发 客户端触发 缓冲区达到上限触发 数据合并 建立索引 删除 删除集合 删除分区 删除实体 数据段整理 数据读取 常见问题 存储操作 阅读本文前,请先阅读 存储相关概念。 数据插入 客户端通过调用 insert 接…

读写锁原理解读

目录 回顾什么是读写锁 t1 w.lock,t2 r.lock t3 r.lock,t4 w.lock t1 w.unlock t2 r.unlock,t3 r.unlock 写锁上锁流程 写锁释放流程 读锁上锁流程 读锁释放流程 回顾什么是读写锁 读写锁是一对互斥锁,分为读锁和写锁。…

UG\NX二次开发 显示临时标记 UF_DISP_display_temporary_point

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 显示临时标记 UF_DISP_display_temporary_point,最后一个参数控制显示的类型,可通过下表1表2查询 表1: 表2: 0UF_DISP_NO_MARKER

jenkins构建异常Type org.springframework.boot.maven.RepackageMojo not present

目录 问题描述解决过程 问题描述 我公司dev环境使用的是spug构建,当时构建并没有出现这种问题,而线上使用的是jenkins部署到华为云上,构建线上的时候却出现了这个问题。 java.lang.TypeNotPresentException: Type org.springframework.boot…

leetcode72. 编辑距离(动态规划-java)

编辑距离 leetcode72. 编辑距离题目描述解题思路代码演示 动态规划代码演示 动态规划专题 leetcode72. 编辑距离 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/edit-distance 题目描述 给你两个单词 word1 和 word2&am…

关于DMS批量导入的注意事项

前言 当你注意了列命和数据库对应关系,批量后报错,常见的是无列名都好找问题,说一条不好找的 SQL解析失败:解析文件失败::读取字段定义异常,字段定义存在非法的空字段,请检查提交的Excel文件首行中的字段定义1、列名…

springboot本机启动elasticjob抛出异常HostException(ip is null)

1.使用的elasticjob版本为3.0.1 2.本机的IPV4在校验isReachable 返回false&#xff08;可能是使用无线网&#xff0c;导致ip验证问题&#xff09; 3.最后引入Groovy解决 引入包 <dependency><groupId>org.codehaus.groovy</groupId><artifactId>gr…

【CSS3系列】第九章 · 响应式布局和BFC

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

OpenCV快速生成带边缘的棋盘格

import numpy as np import cv2 as cv# 生成棋盘格 def generateChessBoard(xSize32,ySize32,w6,h6)::param xSize: 棋盘尺寸:param ySize: 棋盘尺寸:param w: 横向角点个数:param h: 纵向角点个数:return:w,hw1,h1boardnp.zeros((xSize*(w),ySize*(h),3),np.uint8)board.fill(…

【网页复习】4道大题

&#x1f38a;专栏【 前端易错合集】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;实现如图的导航栏⭐代码&#x1f384;注…

多元分类预测 | Matlab萤火虫算法(FA)优化极限学习机(ELM)的分类预测,多特征输入模型。FA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab萤火虫算法(FA)优化极限学习机(ELM)的分类预测,多特征输入模型。FA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…