黑天鹅mobi

黑天鹅是影响严重的异常事件(例如2008年金融危机)的隐喻。 在生产系统中,这些事件会触发您不知道遇到的问题,造成重大的可见影响,并且无法通过回拨或呼叫中的剧本的其他一些标准响应来快速轻松地修复。 它们是您在事实发生后数年告诉新工程师的事件。

根据定义,黑天鹅是无法预测的,但有时我们可以找到并使用某些模式来针对各种相关问题创建防御措施。

例如,大部分故障是更改(代码,环境或配置)的直接结果。 以这种方式触发的每个bug都是独特且不可预测的,但是消除所有更改的通用做法在解决此类问题方面有些有效,并且自动回滚已成为标准缓解措施。

随着我们的职业的不断成熟,通过通用的预防策略,其他类型的问题也正逐渐成为易于理解的危险类别。

在野外观察到的黑天鹅

所有技术组织都存在生产问题,但并非所有人都共享他们的分析。 公开讨论事件的组织正在为我们提供服务。 以下事件描述了一类问题,绝不是孤立的实例。 我们的系统中都潜伏着黑天鹅。 这只是我们中的一些人还不知道。

击中限制

Instapaper于2017年2月停运 。 我挑战任何携带寻呼机的工程师阅读停机报告时,都不会感到紧张。 Instapaper的生产数据库位于一个文件系统上,该文件系统对于运行该服务的团队来说是未知的,限制为2TB。 在没有警告的情况下,它停止接受写入。 完全恢复需要几天的时间,并且需要迁移其数据库。

公开讨论事件的组织正在为我们提供服务。

极限可能以各种方式发生。 Sentry达到了Postgres中最大交易ID的限制 。 Platform.sh 在管道缓冲区上达到了大小限制 。 SparkPost 触发了AWS的DDoS保护 。 当它的一个数据存储空间用完RAM时,Foursquare陷入了性能瓶颈。

一种获得系统限制的高级知识的方法是定期进行测试。 良好的负载测试(在生产副本上)应该涉及写入事务,并且应该使每个数据存储区超出其当前的生产规模。 忘记测试不是您的主要数据存储的事物(例如Zookeeper)很容易。 如果在测试期间达到极限,则有时间解决问题。 鉴于与限制相关的问题的解决可能涉及重大更改(例如拆分数据存储),因此时间非常宝贵。

在云服务方面,如果您的服务产生异常负载或使用不那么广泛使用的产品或功能(例如较旧或较新的产品或功能),则您更有可能遇到极限。 值得对它们进行负载测试。 但是请先警告您的云提供商。

最后,在已知限制的地方,添加监视(带有相关的文档),以便您知道系统何时达到这些上限。 不要依靠周围的人来记住。

传播缓慢

“世界的关联度远远超出了我们应给予的重视。因此,我们看到了纳西姆·塔勒布(Nassim Taleb)所说的“黑天鹅事件”更多-稀有事件的发生比本来应该发生的频率更高,因为世界之间的关联性更高。”
— 理查德·泰勒

HostedGraphite关于AWS中断如何中断其负载均衡器 (不在AWS上托管)的事后分析是一个很好的例子,说明了分布式计算系统中存在多少关联。 在这种情况下,负载平衡器连接池被AWS托管的客户的缓慢连接所饱和。 应用程序线程,锁和数据库连接可能会发生同样的饱和-任何由缓慢的操作所垄断的资源。

HostedGraphite事件是外部施加的速度缓慢的一个示例,但速度缓慢通常可能是由于您自己系统中某处的饱和导致创建级联并导致系统其他部分速度变慢。 Spotify发生的事件证明了这种扩散-流式传输服务的前端由于其他微服务的饱和而变得不健康。 强制所有请求的截止日期,以及限制请求队列的长度,可以防止这种传播。 您的服务将至少为某些流量提供服务,并且恢复会更容易,因为将减少系统中较少的部分。

重试应以指数回退和一些抖动来限制。 Square发生中断,其Redis数据存储区由于一段代码重试了失败的事务(无回退)最多500次而过载 ,这表明重试次数可能很严重。 断路器设计模式在这里也很有用。

仪表板的设计应清楚显示所有资源的利用率,饱和度和错误 ,以便快速发现问题。

雷电群

通常,当系统负载异常大时,会出现故障情况。 这可以由用户自然产生,但通常是由系统引起的。 从午夜开始的大量cron工作就是一个很好的例子。 如果将移动客户端编程为同时获取更新,则它们也可能是协调需求的来源(当然,抖动此类请求要好得多)。

在预先配置的时间发生的事件并不是雷电群的唯一来源。 由于大量客户端断开连接并立即重新连接,因此Slack在短时间内经历了多次中断 ,从而导致大量的负载峰值。 当GitLab中断结束时,CircleCI发生了严重的中断 ,导致数据库中排队的构建数量激增,变得饱和且非常缓慢。

几乎所有服务都可以成为雷群的目标。 因此,必须计划此类事件,并测试您的计划是否按预期工作。 客户退回和减载通常是此类方法的核心。

如果您的系统必须不断摄取无法丢弃的数据,那么采用可扩展的方式将该数据缓冲在队列中以便以后处理就变得至关重要。

自动化系统是复杂的系统

“复杂的系统是本质上有害的系统。”
- 医学博士Richard Cook

如果您的系统必须不断摄取无法丢弃的数据,那么采用可扩展的方式将该数据缓冲在队列中以便以后处理就变得至关重要。

在过去的几年中,趋势一直是朝着更加自动化的软件操作方向发展。 任何可能会减少系统容量的操作(例如,擦除磁盘,停用设备,减少服务工作)的自动化都必须谨慎进行。 这种自动化的事故(由于错误或错误的调用而引起)可以非常有效地关闭您的系统,可能以难以恢复的方式。

Google的Christina Schulman和Etienne Perot在他们的演讲“ 利用安全约束帮助保护数据中心”中描述了一些示例。 一次事件使Google的整个内部内容交付网络(CDN)遭到磁盘擦除。

Schulman和Perot建议使用中央服务来管理约束,这限制了破坏性自动化的运行速度,并了解系统状况(例如,如果该服务最近发出警报,则避免破坏性操作)。

自动化系统在与操作员(或其他自动化系统)进行交互时也会造成严重破坏。 Reddit的自动化系统重新启动了操作员已停止进行维护的系统时,发生了严重故障。 一旦拥有多个自动化系统,它们的潜在相互作用将变得极其复杂,无法预测。

如果所有这些自动化操作将日志写入易于搜索的中央位置,则将有助于处理不可避免的意外情况。 自动化系统应始终具有一种允许快速关闭它们的机制(完全或仅针对部分操作或目标)。

防御黑天鹅

这些并不是可能正在等待攻击您系统的唯一黑天鹅。 使用诸如金丝雀,负载测试,混乱工程,灾难测试和模糊测试之类的技术可以避免许多其他严重的问题,当然还可以设计冗余性和弹性。 即使有这些,您的系统有时也会发生故障。

为了确保您的组织可以有效地做出响应,请确保关键技术人员和领导层有办法在停电期间进行协调。 例如,您可能要处理的一个不愉快的问题是网络完全中断。 拥有完全独立于您自己的基础架构及其依赖性的故障安全通信通道非常重要。 例如,如果您在AWS上运行,则将同样在AWS上运行的服务用作故障安全通信方法也不是一个好主意。 与主系统分开运行的电话桥或IRC服务器是不错的选择。 确保每个人都知道通信平台是什么,以及使用该平台的实践。

另一个原则是确保监视和操作工具尽可能少地依赖生产系统。 将控制平面和数据平面分开,以便即使系统运行不正常也可以进行更改。 例如,不要将单个消息队列用于数据处理和配置更改或监视,而要使用单独的实例。 Jeremy Blosser在《 SparkPost:DNS死亡的那一天》中 ,举了一个例子,其中关键工具依赖生产DNS设置,但失败了。

对抗黑天鹅的心理

为了确保您的组织可以有效地做出响应,请确保关键技术人员和领导层有办法在停电期间进行协调。

处理生产中的重大事件可能会带来压力。 对于这些情况,采用结构化的事件管理流程确实有帮助。 许多技术组织( 包括Google )成功使用了FEMA的事件指挥系统。 在遇到无法独自解决的重大问题时,应有明确的方式让任何待命的人员寻求帮助。

对于长时间运行的事件,重要的是要确保人们不要在不合理的时间长度内工作,并有休息的时间来进食和睡眠(不受寻呼机的干扰)。 精疲力竭的工程师很容易犯错误或忽略某些可以更快解决问题的事情。

学到更多

关于黑天鹅(或以前的黑天鹅)以及与之打交道的策略还有很多其他事情可以说。 如果您想了解更多信息,我强烈推荐这两本书介绍生产中的弹性和稳定性:Susan Fowler的《 生产就绪微服务》和Michael T. Nygard的Release It!


劳拉·诺兰(Laura Nolan)将于10月29日至31日在美国田纳西州纳什维尔举行的LISA18上展示“破坏 我们的系统的东西:黑天鹅的分类学” 。

翻译自: https://opensource.com/article/18/10/taxonomy-black-swans

黑天鹅mobi

黑天鹅mobi_破坏我们系统的因素:黑天鹅分类法相关推荐

  1. dnf服务器未响应win7,win7dnf登录黑屏未响应|win7系统未响应黑屏的解决方法

    对于win7dnf登录黑屏未响应|win7系统未响应黑屏的解决方法,很多用户都遇到过win7dnf登录黑屏,或者游戏过程中未响应的问题,很多小伙伴们对此都是头疼不已,为了帮助小伙伴们解决这个问题,小编 ...

  2. w ndows系统开机时黑屏,win7旗舰版系统开机后黑屏的解决方法【图】

    win7旗舰版系统开机后黑屏的解决方法分享给大家,在诸多电脑故障中,系统黑屏和蓝屏是用户最精彩遇到的问题,win7系统作为当今市场上的主流系统.受到广大用户的喜爱,因此系统城致力于为广大用户提供最及时 ...

  3. w ndows系统开机时黑屏,Windows 7 启动系统后出现黑屏,要怎么解决?

    陈宏斌   2020-6-24 高级软件工程师 概要 电脑黑屏是我们常见的故障之一,那Windows 7启动系统登录后,桌面出现黑屏应该如何解决呢?本文附上原因分析及解决方法. Windows 7启动 ...

  4. 黑进腾讯内部系统,攻破论坛服务器,揭晓16岁天才黑客背后的真相

    他是一名天才黑客 16岁时,黑进腾讯内部系统,攻破亚洲第一论坛天涯论坛的服务器: 17岁时,通过黑客技术救下了一名准备轻生的少女,他就是纵横网络世界.亦正亦邪的超级黑客"菜霸". ...

  5. 服务器重装系统后桌面只有鼠标,如何解决进入系统后桌面黑屏只有鼠标箭头可以动...

    如何解决进入系统后桌面黑屏只有鼠标箭头可以动 假如电脑系统被病毒破坏又或者过于人为的系统优化,电脑系统或多或少都会出问题,进入系统后桌面黑屏只有鼠标箭头可以动的电脑故障就属于其中一种了.具体表现为系统 ...

  6. w ndows10系统装机时黑屏,小编教你如何解决Windows10黑屏

    有部分用户在升级win10后开机却出现了系统黑屏的问题,本文主要给大家讲解win10黑屏的解决办法. 使用win10系统的用户可能会遇见过win10系统开机黑屏的现象,win10系统黑屏的原因有很多, ...

  7. 笔记本电脑显示计算机无法启动不了,笔记本电脑开机黑屏进不了系统,屏幕提示“bootmgr is missing”怎么办...

    近期有用户反馈,自己的电脑开机不仅黑屏进入不了系统,而且屏幕还会弹跳出"bootmgr is missing"的提示框,这是什么原因呢?此文小编就来为大家详细分析发生"b ...

  8. 7能进安全模式但正常启动黑屏_电脑进入系统后黑屏怎么解决

    电脑的普及也要归功于互联网技术的高速发展,正是因为如此,才会有更多的人使用电脑.如今虚拟环境对我们的影响已经大大的增加了.有用户也会遇到开机过了欢迎画面后,快要进入桌面却黑屏了,只有鼠标可以移动,这是 ...

  9. 群晖备份linux分区,黑群晖二合一系统无损扩充系统分区方法补充

    黑群晖二合一系统无损扩充系统分区方法补充 2020-01-19 14:54:08 28点赞 172收藏 35评论 创作立场声明:本文作者也是经过多次重装实验,耗费了大把时间,值钱用diskgenius ...

  10. win10电脑黑屏只有鼠标箭头_电脑开机进入系统后显示黑屏,只能看到一个鼠标指针,如何解决?...

    使用电脑时可能会遇到各种小问题,当电脑开机后进入系统后显示黑屏,看不到任何图标只有一个鼠标指针的情况,这是资源管理器没有正常加载并运行的原因.我们可以调出任务管理器重新启动下资源管理器,就可以让桌面图 ...

最新文章

  1. python常见的数据类型_Python中常见的数据类型总结
  2. boost::safe_numerics::safe_signed_range相关的测试程序
  3. Scala入门到精通——第十七节 类型参数(一)
  4. 这几款前端必备构建工具合辑,我们帮你整理好了!
  5. cgcs2000高斯平面直角坐标_多元微积分——环量、旋度与格林、斯托克斯公式,通量、散度与高斯公式...
  6. SqlServer 日期时间格式 字符串相互转换 及相关函数
  7. 解决datepicker设置选中日期setDate不生效问题
  8. Linux 基金会发布 2017 最佳 Linux 发行名单
  9. 【论文】 NLP中命名实体识别从机器学习到深度学习的代表性研究
  10. 揭秘防出轨软件 黑市卖到上万 安装容易卸载难
  11. 杨辉三角形Java实现
  12. 显示当前系统时间和日期
  13. 计算机断电无法启动不了系统,电脑因为强制断电导致系统无法正常启动的解决办法...
  14. 红米AC2100路由器刷机教程(附避坑秘籍)
  15. 项目分享之敲击床头盒控制床头灯的开关
  16. MATLAB | 绘图复刻(二) | 折线图+误差棒+柱状图+散点抖动+灰色背景+图片叠加
  17. 九寨沟静态页面(html+css)
  18. 超详细——入门Github的代码上传
  19. 【hpuoj】OY问题
  20. CSS 添加背景图片

热门文章

  1. 常熟理工php实验三_三位教师获评常熟理工学院首届科研支撑教学奖
  2. python3安装库报错ERROR: Exception: Traceback (most recent call last): File “A:\ProgramData\Anacon
  3. 我靠!Semaphore里面居然有这么一个大坑!
  4. html 伸缩布局,CSS3弹性伸缩布局(下)——flex布局
  5. python 列表解析式
  6. 多力食用油:技术赋能产品品质,健康深植品牌理念
  7. Xcode6中如何添加pch文件
  8. 计算机linux认证-1,Linux认证:Linux点评Debian5个五功能
  9. 重装Ubuntu系统
  10. 【语音识别】基于MFCC的GMM实现语音识别matlab源码