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

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.mzph.cn/news/44230.shtml

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

相关文章

Spring事件监听源码解析

spring事件监听机制离不开容器IOC特性提供的支持,比如容器会自动创建事件发布器,自动识别用户注册的监听器并进行管理,在特定的事件发布后会找到对应的事件监听器并对其监听方法进行回调。Spring帮助用户屏蔽了关于事件监听机制背后的很多细节…

php_mb_strlen指定扩展

1 中文在utf-字符集下占3个字节,所以计算出来长度为9。 2 可以引入php多字节字符的扩展,默认是没有的,需要自己配置这个函数 3 找到php.ini文件,去掉;extension mbstring的注释,接着重启apache服务 可以看到准确输出的中文的长度…

Vue elementui 实现表格selection的默认勾选,翻页记录勾选状态

需求&#xff1a;当弹出一个列表页数据&#xff0c;对其进行筛选选择。 列表更新&#xff0c;填充已选数据 主要使用toggleRowSelection 代码如下&#xff1a; <el-table v-loading"loading" :data"drugList" selection-change"handleSelection…

Python 的下一代 HTTP 客户端

迷途小书童 读完需要 9分钟 速读仅需 3 分钟 1 环境 windows 10 64bitpython 3.8httpx 0.23.0 2 简介 之前我们介绍过使用 requests ( https://xugaoxiang.com/2020/11/28/python-module-requests/ ) 来进行 http 操作&#xff0c;本篇介绍另一个功能非常类似的第三方库 httpx&…

7-2 求矩阵各行元素之和

分数 15 全屏浏览题目 切换布局 作者 C课程组 单位 浙江大学 本题要求编写程序&#xff0c;求一个给定的mn矩阵各行元素之和。 输入格式&#xff1a; 输入第一行给出两个正整数m和n&#xff08;1≤m,n≤6&#xff09;。随后m行&#xff0c;每行给出n个整数&#xff0c;其间…

【uniapp】中 微信小程序实现echarts图表组件的封装

插件地址&#xff1a;echarts-for-uniapp - DCloud 插件市场 图例&#xff1a; 一、uniapp 安装 npm i uniapp-echarts --save 二、文件夹操作 将 node_modules 下的 uniapp-echarts 文件夹复制到 components 文件夹下 当前不操作此步骤的话&#xff0c;运行 -> 运行到小…

JavaScript函数式编程【进阶】

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

prompt-engineering-note(面向开发者的ChatGPT提问工程学习笔记)

介绍&#xff1a; ChatGPT Prompt Engineering Learning Notesfor Developers (面向开发者的ChatGPT提问工程学习笔记) 课程简单介绍了语言模型的工作原理&#xff0c;提供了最佳的提示工程实践&#xff0c;并展示了如何将语言模型 API 应用于各种任务的应用程序中。 此外&am…

如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

遇到问题&#xff1a;用npm下载组件时出现Cannot find module ‘D&#xff1a;software\node_modules\npm\bin\npm-cli.js’ 问题&#xff0c;导致下载组件不能完成。 解决方法&#xff1a;下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题&#xff1…

关于docker-compose up -d在文件下无法运行的原因以及解决方法

一、确认文件下有docker-compose.yml文件 二、解决方法 检查 Docker 服务是否运行&#xff1a; 使用以下命令检查 Docker 服务是否正在运行&#xff1a; systemctl status docker 如果 Docker 未运行&#xff0c;可以使用以下命令启动它&#xff1a; systemctl start docker …

基于51单片机直流电机PWM调速液晶1602显示设计

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…

React快速入门

最近需要学到react&#xff0c;这里进行一个快速的入门&#xff0c;参考react官网 1.创建和嵌套组件 react的组件封装是个思想&#xff0c;我这里快速演示代码&#xff0c;自己本身也不太熟悉。 代码的路径是src底下的App.js function MyButton() {return (<button>I…

poste邮件服务器搭建

关于poste poste是一款开源邮件服务软件&#xff0c;可以很方便的搭建&#xff1a;SMTP IMAP POP3 反垃圾邮件 防病毒 Web 管理 Web 电子邮件&#xff0c;支持以下特性。 SPF、DKIM、DMARC、SRS 的原生实现&#xff0c;带有简单的向导用于检测木马、病毒、恶意软件的防…

密码学学习笔记(二十):DSA签名与X.509证书

数字签名 下图是一个制作以及使用数字签名过程的通用模型。 假设Bob发送一条消息给Alice&#xff0c;尽管消息并不重要&#xff0c;也不需要保密&#xff0c;但他想让Alice知道消息确实是他本人发的。出于这个目的&#xff0c;Bob利用一个安全的散列函数&#xff0c;比如SHA-…

【小梦C嘎嘎——启航篇】vector 以及日常使用的接口介绍

【小梦C嘎嘎——启航篇】vector 日常使用的接口介绍&#x1f60e; 前言&#x1f64c;vector 是什么&#xff1f;vector 比较常使用的接口 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神贯注的上吧&#xff01…

TypeScript入门指南

TypeScript学习总结内容目录&#xff1a; TypeScript概述 TypeScript特性。Javascript与TypeScript的区别 * TypeScript安装及其环境搭建TypeScript类型声明 * 单个类型声明&#xff0c;多个类型声明 * 任意类型声明 * 函数类型声明 * unknown类型…

micropython SSD1306/SSD1315驱动

目录 简介 代码 功能 显示ASCII字符 ​编辑 画任意直线 画横线 画竖线 画矩形 画椭圆 画立方体 画点阵图 翻转 反相 滚动 横向滚动 纵向滚动 奇葩滚动 简介 我重新写了一个驱动&#xff0c;增加了一些功能&#xff0c;由于我的硬件是128*64oled单色I2C&#xff0c;我只…

【数据结构】如何用队列实现栈?图文详解(LeetCode)

LeetCode链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 本文默认读者已经掌握栈与队列的基本知识 或者先看我的另一篇博客&#xff1a;【数据结构】栈与队列_字节连结的博客-CSDN博客 做题思路 由于我们使用的是C语言&#xff0c;不能直接使用队…

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

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

分布式ID

分布式ID 背景Snowflake(雪花算法)背景 分布式系统,用什么做为主键呢? uuid 太长(MySQL官方有明确的建议主键要尽量越短越好[4],36个字符长度的UUID不符合要求。)、 无规律(在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁变动,严重影响性能。)SnowflakeLeaf h…