在线服务的黑天鹅(转)

提高服务稳定性的最大困难,就是”黑天鹅难题”(problem of black swans)。这个名词是由 Nassim Taleb 提出来的,他这样定义:”黑天鹅代表外来因素,是一个超出正常预料的事件。”几乎所有的互联网服务中断,都来自于意料之外的突发事件,属于极其小概率的非主流意外。这类事件是如此罕见,以至于常规的统计方法—-比如”故障间隔平均时间”—-都失效了。”请问新奥尔良市发生特大洪水的平均间隔时间是多少?”

  Tim 这两天也是刚忙完 InfoQ 的 ArchSummit 的演讲,正在利用周日休息一下,但是一醒来就收到消息说某服务有些问题。于是赶紧连线了一堆正在处理事件的工程师,等拿到初步的原因分析之后,已经 4 小时之后了。

  “墨菲定律”,一位工程师说,“前几天觉得这个地方有些隐患,已经存在一段时间了,打算下周来处理,未料它今天就出了问题……”。墨菲定律是指“凡是可能出错的事必定会出错”,指的是任何一个事件,只要具有大于零的机率,就不能够假设它不会发生。因此在线服务发生问题之后,总有工程师随即证明墨菲定律的有效性。

  不过我觉得用黑天鹅难题更能体现在线服务可用性的不可控,可用性是指一个系统中提供服务与设计时间的比例,通常用百分比来表示。在线服务通常看到最多的是以下 3 种。

  • 99. 9%,服务中断时间:525.6 分钟/年
  • 99. 99%,服务中断时间:52.56 分钟/年
  • 99. 999%,服务中断时间:5.256 分钟/年

  当一个系统有大量用户使用之后,对系统可用性有较高要求,互联网服务通常会把可用性目标定在 99.99% 及以上,但极少能达到 99.999% 的。Tim 有一个服务由于功能简单且稳定,较少需要变更代码,且有容错的设计,服务池没有单点问题,所以跟同事们说 2014 年可以达成 99.999% 了。未料这个服务池最近被一个极偶然的扫描脚本全部干掉了,尽管运维工程师马上进行了处理,但是最后也较难满足 1 年低于 5 分钟中断的期望。虽然这个是个偶然的案例,但是它却是典型的黑天鹅事件。

  对于系统服务可用性的问题,在专业领域其实有 3 个词汇去描述的。描述的顺序通常是 fault -> error -> failure。这方面大多定义引用来自《Patterns for Fault Tolerant Software》一书,在书中描述如下。

  用一个通俗的例子来描述三者的定义是,如果把 fault 比作是数据库网线断了,则 error 是网络不通连不上数据库,导致的 failure 是不能注册用户。由于 error 及 failure 是不可避免的,所以在代码设计上更多的是做容错(fault-tolerance)。

  我们可以通过服务之间进行良好的容错设计,进一步用代码 review,关键路径的梳理来确保容错策略的落实。上线的 checklist 来确保变更出现异常时候的应对。即便如此,容错只能帮助我们规避大部分已知的问题,随着系统长时间运行,总是有意外情况出现,曾经有同事碰到关键的服务中出现内存出错这种小概率事件,查出来之后,当事的工程师的肯定为了怎么写好问题总结那一段话在绞尽脑汁。

  当团队规模比较小的时候,服务本身可控性还是比较强,关键路径中的每一段代码团队成员非常熟悉。当出现异常问题,团队成员也可以快速拿出处理方法来解决。但是当系统变大,每个团队只参与大系统一个环节时,问题会变得更复杂。从概率的角度,大的系统中小的模块的 failure 不可避免,容错流程总是存在疏忽的地方。当系统中存在复杂的网状调用,无法完全做到松耦合(理想的松耦合是指一个服务的失败不会引起另外一个依赖服务的失败),因此任何一个模块中,可能由于一个缺乏经验工程师的一行不经意的代码造成整个大系统不可控的后果。

  大型系统不可预知问题的排查通常需要更多时间,需要多个团队共同参与来定位及解决问题。但在线服务由于可用性的要求,出了问题之后,解决问题的紧急程度会比分析问题更高,因此并不会第一时间来讨论及分析问题,现场的工程师需要凭有限的现象迅速做出判断,将问题消灭在萌芽阶段。但正是由于缺少完整分析问题的时间,故障也往往难以第一时间有效解决,问题延续的时间比预期的要久也成为常见的现象。

  对于公司来说,肯定希望所有的服务都有 99.999% 的可用性;但由于黑天鹅的现象,完美的可用性较难达到,这也很容易成为工程师的心理负担。当稳定性出现问题后,负责的技术团队心理沮丧程度不会比一个战败的队伍更好,甚至一些工程师还会造成长期心理上的压力及阴影。夜深人静时候电话突然响起,第一反应会心头一紧,“莫非是服务出问题了?”。

  工程师应该用什么样的心态去看待出现的问题?

  一方面,各种故障 failure 它确实是一种客观存在,给用户访问及体验带来了不便。我们不会通过回避问题来避免它的出现。当出现问题后,需要通过问题复盘的方式,帮助我们来重审事件的经过,检查流程、机制、代码等共性层面的问题,避免在同一个地方再次踩坑。同时也可以反思团队在项目中的表现是否达到了平均以上的水平,是否存在一些低级错误?

  在另外一方面,如果问题超出了之前的认知及应对策略的范围,属于黑天鹅式的问题,则没必要太多的自责。具有完美心态的工程师需要理性的看待各种批评及质疑,毕竟在一定程度,这是业界在共同应对的一个类型的难题,这些不稳定问题的出现也是在线服务的一部分。

http://news.cnblogs.com/n/522011/

时间: 2024-10-08 21:06:21

在线服务的黑天鹅(转)的相关文章

黑天鹅事件的背后

2016发了几件被称为黑天鹅的大事件: 1.英国脱欧了: 2.特朗普当选美国总统了: 3.朴槿惠遭弹劾被停职:   而我在看了<得到>专栏吴军老师发表的那篇<市场永远是对的>后,里面的一些观点值得深思. 在股票投资上,总有这样一些精英,他们建造了非常'完美'的预测模型,但是预测市场就是不准,于是他们说市场有问题.当然,真正的投资人知道,市场永远是正确的,要错也是你的模型错了.   当精英人士坚持认为他们没错,是国家错了.民众错了,这些人从来不检讨自己的鞋子有问题,老是从脚上找毛病的

塔勒布用期权实现“黑天鹅”传说

因“黑天鹅理论”而被人们称为“黑天鹅之父”的塔勒布最爱讲一个故事:18世纪以前,欧洲所有的人都确信天鹅是白色的,因为这是世代相传.耳闻目见的“真理”:没见过黑色天鹅,自然无法预计世上有黑天鹅这东西.直到澳洲黑天鹅被发现,才彻底打破了这个“真理”. 塔勒布如此强调于关注小概率事件,是由于他亲身经历的两件事情引起的. 出身于贵族家庭的塔勒布,童年时期生活幸福.然而内战的突然到来改变了这一切.塔勒布说,6个月的时间,使他从天堂一下子掉进了地狱. 而另一件事情的发生,使塔勒布更加确信了自己的观点.在塔勒

黑天鹅-简记

黑天鹅 <黑天鹅>是2010年由达伦·阿伦诺夫斯基执导的美国电影. 剧情简介 围绕娜塔莉·波曼饰演的妮娜,一位纽约的芭蕾舞演员展开,她与母亲--退休的芭蕾舞演员艾丽卡居住在一起,她的生活只有舞蹈以及野心勃勃的职业目标.好机会终于降临,当导演托马斯(文森特·卡塞尔)决定为新一季<天鹅湖>挑选新演员时,妮娜成为了第一候选人.不过,她还有一个竞争者,莉莉(米拉·库妮丝),托马斯要求舞者不仅仅能演出白天鹅的无辜与优雅,更要能演出黑天鹅的诡诈与淫荡.妮娜是完美的白天鹅而莉莉却是黑天鹅的化身,

黑天鹅笔记

1. 黑天鹅现象,黑天鹅现象具有三个特点:不可预测性,影响重大,事后可解释. 2.我们不断根据事件发生之后我们觉得有道理的逻辑重新叙述过去的事件. 3.避免叙述错误的办法就是强调实验而非讲故事,强调体验而非历史,强调客观知识而非理论. 4.那些我们没有看到的结果可能,不,是通常更具有意义. 5.我们冒险通常不是出于自信,而是出于无知和对不确定性的无视! 6.我们在对随机事件的认识上容易犯不对称的错误.我们把成功归因于能力,把失败归因于在我们控制之外的事物,比如随机性.对好结果我们感到有功劳,对坏

《黑天鹅——如何应对不可预知的未来》 读书笔记

转载请说明出处:http://blog.csdn.net/cywosp/article/details/27095723 <黑天鹅--如何应对不可预知的未来> 作者:纳西姆?尼古拉斯?塔勒布 关于黑天鹅 在发现澳大利亚黑天鹅之前,所有欧洲人都确信天鹅全部都是白色的,人们在经过上百万次的确定性观察白天鹅之后得到了这一结论,而且一直延续了上千年,直到黑天鹅的出现,从而将这一结论完全打破.通过黑白天鹅的现象说明我们通过观察或经验获得的知识具有严重的局限性和脆弱性,仅仅一次的完全不同的发现就足以颠覆根

黑天鹅与大数据

摘要 : 人类不知道的远远比知道的更有意义.历史永远不是线性发展,每一次跳跃前行中都有「黑天鹅」的身影.这就是「黑天鹅事件」要告诉我们的真相. 上一篇文章里引用了「黑天鹅事件」这么个高贵冷艳的词汇,惹得众多读者发来讯息,让我讲讲黑天鹅的事.今天给大家简单说一点我对黑天鹅事件和大数据的认识. 如果你像很多爱读书的人一样,比如我,就会知道「黑天鹅」并不是什么新词,这个词源于澳大利亚的黑天 鹅.十七世纪的欧洲人认为所有的天鹅都是白色的,因为他们从来没有见过其他颜色的天鹅,当然,我到现在也没见过其他颜色

书列君荐书|《黑天鹅&#183;如何应对不可预知的未来》【美】纳西姆&#183;尼古拉斯&#183;塔勒布 著

你不知道的事比你知道的事更有意义,因为生活中发生了许多微小的事情,尽管出现的概率非常小,但是却以某一种巨大的力量影响我们的生活.但是由于思维习惯的问题,导致我们看问题的方式使得我们不能很快地把握事物的本质.<黑天鹅>或许稍微能让我们打开一下思维的大门. 数到3 “科学家认为,寻找自身缺点使他们变成象棋高手,而不是练习下棋把他们变成怀疑主义者.同样,投机家乔治·索罗斯在进行金融读博时会不断寻找证明他最初看法错误的事例.这大概是真正的自信:冷眼看世界而不需要找理由满足自我膨胀的欲望.” 一个人能够

【fone思考】你的预算系统是否足以应对“黑天鹅事件”?

17世纪之前,西方人认为天鹅都是白色的,"黑天鹅"曾经是欧洲人言谈与写作中的惯用语,用来指不可能存在的事物,但当他们进入澳大利亚发现了黑天鹅,这个曾经不可动摇的信念被颠覆了.这就是"黑天鹅事件"的由来. "黑天鹅",指那些不可预测的重大稀有事件,在意料之外,却又改变一切. 2020年的开端,一场叫做"新冠肺炎"的黑天鹅事件突然爆发,数以万计的人身体健康受到严重威胁,为了减少接触,控制疫情扩散,许多城市地区都发布了延迟复工的通知

websevice突然连接失败怎么办

前言:虽然webservice调用失败的原因已经找到并且已经解决,我还是尝试把这件事记录下来,作为一个经验保存下来.今天看到携程挂了,请先饶恕我的孤陋寡闻,知道今日我才知道携程,笑曰:小的未曾坐过灰机啊.面对这些问题时,我们能做些什么呢? 尽早9点左右时分,突然发现服务器无法正常启动了,因为我们的服务器在启动的时候是需要通过webservice访问权限的,而程序莫名其妙的就卡在webservice的通信上面,并且发生timeout后,程序就悄悄的退出了.捕捉到的日志为: ERROR 2015-0