在互联网及互联网+发展的高速期,简单的单体系统已经无法满足互联网用户的需求,逐渐从单体系统向分布式微服务架构系统演进。演进历程可以概括为以下几个阶段:
从简单的单体系统架构演进到复杂而庞大的分布式微服务架构系统,系统的复杂度不断的提高,这个架构模式在为开发者提供便利的同时,也带来了很多稳定性、系统韧性的挑战。听过一句话:往往越简单的系统拥有越好的可靠性。
复杂的分布式系统的会有复杂的机制来实现数据一致性、容错能力、限流能力。那么如此复杂的系统如何来保证系统“质量”呢?
往往这里的“质量”都是通过测试人员测试来保证的。来看一个简单的微服务架构:
一般测试人员都是从业务逻辑角度进行功能性测试,系统韧性的上限质量往往是靠有经验的架构师以及开发人员保证的,因为他们更加了解整个复杂系统的架构设计细节;而系统韧性的下限质量是无法简单通过业务测试得到的。因为测试人员不了解系统的架构,也无法进行覆盖到系统架构层面的测试,比如无法模拟网络延迟等会在生产环境中产生的非预期情况。但实际情况就是,往往人们假设极小概率发生的事件给整个系统带来了崩溃性打击。
一个闰秒引起的系统崩溃的案例:
在2012年6月30日的深夜,许多人和往常一样正在Reddit上快乐水贴,突然发现,自己的回复发不出去了。 闰秒故障在Reddit上发生了,起初,Jason Harvey并没有意识到是闰秒加入的问题,仅仅认为是网络质量差的原因。但是问题持续了半个多小时,他们意识到了问题的严重性。最后他们追溯到他们的一组运行着Linux操作系统的服务器上,他们发现,由于没有正常适应当天晚上加入的闰秒,这组服务器几乎完全停顿下来,无法做任何响应。
从客观来看,类似的问题我们有的可以提前预知到,有的确实完全无法避免(比如自然灾害导致机房不可用等因素)。既然我们无法真正避免一切灾难的发生,最好的办法就是,面向灾难设计,探索系统的韧性边界,验证系统在灾难发生时的恢复能力。简单的系统可能会进行单机宕机就能覆盖绝大部分故障场景,但是一旦系统依赖的服务数量上升,使用的中间件增多,需要进行韧性探索将不再是一个简单的工作了,为了将这部分韧性探索做到极致,就不得不以一个工程化步骤来进行。在这方面,Netflix首先提出了Chaos Monkey(在系统中捣乱的”混沌猴子“)来对目标系统进行随机的宕机测试,评估系统在可用性,容错性等方面的韧性边界,“混沌工程”由此诞生。
腾讯云混沌演练平台(CFG),为您提供安全、易用的的故障注入服务,助您打造稳固如磐石的云架构系统。 无论您是独立开发者、运维工程师还是安全专家,腾讯云混沌演练平台都是您不可或缺的利器:
你了解你的云上服务的稳定性边界吗?还在为云上稳定性而忧虑吗? 马上免费试用腾讯云混沌演练平台,体验一场真实的混沌工程实验吧!
点击链接,立即了解更多关于腾讯云混沌演练平台的信息,一起开启稳定性建设的新篇章!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。