系统稳定性治理最佳实践
稳定压倒一切,没有稳定就没有生成。国家是如此,业务系统也是如此。老子说,“治大国若烹小鲜”,治理系统也是要做到同样,要掌握火候,精选食材,用料恰当,辅以煎炒烹炸煮,则方能出一盘好菜。
很多同学优先考虑公务员、教师等职业,其中非常重要的一个因素就是这类职业相对稳定。应用系统稳定性也是如此,是所有因素里的前提。
试想一下,支付宝经常打不开,你还敢存钱进去吗?
试想一下,微信经常卡死,你会不会烦躁想骂人?
试想一下,京东一支付就系统繁忙,你慌不慌?
那么系统稳定性该如何治理?有没有什么标准或者可以放之四海皆准的方法论和实践?
系统稳定性问题
一个系统稳定性取决于很多因素,同样也受制于很多因素。
为什么丰田可以40万公里不修,而某些国产车开了1年,除了喇叭不响,其它地方都会响?
为什么纳智捷不停车邮箱根本加不满?
类似的,一个系统的稳定性也受制于很多方面,总结下来大致是以下几点
硬件及网络影响
这个是指应用的容器层面的影响,包括服务硬件、机房、网络带宽等。这类因素往往对于开发人员来说不可控,比如管道工人挖断光缆、运营商网络抖动或延迟等。
这类问题一般来说很难预期,也很难针对问题进行专项治理。覆盖全世界网络,根本没有人可以保证网络绝对的稳定性,也根本无法保障一台服务器永远不宕机。
高并发大流量
对于一般的系统来说,流量往往不会成为瓶颈,一般的中小企业做的都是垂直类、行业类业务,总体覆盖人群一般不会很多,百万级已经是天大的调用量了,大部分的系统估计只有几十到几百的QPS。针对初级的访问流量,尚且不用做高并发大流量的设计,遵循普通的开发准则即可覆盖99%以上的业务了。
但是针对全球型、全国型的国民级应用,则高并发和大流量是主要要考虑的一个TOPIC,不仅在技术方案上就做重点设计规划,还需要持续关注和治理专项。
比如微信DAU达到了10亿级别,这个量级对所有相关的系统都提出了很大的挑战。一个全员推送不当,可能导致全国人民微信抖三抖。
比如淘宝双十一高峰期需要处理66W笔订单,这个量级是一般的系统根本无法满足的。
方案设计缺陷
方案缺陷指技术方案或者产品逻辑设计有问题,在满足一定的条件时,可能不会出问题,但是走了某个流程或者流量到了某个层次就凸显异常问题。
编码缺陷
这个是最多的一类问题&#x