软件随想录(More Joel on Software)有这样一段话
提高服务稳定性的最大困难,就是”黑天鹅难题”(problem of black swans)。这个名词是由Nassim Taleb提出来的(www.edge.org/3rd_culture/taleb04/taleb_indexx.html),他这样定义:”黑天鹅代表外来因素,是一个超出正常预料的事件。”几乎所有的互联网服务中断,都来自于意料之外的突发事件,属于极其小概率的非主流意外。这类事件是如此罕见,以至于常规的统计方法—-比如”故障间隔平均时间”—-都失效了。”请问新奥尔良市发生特大洪水的平均间隔时间是多少?”
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它确实是一种客观存在,给用户访问及体验带来了不便。我们不会通过回避问题来避免它的出现。当出现问题后,需要通过问题复盘的方式,帮助我们来重审事件的经过,检查流程、机制、代码等共性层面的问题,避免在同一个地方再次踩坑。同时也可以反思团队在项目中的表现是否达到了平均以上的水平,是否存在一些低级错误?
在另外一方面,如果问题超出了之前的认知及应对策略的范围,属于黑天鹅式的问题,则没必要太多的自责。具有完美心态的工程师需要理性的看待各种批评及质疑,毕竟在一定程度,这是业界在共同应对的一个类型的难题,这些不稳定问题的出现也是在线服务的一部分。
相关推荐
在一片宁静的湖畔,生活着一只名叫“冷江”的黑天鹅。她的羽翼如同夜空中最深沉的黑,但她的存在却如同一颗璀璨的星,为湖畔的景色增添了生命的色彩。冷江曾是一只受人瞩目的黑天鹅,在她年轻时,因为羽毛的稀有光泽...
精神分析黑天鹅.pdf
【黑天鹅远控】是一款基于Java技术开发的远程控制系统,其最新版本增加了更多实用功能,以提升用户体验和控制效率。此次升级主要集中在以下几个方面: 1. **修改主机名称**:新版本的黑天鹅远控允许用户远程修改...
【Singer胜家纪念版160TH黑天鹅说明书】是Singer品牌为庆祝其160周年纪念推出的一款特别版缝纫机的用户指南。这份说明书详细地介绍了该产品的使用、维护和安全注意事项,旨在帮助用户更好地理解和操作这台精密的设备...
在发现澳大利亚的黑天鹅之前,欧洲人认为天鹅都是白色的,“黑天鹅”曾经是他们言谈和写作中的惯用语,用来指不可能存在的事物,但当第一只黑天鹅出现时,这个不可动摇的信念崩溃了。黑天鹅的存在,寓示不可预测的...
用Java开发的功能强大的远程控制软件,而且开源,并且有详细的设计文档。可以实现生成服务器、屏幕监视,屏幕控制、上传文件、下载文件、远程命令、 远程任务管理器、发送警告、相互聊天、换皮肤、版本升级提醒等...
在当前金融与投资领域中,“黑天鹅事件”一词常用于描述那些极不可能发生、但一旦发生将带来巨大影响的罕见事件。本报告以2020年美国总统特朗普确诊感染新冠肺炎为切入点,重点复盘了此类“黑天鹅事件”中各类资产的...
由taleb写的黑天鹅,对于正态分布假定在布莱克肖尔方程中应用的检验和对金融市场回报率的考察
从给出的内容中,我们可以提炼出一系列与个人成长、职场技巧、文化艺术、心理建设相关的知识点。 首先,关于个人成长,文章中提到了多个层面的发展建议和策略。例如,自律是被反复强调的重要品质,认为自律是人生最...
全方位深度剖析疫情“黑天鹅”对社服零售行业影响:危中藏机,静待新起点.pdf
可以一键设置淘宝店铺内的宝贝公益宝贝 省时省力 还有好多小工具 店铺公益宝贝
用java编写的功能强大的远程控制软件,并且为开源软件。主要功能有, 生成服务器、屏幕监视,屏幕控制、上传文件、下载文件、远程命令、远程任务管理器、 发送警告、相互聊天、换皮肤、版本升级提醒等功能 ...
新年第一只黑天鹅:点评希腊大选及欧元区黑天鹅演变.doc
在教育领域,“黑天鹅”事件主要是指疫情导致的学校停课,学生们不得不通过在线方式继续学习。这种情况下,不仅推动了在线教育的普及,也对在线K12辅导行业的发展带来了前所未有的机遇。 首先,在线K12辅导行业因其...
根据提供的文件信息,这是一份关于中国在线K12辅导行业的分析报告。...通过深入分析这些知识点,报告将揭示在线K12辅导行业在应对“黑天鹅”事件后所面临的挑战,以及如何利用这一机遇实现行业的进一步发展和创新。
标题和描述中提到的“深度解读在线K12辅导:“黑天鹅”如何带来新机遇-爱分析-2020.03-31页”指的是一个关于在线K12辅导行业的专业报告,由“爱分析”机构在2020年3月发布,包含了31页的内容。这个报告主要探讨了在...
文章《小心“黑天鹅”》主要讲述了环境污染对企业股价以及投资者信心的巨大负面影响。所谓的“黑天鹅”事件,指的是那些极不可能发生却又带来巨大影响的不可预测事件,其中环境污染事故就是这类事件的重要代表之一。...
标题中的“深度解读在线K12辅导:‘黑天鹅’如何带来新机遇”是指在教育领域,特别是K12(Kindergarten through 12th grade,即基础教育阶段)在线辅导行业中,面对突发事件如“黑天鹅事件”(比喻罕见且影响巨大的...
【深度解读在线K12辅导:“黑天鹅”如何带来新机遇】 K12教育,即从幼儿园到高中的教育阶段,近年来在中国经历了显著的发展。随着技术的不断进步和互联网的普及,K12在线辅导行业逐渐崭露头角,成为教育领域的一大...
黑天鹅主题不仅是视觉上的吸引,也是对项目特性的隐喻——在商业领域,创新与变革往往与黑天鹅事件相类似,它们的出现通常不可预料,但影响力巨大。 在结构上,《黑天鹅中国风简约-白PPT模板》提供了清晰的章节划分...