我们雇佣了一只大猴子
为什么80%的码农都做不了架构师?>>>
Picture from Gremlin
我们“雇佣”了一只大猴子,只为“搞破坏”,不开玩笑。
这只猴子是用来做什么的?
从程序员的视角来看,提高系统稳定性的方法无外乎三种:
- 通过各种技术手段,例如在容器和调度、微服务、消息、软负载和配置中心等纬度提高系统和架构的健壮性;
- 提升监控的广度和深度,生产中一旦出现问题,能快速定位,给出解决方案;
- 生产就是大考,谁也不知道升学考中会出现什么样的试题,建立故障演练机制,把各类可以预见的故障提前演练出来,例如随机杀节点、延时响应,甚至中断机房;
这只猴子就是我们雇来做破坏,进行故障演练的队友。(疯起来,我们连自己都打)
这只猴子最早来源于哪?
Netflix的流媒体服务最初由Netflix工程师在Microsoft软件之上构建的,并位于垂直扩展的服务器机架中。然而,这一单一故障点在2008年8月受到攻击,当时一个主要的数据库损坏导致了三天的停机时间,在此期间DVD无法发送给客户。
在此之后,Netflix工程师开始将整个Netflix堆栈从单片架构迁移到分布式云架构中。
但是,这种向数百个微服务的分布式架构的重大转变带来了大量额外的复杂性。分布式系统中的这种复杂性和相互关联性创造了一些难以处理的东西,并且需要一种新的方法来防止看似随机的中断。Netflix向水平扩展软件堆栈的转变需要更可靠和容错的系统。
最重要的经验教训之一是 “避免失败的最佳方法是不断失败。”
图片来源于社交网络,出处未知
2010年,Netflix Eng Tools团队开发出了Chaos Monkey,用来测试系统。Netflix的这个猴子军团可以在随机杀死实例,或是让某台机器的请求或返回变慢,还有就是搞挂一个机房,宏观验证业务容灾和恢复的能力。
阿里的这只猴子是什么来头?
2011年
阿里巴巴开始做强弱依赖的治理和建设,希望提前发现因为依赖问题导致的系统故障,系统的代号是EOS(出处是古希腊神话中的黎明女神,语意是能够把纷乱的依赖关系梳理清楚)
2012年
完成交易的同城双活后,我们就启动了同城容灾演练,也叫断网演练。验证核心系统的同城一个机房挂掉的情况下,是否还可以正常工作。
2015年
因为一次宕机事故,公司内部得出一个结论:任何基础设施、生产系统、任何流程都可能出现问题,没有经过重大灾难验证的容灾设施都是耍流氓。 启动了代号为虎虎虎的生产突袭项目,用来验证异地多活的质量。
2016年
故障演练项目立项(GOC+中间件),重新设计架构和产品流程,确定产品名为MonkeyKing,在交易和中间件链路尝试演练。MonkeyKing是中国美猴王的意思,看重的是孙悟空高强的本领(火眼精金、七十二变)和极具反叛的精神来,希望用一种创新的思路来保证稳定性。
图片来源于 QCon·北京
阿里的这只猴子能做些什么?
阿里巴巴因为其多元化的业务场景和日益复杂的技术架构,会遇到各式各样的故障,故障治理的难度相比流媒体服务故障治理,难度是也增量了几个台阶。
前面介绍过的强弱依赖和容灾演练只能覆盖到部分故障。如果对故障整体做初步画像,故障整体可以分为IaaS层、PaaS层、SaaS层的故障,每一层都可能有很多故障出发原因和表现。
图片来源于 QCon·北京
故障如此之多,让人摸不着头脑,我们试着把维度降低一下,换一个视角来看故障:
- 任何故障,一定是硬件如IaaS层,软件如PaaS或SaaS的故障, 并且有个规律,硬件故障的现象,一定可以在软件故障现象上有所体现;
- 故障一定隶属于单机或是分布式系统之一,分布式故障包含单机故障;
- 对于单机或同机型的故障,以系统为视角,故障可能是当前进程内的故障,比如:如FullGC,CPU飙高; 进程外的故障,比如其他进程突然抢占了内存,导致当前系统异常等;
- 人为误操作,或流程不当导致;
任何故障都可以套入到这个故障模型中。有了这个模型,我们就可以开始来设计模拟故障的演练系统了。
图片来源于 QCon·北京
- 在客户机器部署OS层的故障插件,用来模拟硬件层的故障和单机进程外的故障。
- 对于应用进程内的故障,提供插拔式的故障插件,也可以用户按照我们的故障API做自己的实现。
- 对于分布式故障,则通过服务端按照IP来控制故障的范围。
- 对于一些因为各种原因无法触及的应用,比如数据库。我们提供了一个故障三方实现的标准,供故障服务接入。
通过上面的方式,基本上就把技术型故障的模型就cover全了。
那么,从哪里可以雇佣到这只猴子?
方式一:
2016年,Chaos Monkey(Netflix的猴子名称)进行开源,但自2016年11月发布第三个版本,未再发布新版本。
地址:https://github.com/Netflix/chaosmonkey
方式二:
2018年9月,MonkeyKing(阿里的猴子名称)以免费服务的方式向阿里云公有云客户进行输出,产品名称是应用高可用服务 AHAS,目前已支持K8s集群接入。
参考资料:
https://www.gremlin.com/
http://jm.taobao.org/2017/06/22/20170622/
作者: 中间件小哥
原文链接
本文为云栖社区原创内容,未经允许不得转载。
转载于:https://my.oschina.net/yunqi/blog/3019309
我们雇佣了一只大猴子相关推荐
- 阿里竟然雇佣了一只大猴子...
我们"雇佣"了一只大猴子,只为"搞破坏",不开玩笑. 一.这只猴子是用来做什么的? 从程序员的视角来看,提高系统稳定性的方法无外乎三种: •通过各种技术手段,例 ...
- 我们雇佣了一只大猴子…
Picture from Gremlin 我们"雇佣"了一只大猴子,只为"搞破坏",不开玩笑. 这只猴子是用来做什么的? 从程序员的视角来看,提高系统稳定性的方 ...
- 训练自己集中注意力就是要驯服这只大猴子
在互联网内容中每日浸泡的我们每个人,思路就象一只跳来跳去的猴子,一会想这个,一会想那个,而训练自己集中注意力就是要驯服这只大猴子. 在日常生活中,你可以采用下面这些技巧,让自己更加专注. 1.专注力到 ...
- 一只老猴子说的话,太经典了!
一只老猴子说的话,太经典了! 故事一 一只猴子,肚子被树枝划伤,流了很多血. 它见到一个猴子就扒开伤口说,你看我的伤口好痛. 每个看见它伤口的猴子都安慰它,告诉它不同的治疗方法. 它就继续给朋友们看伤 ...
- 大猴子和小猴子的故事
你那么憎恨那些人,跟他们斗了那么久,最终却变得和他们一样,人世间没有任何理想值得以这样的沉沦作为代价. --马斯克<百年孤独> 这个比喻可能有点不适,但是请你认真看完,看完之后,请您再评价 ...
- 答复: 三只大老虎和三只小老虎过河
原始问题:http://www.iteye.com/topic/315448 [quote]三只大老虎和三只小老虎过河 三只大老虎分别是A.B.C三只小老虎分别是1.2.3,只有一条船,一次只能坐两只 ...
- vol.023 我有一只大黑狗
主播 / 李秀恩.夏思.朱峰.姝琦 音乐 / 郭子 后期 / 朱峰 抑郁症是一个大家既熟悉又陌生的话题,周围越来愈多的人有这样的困扰,但到底抑郁症是什么?我们怀疑自己有抑郁症的苗头时应该怎么办?恐怕知 ...
- 一只大二狗的Android历程--文件输入输出流 SharedPreference
2017年2月28日 5:10 PM 上篇博文中写道,这次要学习数据的存储完善那个角色软件,结果在XML解析上卡了壳,看了N多论坛示例代码无奈总是执行不出来,没办法为了不拖慢进度只能继续往下学习, 这 ...
- 三只大老虎和三只小老虎过河
本人两个多月前写的 http://www.blogjava.net/xmatthew/archive/2008/11/16/240766.html 拿出来给大家分享一下,希望大家多提建议.
- 023. 我有一只大黑狗
主播 / 李秀恩.夏思.朱峰.姝琦 音乐 / 郭子 后期 / 朱峰 抑郁症是一个大家既熟悉又陌生的话题,周围越来愈多的人有这样的困扰,但到底抑郁症是什么?我们怀疑自己有抑郁症的苗头时应该怎么办?恐怕知 ...
最新文章
- CCNA模拟器《Packet Tracer 4.11》
- 音效摸鱼还不够爽?试试IDE里打几盘魂斗罗?
- DXPerience6.x 使用体会(二)
- 关于c语言中合法的数值常量
- 19 | 案例篇:为什么系统的Swap变高了(上)
- 机器学习中为什么需要梯度下降_梯度下降直觉 - 机器是如何学习的
- tpx色卡电子版_pantone色卡电子版-pantone色卡中文版 3.0 免费版 - 河东下载站
- js 文件下载请求两种方式
- How to make seperate debuginfo file
- Fiddler修改返回数据教程,亲测有效
- 黑苹果睡眠唤醒usb失灵_黑苹果解决USB3.0驱动问题
- java分页打印_谷歌Chrome打印分页
- 物联网服务商店 - Nebula浅谈
- 制作往图片里插入视频,视频添加到图片上播放
- 国际计算机编程大赛报名,关于举办2020年新生编程大赛的报名通知
- 海华cywdhd wifi驱动移植
- 网页底部固定版权信息
- [LQR简要快速入门]+[一级倒立摆的LQR控制]
- php表单验证_PHP表单验证:简介
- 【租房数据分析】2016年在北京如何租到好房子?
热门文章
- 题目96:把一张一元的钞票换成一分、两分、和五分的硬币,每种硬币至少一枚。问有哪几种换法?
- Java interviewee-基础知识《一》
- 电脑使用者必备的文本编辑器,哪款适合你?
- Python实现繁体字和简体字的相互转换
- 初高中计算机课程有哪些,中学信息技术课程纲要(最新整理)
- 从六个方面讲解抢购软件需要具备的条件
- 如何用ffmpeg合并音频和视频?
- 若依vue版菜单点不开 Error: Cannot find module ‘@/views/system/user/index‘
- 自己退出微信小程序开发者权限
- BZOJ2339[HNOI2011]卡农——递推+组合数