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

简介: Picture from Gremlin我们“雇佣”了一只大猴子,只为“搞破坏”,不开玩笑。这只猴子是用来做什么的?从程序员的视角来看,提高系统稳定性的方法无外乎三种:通过各种技术手段,例如在容器和调度、微服务、消息、软负载和配置中心等纬度提高系统和架构的健壮性;提升监控的广度和深度,生产中一旦出现问题,能快速定位,给出解决方案;生产就是大考,谁也不知道升学考中会出现什么样的试题,建立故障演练机制,把各类可以预见的故障提前演练出来,例如随机杀节点、延时响应,甚至中断机房;这只猴子就是我们雇来做破坏,进行故障演练的队友。

_2019_02_27_8_44_30

Picture from Gremlin

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

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

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

  • 通过各种技术手段,例如在容器和调度、微服务、消息、软负载和配置中心等纬度提高系统和架构的健壮性;
  • 提升监控的广度和深度,生产中一旦出现问题,能快速定位,给出解决方案;
  • 生产就是大考,谁也不知道升学考中会出现什么样的试题,建立故障演练机制,把各类可以预见的故障提前演练出来,例如随机杀节点、延时响应,甚至中断机房;

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

这只猴子最早来源于哪?

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

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

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

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

IMG_3521

图片来源于社交网络,出处未知

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

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

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

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

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

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

_2019_02_28_8_05_35

图片来源于 QCon·北京

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

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

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

_2019_02_28_8_05_44

图片来源于 QCon·北京

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

  • 任何故障,一定是硬件如IaaS层,软件如PaaS或SaaS的故障, 并且有个规律,硬件故障的现象,一定可以在软件故障现象上有所体现;
  • 故障一定隶属于单机或是分布式系统之一,分布式故障包含单机故障;
  • 对于单机或同机型的故障,以系统为视角,故障可能是当前进程内的故障,比如:如FullGC,CPU飙高; 进程外的故障,比如其他进程突然抢占了内存,导致当前系统异常等;
  • 人为误操作,或流程不当导致;

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

_2019_02_28_8_05_52

图片来源于 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/

相关文章
|
5月前
|
存储 弹性计算 安全
阿里云服务器是什么?可以做什么?最新活动价格是多少?一文全看懂
云服务器ECS是阿里云众多云产品中,最受用户关注的产品,阿里云服务器提供多样化的计算能力,支持x86、Arm架构,涵盖CPU、GPU等多种服务器类型,满足各种用户需求。本文为大家详细介绍阿里云服务器是什么?可以做什么?以及最新活动价格情况,以供大家更深入的了解云服务器产品和价格情况。
457 3
|
6月前
|
传感器 算法 机器人
减速机行业场景化技术方案与数据化选型指南
本文系统解析减速机在新能源、机器人、智能物流等领域的场景化应用,结合15年工程经验与12个典型案例,构建涵盖选型校核、结构优化、维护策略的全流程技术方案,配套数据化计算工具与故障诊断算法,助力实现精准匹配、可靠运行与降本增效。
减速机行业场景化技术方案与数据化选型指南
|
6月前
|
弹性计算 安全 应用服务中间件
阿里云轻量应用服务器怎么样?多规格收费标准、最新活动及适用场景介绍
阿里云轻量应用服务器怎么样?轻量应用服务器凭借其卓越的易用性、超高的性价比以及一站式服务体验,深受个人开发者、初创企业以及中小企业等用户群体的青睐。目前新老用户购买轻量应用服务器2核0.5G月付价格28.00元1月起、2核1G月付价格34.00元1月起,年付的话还有2核2G峰值200M带宽搭配40G ESSD云盘,每天10点和15点开启的抢购价为38元1年。本文将围绕阿里云轻量应用服务器的收费标准、最新活动价格以及适用场景展开解析,旨在让大家更深入的了解这款轻量级云服务器产品。
|
5月前
|
人工智能 搜索推荐 前端开发
AI英语学习APP的开发
2026年AI英语学习APP将聚焦实时交互、情感共鸣与超个性化路径。融合多模态口语助教、自适应学习与沉浸式写作优化,结合GPT-4o、Whisper、ElevenLabs等前沿技术,打造有温度的AI外教。通过数字人、离线模式与游戏化设计,实现高效、沉浸、可落地的语言学习新体验。(238字)
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
|
6月前
|
消息中间件 算法 API
三大电商API应用对比:淘宝京东拼多多谁能笑到最后?
对比主流电商平台API:淘宝架构稳定、安全性高,适合全链路整合;京东物流性能领先,适合高效物流场景;拼多多社交裂变能力强,适配社交电商。结合分层架构、微服务与事件驱动,建议按业务需求选择。
|
8月前
|
Kubernetes Cloud Native 云计算
云计算与云原生技术探索
🌟蒋星熠Jaxonic,云原生探索者!以代码为舟,遨游技术星河。专注容器化、微服务、K8s与DevOps,践行GitOps理念,拥抱多云未来。用架构编织星辰,让创新照亮极客征途!
云计算与云原生技术探索
|
人工智能 监控 Java
基于 eBPF 技术打造的 LightAPM 应用监控,效果如何
本文介绍如何利用LightAPM解决“古早应用”(如银行老核心、证券交易系统)的监控难题。这些基于C/C++或老旧JDK的系统封闭且难以改造,传统字节码增强技术无法适用。通过部署集成eBPF技术的OneAgent,LightAPM实现无侵入、开箱即用的监控,自动绘制服务拓扑、发现服务并采集应用与基础设施指标,支持多JDK混合环境。结合因果AI,还可智能告警与根因定位,为遗留系统提供高效可观测性方案。
基于 eBPF 技术打造的 LightAPM 应用监控,效果如何
|
9月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
782 11
|
9月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
473 5