我们“雇佣”了一只大猴子,只为“搞破坏”,不开玩笑。

一、这只猴子是用来做什么的?

从程序员的视角来看,提高系统稳定性的方法无外乎三种:

•通过各种技术手段,例如在容器和调度、微服务、消息、软负载和配置中心等纬度提高系统和架构的健壮性;

•提升监控的广度和深度,生产中一旦出现问题,能快速定位,给出解决方案;

•生产就是大考,谁也不知道升学考中会出现什么样的试题,建立故障演练机制,把各类可以预见的故障提前演练出来,例如随机杀节点、延时响应,甚至中断机房;

这只猴子就是我们雇来做破坏,进行故障演练的队友。(疯起来,我们连自己都打)

二、这只猴子最早来源于哪?

Netflix的流媒体服务最初由Netflix工程师在Microsoft软件之上构建的,并位于垂直扩展的服务器机架中。然而,这一单一故障点在2008年8月受到攻击,当时一个主要的数据库损坏导致了三天的停机时间,在此期间DVD无法发送给客户。

在此之后,Netflix工程师开始将整个Netflix堆栈从单片架构迁移到分布式云架构中。

但是,这种向数百个微服务的分布式架构的重大转变带来了大量额外的复杂性。分布式系统中的这种复杂性和相互关联性创造了一些难以处理的东西,并且需要一种新的方法来防止看似随机的中断。Netflix向水平扩展软件堆栈的转变需要更可靠和容错的系统。

最重要的经验教训之一是 “避免失败的最佳方法是不断失败。”

2010年,Netflix Eng Tools团队开发出了Chaos Monkey,用来测试系统。Netflix的这个猴子军团可以在随机杀死实例,或是让某台机器的请求或返回变慢,还有就是搞挂一个机房,宏观验证业务容灾和恢复的能力。

三、阿里的这只猴子是什么来头?

1、2011年
阿里巴巴开始做强弱依赖的治理和建设,希望提前发现因为依赖问题导致的系统故障,系统的代号是EOS(出处是古希腊神话中的黎明女神,语意是能够把纷乱的依赖关系梳理清楚)

2、2012年
完成交易的同城双活后,我们就启动了同城容灾演练,也叫断网演练。验证核心系统的同城一个机房挂掉的情况下,是否还可以正常工作。

3、2015年
因为一次宕机事故,公司内部得出一个结论:任何基础设施、生产系统、任何流程都可能出现问题,没有经过重大灾难验证的容灾设施都是耍流氓。 启动了代号为虎虎虎的生产突袭项目,用来验证异地多活的质量。

3、2016年
故障演练项目立项(GOC+中间件),重新设计架构和产品流程,确定产品名为MonkeyKing,在交易和中间件链路尝试演练。MonkeyKing是中国美猴王的意思,看重的是孙悟空高强的本领(火眼精金、七十二变)和极具反叛的精神来,希望用一种创新的思路来保证稳定性。

四、阿里的这只猴子能做些什么?

阿里巴巴因为其多元化的业务场景和日益复杂的技术架构,会遇到各式各样的故障,故障治理的难度相比流媒体服务故障治理,难度是也增量了几个台阶。

前面介绍过的强弱依赖和容灾演练只能覆盖到部分故障。如果对故障整体做初步画像,故障整体可以分为IaaS层、PaaS层、SaaS层的故障,每一层都可能有很多故障出发原因和表现。


故障如此之多,让人摸不着头脑,我们试着把维度降低一下,换一个视角来看故障:

•任何故障,一定是硬件如IaaS层,软件如PaaS或SaaS的故障, 并且有个规律,硬件故障的现象,一定可以在软件故障现象上有所体现;

•故障一定隶属于单机或是分布式系统之一,分布式故障包含单机故障;

•对于单机或同机型的故障,以系统为视角,故障可能是当前进程内的故障,比如:如FullGC,CPU飙高; 进程外的故障,比如其他进程突然抢占了内存,导致当前系统异常等;

•人为误操作,或流程不当导致;

任何故障都可以套入到这个故障模型中。有了这个模型,我们就可以开始来设计模拟故障的演练系统了。

•在客户机器部署OS层的故障插件,用来模拟硬件层的故障和单机进程外的故障。

•对于应用进程内的故障,提供插拔式的故障插件,也可以用户按照我们的故障API做自己的实现。

•对于分布式故障,则通过服务端按照IP来控制故障的范围。

•对于一些因为各种原因无法触及的应用,比如数据库。我们提供了一个故障三方实现的标准,供故障服务接入。

通过上面的方式,基本上就把技术型故障的模型就cover全了。

五、那么,从哪里可以雇佣到这只猴子?

方式一:

2016年,Chaos Monkey(Netflix的猴子名称)进行开源,但自2016年11月发布第三个版本,未再发布新版本。

地址:https://github.com/Netflix/chaosmonkey

方式二:

2018年9月,MonkeyKing(阿里的猴子名称)以免费服务的方式向阿里云公有云客户进行输出,产品名称是应用高可用服务 AHAS,目前已支持K8s集群接入。

阿里竟然雇佣了一只大猴子...相关推荐

  1. 我们雇佣了一只大猴子…

    Picture from Gremlin 我们"雇佣"了一只大猴子,只为"搞破坏",不开玩笑. 这只猴子是用来做什么的? 从程序员的视角来看,提高系统稳定性的方 ...

  2. 训练自己集中注意力就是要驯服这只大猴子

    在互联网内容中每日浸泡的我们每个人,思路就象一只跳来跳去的猴子,一会想这个,一会想那个,而训练自己集中注意力就是要驯服这只大猴子. 在日常生活中,你可以采用下面这些技巧,让自己更加专注. 1.专注力到 ...

  3. 阿里研究院潘永花:大数据将成为新的煤和石油

     阿里研究院潘永花:大数据将成为新的煤和石油 来源: 数据猿   分类: 云计算与大数据   时间: 2017-02-15 09:45   阅读:3169次 过去的2016年,政府.行业以及大众对 ...

  4. 阿里云ACE共创空间——大数据方案体验1 日志服务

    阿里云ACE共创空间--大数据方案体验1 日志服务 从阿里云官方文档介绍中,可以看到Log service日志服务主要包含三部分的内容: 1. 实时采集与消费LogHub 2. 查询分析Search/ ...

  5. 阿里云释放数据能力 开启大数据元年

    2016云栖大会·上海峰会召开,这也是暨北京.杭州.成都.武汉.广州等地之后的又一次阿里云的盛会.而此次大会上,阿里云将主题聚焦在大数据,不但发布了大数据平台数加,还发布了阿里企业级互联网架构平台解决 ...

  6. 三面阿里竟然败在了 volatile 关键字上

    作者 | SoWhat1412 来源 | SoWhat1412(id:sowhat9094) 头图 | 东方IC 今天闲来无事跟同事大帆闲聊: SoWhat:麦叔听说你偷偷面阿里啦,面的咋样? 大帆: ...

  7. 大猴子和小猴子的故事

    你那么憎恨那些人,跟他们斗了那么久,最终却变得和他们一样,人世间没有任何理想值得以这样的沉沦作为代价. --马斯克<百年孤独> 这个比喻可能有点不适,但是请你认真看完,看完之后,请您再评价 ...

  8. 2018阿里云双11拼团大促主会场全攻略

    云栖君导读:在双十一这个一年唯一一次的大幅度降价促销日,怎样才能花最少的钱配置最特惠的云服务?云栖社区特为各位开发者奉献出省钱大法如下! 2018阿里云双十一拼团大促活动已经于10月29日正式开启,从 ...

  9. 【云周刊】第156期:首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底...

    本期头条 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底 关注直播行业的人都知道, 2016年是移动直播的元年,那一年,网红被我们挂在嘴边,直播平台数量呈大规模增长.模式从最开始的秀场直播 ...

最新文章

  1. Linux 设备树device tree 使用手册
  2. 高标准,严要求!数据中心发电机组的调试与验收工作
  3. 七十四、SpringBoot 的数据缓存cache(一)
  4. 2019年华南理工大学程序设计竞赛(春季赛)
  5. iphone 系统文件夹
  6. Excel 转为 MySQL 语句
  7. arrayrand php,php中array_rand函数的功能起什么作用呢?
  8. 让AI学习AI:自动化机器学习的概述、发展和研究意义
  9. Apache 配置两个域名匹配的文件夹和配置多个Web站点
  10. Moses manual 中Basline System 2.3.4节用IRSTLM创建语言模型的命令有误
  11. 第8-9讲 视觉里程计2
  12. 文件流操作,报“because it is being used by another process. ”错误解决
  13. SpringMVC+Spring Data JPA +Bootstrap 分页实现和模糊查询分页
  14. eova常用前端组件介绍
  15. 所有的Python库,我都整理在这里了
  16. 深度学习入门 基于python的理论和实践 第一章
  17. win7任务栏谷歌浏览器图标显示异常
  18. 根号2以及π的计算--关于无理数的畅想
  19. 3315 时空跳跃者的魔法(一个超级恶心的题目)
  20. 天龙八部荣耀版体验服服务器未响应,《天龙八部荣耀版》创新竖版手游官网-合区来了!体验服合区测试解析...

热门文章

  1. web渗透测试----21、网站备份文件泄露
  2. 信息系统分析与设计——第十章 系统总体设计
  3. EMV Level1(7816)学习(Smart Cart智能卡)-3
  4. 头条广告算法实习生面试总结
  5. 小练习 简易双色球模拟器
  6. 计算机考研高数范围,考研数学的范围是什么
  7. cannot be resolved or is not a field
  8. 怎么样回放SC2Replay文件
  9. [阿里Hao]Android无线开发的几种经常使用技术
  10. 如何获得汉字拼音的首字母序列