读发布!设计与部署稳定的分布式系统(第2版)笔记33_混沌工程

news2024/11/13 22:41:27

1. 康威定律

1.1. 梅尔文·康威

1.1.1. Melvin Conway

1.1.2. 1968年

1.1.3. 在设计系统时,组织受制于其自身的沟通结构,这使得它设计的系统结构与沟通结构相一致。

1.1.3.1. 社会学现象

1.2. 要在系统内部或系统之间构建接口,两个人必须以某种方式沟通有关该接口的规范

1.2.1. 没有沟通,就无法建立接口

1.3. 如果系统不是用稳定性模式构建的,那么它可能采用了典型的紧耦合架构

1.3.1. 发生失效的总体概率,是其中任何一个组件发生失效的概率之和

1.4. 应用程序的某些组件是针对QA环境的网络拓扑结构进行设计的,而这与生产环境不匹配

2. 负载测试

2.1. 并发用户是无法衡量的

2.2. 不存在长久的用户连接,只存在随着请求的到达而形成的一系列离散的访问

2.3. 对于不再点击的用户和尚未点击的用户,服务器无法区分

2.3.1. 会在用户最后一次点击之后的几分钟内,保持活动状态

2.3.1.1. 意味着会话的持续时间绝对比用户的持续时间要长

2.3.2. 如果对会话进行计数,那么就会高估用户的数量

2.4. 服务器会使用超时

3. 会话

3.1. 会话是每台应用程序服务器的致命弱点

3.2. 每个会话都会消耗资源,主要是消耗内存

3.3. 启用会话复制功能后(该网站确实启用了),每个会话都会被序列化,并在每个页面请求后传输到会话备份服务器上

3.4. 意味着会话消耗了内存、CPU和网络带宽

4. 测试

4.1. 所有的测试脚本都是遵守规则的

4.2. 按照应用程序的使用方式对其进行了测试

4.3. 应用程序开发人员没有采取某种能够阻止恶劣情况蔓延的防护措施

5. 混沌工程

5.1. 混沌工程源于悖论,稳定的系统会变得脆弱

5.2. 混沌并不总是涉及软件中的故障,有时也出现在组织成员身上

5.2.1. 组织中的每一个人都是普通人,难免会犯错

5.2.2. 高可靠性组织也使用演习和模拟的方法,在人的方面寻找相同的系统性弱点

5.3. 基本的做法

5.3.1. 规划一段时间

5.3.2. 把一些人指定为在此期间“无行为能力”

5.3.3. 看业务是否可以继续照常开展

5.3.4. 僵尸来袭模拟

5.3.4.1. 能立即发现一些关键的过程在人们离开后无法完成

5.3.4.2. 也许存在一个需要特定角色的系统,而这个角色只有一个人来担任,或者另一个人掌握着关于如何配置虚拟交换机的关键信息

5.3.4.3. 当知道在无人参与的情况下,公司能让业务正常运作一整天时,可以创造一个有20%的“僵尸”存在的异常情况,增加系统的压力

5.4. 在分布式系统上进行实验的学科,旨在建立系统能够应对生产环境中的动荡状态的信心

5.5. 用来应对分布式系统,而且通常是应对大规模的系统

5.6. 由于规模问题,我们既无法在非生产环境中模拟上述问题,也不能通过单独测试组件来获得信心

5.7. 强调要从整个系统的视角看问题,它需要应对在单个组件中无法观察到的那些新冒出的属性

5.8. 系统

5.8.1. 由人员、技术和过程所组成的整个集合,而不仅仅是信息系统

5.9. 通过优化系统获得可用性,还要获得对来自恶劣和动荡的世界的干扰的容忍性,而不是在理想化的环境中追寻高吞吐量

5.10. “大众微型面包车”悖论

5.10.1. 你能学会修复经常坏的东西,但无法学会如何修复那些很少坏的东西

5.10.2. 意味着当很少坏的东西坏掉时,情况就会更加可怕

5.11. 在使组件更稳健与使整个系统更稳健这两者之间

5.11.1. Netflix公司并不是做“二选一”,而是选择了“全都要”

5.11.1.1. 运用稳定性模式,让单个实例更容易存活下来

5.11.1.2. 让这些失效发生得更频繁,使它们变成一种常态

5.11.1.2.1. 对很痛苦的事,要更频繁地做。

5.12. 集群服务应该不受实例失效的影响

5.13. 关掉实例是最基本和最直接的混沌注入,绝对能发现系统中的弱点

6. 调节器

6.1. 调节器的任务是消除变化,但这种变化正是系统工作质量信息的最终来源

6.2. 调节器做得越好,能够获得的有关如何改进系统的信息就越少

6.2.1. 在IT人员休假之前,你不知道对他们有多依赖

7. 爆炸半径

7.1. 指不良体验的严重程度,这涉及受影响的顾客数量及顾客体验被破坏的程度

 

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

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

相关文章

基于 Vercel TiDB Serverless 的 chatbot

作者: shiyuhang0 原文来源: https://tidb.net/blog/7b5fcdc9 # 前言 TiDB Serverless 去年就有和 Vercel 的集成了,同时还有一个 bookstore template 方便大家体验。但个人感觉 bookstore 不够炫酷,借 2023 TiDB hackthon 的…

使用Python从Ditto数据库中读取历史图片

在本文中,我们将探讨如何使用Python编程语言从Ditto剪贴板管理工具的数据库中读取历史中您复制粘贴过的图片。我们将讲解编程的过程,并提供示例代码来帮助您理解如何实现这个功能。 C:\pythoncode\blog\showdbimage.py Ditto数据库 Ditto使用SQLite数…

车载APP软件外包开发流程

车载APP的开发流程涉及多个阶段,从概念到发布都需要仔细的规划和执行。以下是一个一般性的车载APP开发流程概述,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.需求分析和规划&#xff…

VMWare Workstation 17 Pro 网络设置 桥接模式 网络地址转换(NAT)模式 仅主机模式

文章目录 网络模式配网要求CentOSDHCP虚拟网络桥接模式默认配置测试手动配置测试 网络地址转发模式 (NAT)还原配置虚拟网络配置默认配置测试手动配置测试 仅主机模式 网络模式 桥接模式: 主机与虚拟机对等, 虚拟机注册到主机所在的局域网, 会占用该网络的IP该局域网内的所有机…

【COMP282 LEC3 LEC4 LEC5】

LEC 3 Overloading 超载 1. Two functions can have the same name if they have different parameters 2. The compiler will use the one whose parameters match the ones you pass in Performing Addition “” 重载一个operator ,这个operator函数被定义…

[线程/C]基础

文章目录 1. 线程介绍2. 创建线程2.1 线程函数2.2 创建线程 3. 线程退出4. 线程回收4.1 线程函数4.2 回收子线程数据4.2.1 使用子线程栈4.2.2 使用全局变量4.2.3 使用主线程栈 5. 线程分离6. 其他线程函数6.1 线程取消6.2 线程ID的比较 1. 线程介绍 线程是轻量级的进程&#x…

C语言入门教程,C语言学习教程(非常详细)第二章 c语言初探

第一个C语言程序 我们有两种方式从计算机获得信息:一是看屏幕上的文字、图片、视频等,二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦,我们先来看看如何在屏幕上显示一些文字吧。 在屏幕上显示文字非常简单,只需要一个…

npm 不是内部或外部命令,也不是可运行的程序或批处理文件。

遇到问题: 1.遇到问题:npm 不是内部或外部命令,也不是可运行的程序或批处理文件。 2.遇到问题:或者使用npm安装插件时会出现 XXX\node\node_modules\npm不可用 情况 如下图: 分析问题: nodejs在nodejs官网…

Python内置库介绍——random库

Content 0. 前言1. random.random()2. random.randint(a, b)3. random.choice(seq)4. random.shuffle(seq)5. random.sample(population, k)6. random.uniform(a, b)7. random.seed(x)8. 使用实例:随机生成用户初始账号和初始密码 0. 前言 操作系统:Win…

Leecode找出字符串中第一个匹配项的下标 即实现strSTR()函数

目录 简单介绍该函数的作用 在我们去用关键词查找微信或者qq聊天记录的时候,我们总不能一句一句去找吧。我们需要用到的功能底层大概是此博客所讲的这个函数熬。 一.算法需要传入的参数和返回类型 需要传入的就是关键词和所有的文本,返回的是当前关键词…

IDEA源码下载失败问题

1.IDEA下载源码报 java.lang.RuntimeException: Cannot reconnect java.lang.RuntimeException: Cannot reconnect 异常通常表示无法重新连接到资源或服务。这种情况可能出现在尝试重新连接到数据库、网络套接字或任何需要连接的资源时。 以下是解决此异常的几种可能方法&…

经典LeetCode在线OJ习题

目录 习题一:移除元素 (一)、题目 (二)、示例 (三)、解题思路 思路一: 思路一源代码: 源代码解释: 思路二:(最标准最适用&#…

利用metasploit生成反弹shell程序,实现远程控制

1. 关于metasploit Metasploit是一款开源的渗透测试框架,由Rapid7公司开发和维护。它提供了一套强大的工具和资源,用于评估和测试计算机系统的安全性。Metasploit的目标是帮助安全专业人员发现和利用系统中的漏洞,以便改进系统的安全性。 Met…

Mybatis的SqlSource SqlNode BoundSql

学习链接 MyBatis SqlSource解析 【Mybatis】Mybatis源码之SqlSource#getBoundSql获取预编译SQL Mybatis中SqlSource解析流程详解 Mybatis TypeHandler解析 图解 Mybatis的SqlSource&SqlNode - processon DynamicSqlSource public class DynamicSqlSource implement…

【leetcode 力扣刷题】哈希表初尝试

哈希表 刷题初尝试 哈希表基础知识242. 有效的字母异位词383. 赎金信49. 字母异位词分组438. 找到字符串中所有字母异位词 哈希表基础知识 哈希表是一种数据结构,也叫散列表。哈希表中存储的是键值对,即(key,value),根据key直接查…

7-1 选择法排序

分数 20 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求将给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出从大到小有序…

openai多模态大模型:clip详解及使用

引言 CLIP全称Constrastive Language-Image Pre-training,是OpenAI推出的采用对比学习的文本-图像预训练模型。CLIP惊艳之处在于架构非常简洁且效果好到难以置信,在zero-shot文本-图像检索,zero-shot图像分类,文本→图像生成任务…

JAVA基础知识(五)——面向对象(中)

面向对象(中) 一、面向对象特征之一:封装与隐藏1.1 简介1.2 封装性的体现1.3 四种访问权限修饰符 二、类的成员之三:构造器2.1 构造器的特征2.2 构造器的作用2.3 语法格式2.4 构造器分类2.5 构造器重载2.6 属性赋值过程 三、扩展知…

Python的六种参数?

很多人说,Python的参数类型有四种、五种,我个人认为归纳起来是六种参数,分别为:位置参数(Positional Arguments)、默认参数(Default Arguments)、关键字参数(Keyword Arg…

[C++11]

文章目录 1. 自动类型推导1.1 auto1.1.1 推导规则1.1.2 auto的限制1.1.3 auto的应用1.1.4 范围for 1.2 decltype1.2.1 推导规则1.2.2 decltype的应用 1.3 返回类型后置 2.可调用对象包装器、绑定器2.1 可调用对象包装器2.1.1 基本用法2.1.2 作为回调函数使用 2.2 绑定器 3. usi…