尽管在线流媒体巨头Netflix运作的业务完全依赖亚马逊网络服务(AWS)的云平台,不过它声称,AWS周日爆出服务停运事件后,自己的服务很快恢复了正常――这表明了其构建基于云的“防故障”系统这种做法的重要性。
AWS在周日遇到重大故障后,构建可以抵御故障的云服务具有的重要性体现了出来。
AWS平台上的20多种服务开始出现故障后,互联网上的一些最大网站和应用系统随之间歇性地无法使用。
这起停运事件影响了弗吉尼亚州北部数据中心(亚马逊称之为US-EAST-1地区)负责运行的AWS服务。
Netflix、Tinder、Airbnb和IMDb等知名在线网站及服务的客户声称,服务受到影响的六到八个小时这段期间,访问出现了问题。这些问题还影响了亚马逊的产品,比如Echo,亚马逊的这个智能语音助理使用了名叫Alexa的基于云的语音识别系统。
问题似乎最早出现在周日太平洋夏令时凌晨3点,当时用户就开始遇到了AWS的NoSQL数据库DynamoDB出错率增加的现象。
然而,出错率增加和网络延迟这些问题随后开始扩大到另外大约22个服务:包括亚马逊的几大知名服务,比如AWS弹性计算云(EC2)、虚拟桌面服务AWS WorkSpaces以及AWS事件驱动计算服务AWS Lambda。
在短短几小时内,AWS就查明了DynamoDB遇到的问题的“根源”,指出这归咎于“管理表和分区信息的内部子服务出了故障”。
等到上午9点刚过,AWS就解决了DynamoDB的问题,声称服务运行恢复正常。到这个时候,大多数服务已正常运行,不过另外几项服务(比如AWS Auto Scaling服务)仍受到了影响,直到上午11:30才排除故障。
Netflix如何以乱治乱?
据亚马逊发言人声称,有一个AWS客户设法避免了这次停运引起的任何“重大影响”,那就是视频流服务网站Netflix。
据这位发言人称,这个在线媒体巨头依赖亚马逊网络服务,以媒体流的形式将电影和电视节目传输给全球5000多万户家庭,能够“迅速”将服务恢复到完全正常的水平。
帮助这家服务商经受住这次服务故障事件考验的,正是它竭力颂扬的“混沌工程技术”(chaos engineering)。
Netflix采用的混沌工程技术运用了Simian Army,这款软件有意对其系统造成严重破坏。Simian Army从多个方面攻击Netflix的基础设施:Chaos Monkey随机地禁用生产环境下的实例,Latency Monkey给客户机/服务器通信造成延迟,而主要法宝Chaos Gorilla模拟了整个亚马逊可用性区域出现停运。
通过不断给系统带来故障,这家公司得以增强防范问题的能力,比如周日影响AWS的问题。
在这种情况下,Netflix得以迅速将流量从受到影响的AWS地区,重定向到未受到影响的地区的数据中心。
Netflix之所以能做到这一点,就是因为它实施了所谓的多地区主动/主动复制。按照这种复制技术,其服务需要的所有数据都在不同的AWS地区之间加以复制,以便遇到故障后能迅速恢复。
Netflix在概述这种做法的一篇博文中表示:“地区性基础设施全面停运的可能性微乎其微,但是我们的变化速度有时太快了,会扰乱某个地区的关键服务,我们想让Netflix能适应任何复杂的底层依赖关系。”
Netflix负责高性能技术计算的前首席架构师Adrian Cockcroft在推特上表示,主动/主动复制技术增加了大约“25%”的成本,声称这种方法如同“保险单”。
他补充说:“额外成本主要是由于始终在两头对存储层进行100%的重复数据删除所致。”
Netflix使用了Apache Cassandra,这是一种开源NoSQL分布式数据库。Cockcroft表示,为了保持可用性,这家服务商必须在“所有地区”维护“几千个”Cassandra节点。
【本文来源:云头条】