本文转载于本人的微信公众号中的文章,最新文章请关注右侧公众号。
目录
背景与挑战何为系统稳定性影响系统稳定性因素如何保障系统稳定性总结一、背景与挑战
1. 背景
3月3日凌晨,阿里云宕机故障 --- 惊魂三小时的故障,让华北地区不少公司的APP、网站和内部系统纷纷瘫痪。消息瞬间占领的社交、媒体的头条。有网友调侃道到,“一大波程序员、运营和运维从被窝爬起来去公司干活了”、“ 阿里云一年一宕机,今年特别早”。
拥有雄厚资金、技术和大量的人才的阿里云尚且如此,那么我们中小公司又要如何见招拆招? 在文章中提到,我们面对的业务主要满足两大类业务需求:面向餐饮企业在餐饮新零售下的经营需求、运营需求和面向产品及运营团队。可以理解为我们就是为餐饮企业提供信息化解决方案的ISV。没错就你大脑中浮现的,类似给三大运营商、电力企业等承接做信息化系统的公司。 公司的SaaS平台中,有一条产品线 --- 外卖(此外卖非彼美团、饿了么外卖)姑且称之为“云平台外卖”,我们在哪些方面做了稳定性、又是如何落地的?我们从一个用户视角的订单全生命周期流程中,来看下我们“云平台外卖”处在什么环节:-
以普通用户的视角来看,一个外卖订单从下单后,会经历支付、商家接单、配送、用户收货、售后及订单完成多个阶段。
-
以技术的视角来看,每个阶段依赖于多个子服务紧密配合,确保订单顺利完成。
2. 挑战
-
流程较长且实时性要求高
外卖订单业务是一个需要即时送的业务,对实时性要求很高。从用户订餐到最终送达用户,一般在1小时内。如果最终送达用户时间变长,会带来槽糕的用户体验。 -
订单量高且集中
一天内订单量会规律变化,订单会集中在中午、晚上两个“饭点”附近,而其它时间的订单量较少。这样,饭点附近系统压力会相对较大。
我们的“云平台外卖”是处在商家接单的环节;商家接单,也是一个非常复杂的处理流程,我们抽象成简单的流程:
我们面临的挑战:
-
“实时”接单无延迟
-
“实时”接单无丢单
任何一种情况发生,客户都会面临着营业额减少甚至客户门店被外卖平台关闭的风险。
二、何为系统稳定性
软件系统的稳定性,很难有一个恰当的模型表述。如果采用数字量化的话,我们也可以采用SLA服务协议说明系统的稳定性。
正所谓“千里之堤,溃于蚁穴”,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。三、影响系统稳定性因素
软件系统稳定性影响因素比较多,我们从软件工程开发过程中,梳理出常见的因素:
我们要在软件设计的阶段,要充分考虑系统稳定性因素;一旦考虑不周,当线上系统面临快速增长的业务时,噩梦就会连连。四、如何保障系统的稳定性
1. 系统稳定性保障的指导思想
-
负反馈调节法
-
确定目标,并加入控制条件;根据反馈结果不断调整,朝着可能性空间缩小的方向发展,使目标差在一次次控制中慢慢减少
2. 系统稳定性保障的基本准则
-
规范流程
-
自己不作死
-
不被队友搞死
-
多部门间的协作联动
3. 系统稳定性保障的技术措施
我们从多个方面通过严谨的流程、架构、技术、测试以及运维保障系统等手段来保障系统的稳定性。但是,要保障系统的持续健康运行,还需要多部门间的积极的协助联动。
五、总结
上述梳理,我们知道线上系统故障主要是:
-
自身系统的问题
-
外部系统的问题
-
基础设施的问题
所有的软件系统问题,最终症结在于架构、产品质量和技术工程方面的问题。
需求千万条,质量第一条。架构不合理,开发运维两行泪。
-EOF-