(12)做好系统稳定性建设(上)

稳定性建设四要素:人、工具、预案、目标

稳定性建设四个方向:根基牢(45%)日常(30%)预案(15%)容量(10%)

一、稳定性建设四要素

人、工具、预案和目标。

(1)人

主导是开发、测试和运维,还有安全、产品等参与,在OKR中背负一部分,合规化,有迹可循,

1)编码规范:对外接口命名、统一异常父类、异常码规范、对外抛异常还是返回错误码、统一三方库版本、哪些场景必须用内部公共库、埋点日志怎么打、统一日志、监控切面实现等

  为什么统一异常父类和异常码:统一后,很多切面就可公共库做,如监控、出入口日志打印,异常拦截,压测标识透传、特殊的字段埋点等。例:可能不同模块异常父类不同的,订单模块异常父类OrderException、交易支付TradeException,OrderException和TradeException的父类BizException(定义在通用共公共库中),统一200代表正确码,异常6位数字(前3位模块,后3位异常类型),

2)公共库:内部公共库(也升级迭代),如日志库、HTTP库、线程池库、监控埋点库等,都“久经考验”应强制用,。

3)项目结构规范:统一结构快速接手项目

4)数据库规范:库名、表名、索引、字段、分库分表规范明确,分表数不用2的幂(很多人认为计算分表时用位运算更快,这个开销相比数据库操作可忽略),1024张表用质数(接近1024的1019),数据分的更均匀

(2)工具

能做什么?做到什么程度?如何降低稳定性工作成本?

日志采集分析检索(滴滴Arius)、监控告警(滴滴Odin Metrics)、分布式追踪系统(Google的Dapper、滴滴把脉)、自动化打包部署(滴滴One Experience)、服务降级系统(滴滴SDS)、预案平台(滴滴911)、根因定位(记录所有故障发生前所有系统变更事件)、放火平台等。

内部公共库,接入Odin Metrics和把脉几乎不要做额外工作(接入把脉要提日志采集工单,头疼),不要吝啬工具投入,用或参考开源框架

(3)预案

故障时通知:团队内其他成员、Leader(寻求帮助)和客服、上游业务开发等可能影响方

选出协调者,什么情况选

协调者职责:排查和止损,避免介入同学重复工作,持续和影响方沟通。

操作开关谁决策:对于排查问题和止损同学来说,查代码看开关名,关掉一个功能需多个开关,什么条件能操作

止损方式、原则善后方案谁拍板

(4)目标

星辰花将故障分成P0至P5六个等级,P0、P1、P2属重大:

二、稳定性建设四个方向

(1)根基牢(45%)

CR:闭环搞定,时间长容易懈怠,大于4人日项目进小黑屋CR

设计:讲最终和淘汰方案!

提测:补单测、自测、联调、通过用例

上线流程:小流量集群灰度(单量少城市做小流量集群),再线上灰度,观察线上大盘和日志,有问题快回滚

(2)日常工作在(30%)

监控告警、及时消灭线上小隐患、跨团队沟通、复盘、定期会议来总结

(3)预案(15%)

去定位和止损复杂的线上问题时。紧急预案重要,动态预案才有效

1)分场和完善:分场景整理如MySQL、MQ、发单接口故障。如有损,副作描述清楚。

2)验证预案:借助放火平台和降级系统,给主流程非核心依赖注入故障

(4)容量(10%)

老板问你明年单量要Double要预算,要规划你凭什么给?压测容量来预估。摸到分布式系统中“短木板”才知道系统吞吐量(容量)

投入10%的精力来摸容量、扩容量、水位预警等。线上有大约10%故障和容量有关,扩容三点:

1)全链路压测:老瓶颈可能消失,新的出现,之前结果失效,定期去摸这个阈值。

2)扩容演练:紧急时候,弹性云扩容比修改阈值重新上线更快

3)多活建设


https://blog.csdn.net/manzhizhen/article/details/103642565

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容