Redian新闻
>
稳定性建设框架

稳定性建设框架

公众号新闻
来源 | OSCHINA 社区

作者 | 京东云开发者-自猿其说 Tech:京东物流 郑传洲

原文链接:https://my.oschina.net/u/4090830/blog/10106419

一、为什么要做稳定性建设

1、从熵增定律引出稳定性建设的必要性

物理学上,用 “熵” 来描述一个体系的混乱程度。卡尔・弗里德曼提出熵增定律,他认为在一个封闭的系统内,如果没有外力的作用,一切物质都会从有序状态向无序状态发展。
如果我们不希望系统变混乱,有什么办法呢?答案是对抗熵增定律,对抗熵增定律的方法是借助外力,让系统从混乱回归有序。举个例子:
下图中,我们使用 “熵” 值来衡量 “骰子系统” 的混乱程度,1(最大值)表示 “最混乱”,意味着我们不能控制 “投骰子” 的结果,每次投骰子的结果会在 1~6 随机出现,系统表现不稳定;1/6(最小值)表示 “最有序”,意味着我们能够控制 “投骰子” 的结果,系统表现稳定,比如我们希望每次投筛子的结果都是 6,我们可以引入作弊手段(即借助外力),让每次投骰子结果都是 6。
熵增定律同样适合软件系统,一个软件系统刚发布时是有序的,熵值趋于 1,随着不断迭代,慢慢变成混乱的、脆弱的,从而导致线上问题频发,熵值趋于 0,我们需要借助外力,即稳定性治理手段,提高系统熵值,让系统恢复稳定。

2、稳定性建设的意义

如下图分析,系统不稳定会产生真金白银的损失,因此,稳定性建设的意义是:不是让业务多挣钱,而是让业务不丢钱!

3、稳定性衡量公式

① 公式
通过如下公式衡量系统稳定性:Availability = MTTF / (MTTF + MTTR) ②公式说明
MTTF (Mean Time To Failure,平均无故障时间),指系统无故障运行的平均时间,取所有从系统开始正
常运行到发生故障之间的时间段的平均值,即:MTTF =ΣT1/ N。
MTTR (Mean Time To Repair,平均修复时间),指系统从发生故障到维修结束之间的时间段的平均值,即:
MTTR =Σ(T2+T3)/ N。
公式量化
通常是 “SLA 是几个 9” 去衡量,对应下表:
常见问题
问题:SLA 应该按照哪个维度去定义?接口、应用、业务?
答:都可以,只要讲清楚是接口 SLA,还是应用 SLA,还是业务 SLA 就可以。但注意:提到应用 SLA,应该等于核心接口的最差 SLA;提到业务 SLA 应该等于黄金链路的最差 SLA。
问题:SLA 时间计算周期应该多少?
答:都可以,主要讲清楚计算周期就可以,一般以年为单位更具代表性。

4、常见误区

①不要认为 “分布式环境是稳定的”
认为:网络是可靠的,带宽是无限的,网络的拓扑不会变,延时为 0,传输开销为 0
实际:网络会抖动,带宽有上限,存在 down 机导致的拓扑变化,存在响应超时的概率,等等。
②不要有 “确定性思维”,要有 “不确定思维”
认为:遵守经验法则,if x then y。举例:我见过天鹅是白色的,所以世界上所有天鹅都是白色的;这个系统一直运行良好,所以未来也不会有问题。
应该:世界是不确定的,if x then maybe y。举例:天鹅还有黑色的。
③不要 “甩锅”,要有 “主人翁精神”
认为:故障是因为他们系统挂了,我们只需要打电话通知一下,慢慢等着恢复就行。
应该:提前思考依赖系统故障了,我们如何让我们用户尽可能的正常运行;故障出现了,共同想办法解决问题。

二、业界现状

1、技术现状

互联网的发展,带来越来越大的流量,为了支撑越来越大的流量,架构也一直在演进:单体应用架构 -> 垂直应用架构 -> 分布式架构 -> SOA 架构 -> 微服务架构 -> 服务网格。当前流行的微服务架构中,在应用层面、基建层面上都会有一些保障稳定性的机制:
  • 应用层面的稳定性保障机制

以 SpringCloud 全家桶为例,提供了很多组件,帮助我们保障系统稳定性,如下图:
  • 基建层面的稳定性保障机制

基建层面上,也会有一些稳定性保障机制,如下表:

2、落地现状

根据所见所闻,当前技术团队做稳定性治理一般采用如下 2 种方法:
  • 运动式的搞一波稳定性建设

当线上故障频发,通常会搞个 “稳定性治理专项”,定义一些治理点,并给出方案,然后运动式的搞一波。一般经过治理后,稳定性会明显好转,但是由于是运动式的搞,随着业务不断迭代,根据 “熵增定律”, 稳定性又变差。
缺点:不能闭环的搞,治理时稳定性好转,不治理时稳定性变差,给人感觉技术团队一直出问题。
  • 点状的搞,针对每个点专项闭环治理

比如搞个 “慢 SQL 治理专项”,通过监控平台发现慢 SQL,给研发发工单,并考核时效;比如搞个 “限流治理专项”,让所有接口配置限流参数,配置限流告警策略。
缺点:研发会感觉稳定性专项很多,也不清楚价值,有时候会应付了事,达不到稳定性治理的目标。

三、稳定系治理应该如何开展

将稳定性建设分为 3 个阶段:事前预防,事中止损,事后复盘,针对这 3 个阶段,建设思路分别是:

1、事前预防

稳定性建设本质上是对抗熵增原理的过程,具体是通过一些技术手段(比如超时治理、限流治理、降级治理、慢 SQL 等),提前对系统可能出现的故障,建设应对措施,从而让系统按照设计目标去运行。
注意:稳定性治理的手段很多,每落实一种治理手段,稳定性就能提升一点,可以列出所有已知的治理手段,然后按照优先级逐个治理。

2、事中止损

按照稳定性衡量公式(如下图),降低 T2 或 T3 可以提升 SLA,因此,出现故障后,应该尽可能的降低 T2 和 T3。降低 T2 的方法是尽快发现系统出现故障,需要依赖监控和告警能力;降低 T3 的方法是尽快解决问题,需要先止损后找原因,需要一套明确的 SOP 提高效率。

3、事后复盘

复盘的目标不是定责,而是为避免再犯,因此,在复盘过程中要追到直接原因和根本原因,这 2 者有很大区别:直接原因指的是因果关系,表达 “因为干了什么,所以导致什么”;根本原因是流程规范、认知迭代层面的问题,比如 “因为分支规范不是 master 上线,导致上丢代码,如果改用 gitflow 则能够能够完全避免上丢代码的问题”。
关于直接原因和根本原因的举例:陈胜吴广起义,直接原因是:下大雨,可能会迟到,迟到要杀头,所以造反了;根本原因是:秦朝严苛的制度,即使没有那场雨,即使没有陈胜吴广,也会有下一场雨,下一个张胜某广,因为别的原因进行起义。

四、稳定系治理框架

如上一章节所述,当我们从 “事前预防,事中止损,事后复盘” 的角度去挖掘稳定性治理手段,会发现有很多业界流行的手段,比如超时治理、限流治理、系统隔离、常态化压测、慢 SQL 治理等等。
然而技术资源永远有限,能够拿出 15% 的比例做稳定性治理,已经很不错了;另外,业务的不同发展阶段需要的稳定性手段不一样,不同稳定性治理手段的 ROI 也不一样,因此,我们需要回答一个问题:在有限的研发资源下,如何去按部就班的去搞稳定性治理。
最佳实践是:搭建一个稳定性治理的框架,把稳定性治理手段填充进去,根据业务所处阶段,选择适合当下的稳定性治理手段,可以通过如下的表格进行管理:
备注:稳定性治理框架建起来后,治理手段可以随时增加、减少,框架的价值是给我们一个全景图,让我们知道该干什么、在干什么,而不是瞎干。

五、具体治理方案

根据上一章节的稳定性治理框架,接下来要做的就是针对某个治理手段,出具体的治理方案,要求具体方案能够形成闭环,并融入到研发过程中去,比如:
  • “慢 SQL 治理” 的落地方案

  1. 定义慢 SQL 的标准,即执行时间超过多少 ms 算慢 SQL

  2. 通过监控平台发现慢 SQL

  3. 给研发负责人发治理工单

  4. 验收治理效果

  • “超时治理” 的落地方案

  1. 为每个接口定义合适的超时时间

  2. 每周巡检一次接口,发现超时时间不合理的接口

  3. 修正超时时间

六、写在最后

稳定性治理是一个长期的过程,要把稳定性的工作融入到研发过程中,一方面要有意识尽量别埋坑,比如微服务强调中间件隔离,我们就不要混用中间件了,另一方面稳定性问题要一步到位,比如治理超时时间,要有个完整规范定义超时时间,并在研发过程中对新增接口、历史接口都配置合理,且能够动态更新。

END



7款好用的开源Bug跟踪管理工具



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
everyone has a destiny and not everyone follows it?Advanced Science:提高无MA钙钛矿太阳能电池效率和稳定性阿拉小优创始人李茂银:新常态下,“要素重组”成母婴零售渠道确定性出路习近平就深入推进自由贸易试验区建设作出重要指示强调 勇做开拓进取攻坚克难先锋 努力建设更高水平自贸试验区【教育】陆家嘴这些地标性建筑昨晚为老师们点亮!你看到了吗?新城建设有哪些发展设想,如何进一步推进乡村振兴,怎样对接融入临港新片区……这场发布会详解奉贤未来之城建设两性发生关系后,女人哪种姿势最掉价,希望你没有!(30-55女性建议收藏)波士顿科学与先瑞达医疗签署合作框架协议及服务框架协议人类总喜欢N次踏入同一条河流而不自知让广大老年群体共享上海现代化建设成果!陈吉宁龚正察看基本养老服务体系建设情况,向全市老年人致以节日问候和诚挚祝福聚焦城市公共空间品质提升、无障碍环境建设等工作,龚正今天调研城市建设领域民生项目周日爱美丽小三比赛,我顺便跑步佛教修行的框架图 | 十、修行的框架注意:这种癌前期症状隐匿不易被发现,高风险男性建议从40岁开始筛查!不确定性时代下的新投资范式陈吉宁龚正用一整天时间实地调研新城规划建设并召开推进会:在实践中不断深化认识,推动“五个新城”建设加快上台阶上水平美国银行系统正面临稳定性危机?消费贷是个大问题!中国电子与中国移动签署战略合作框架协议:将探索建设联合创新载体乌俄最新:历史的十字路口!决定性时刻到了!灵魂三问之稳定性摸排国寿安保基金黄力:贯彻绝对收益理念,追求产品长期稳定性科学家警告:这场"无声危害"正在威胁大城市稳定性!硫化物固态电解质对金属锂的热稳定性 | 络绎学术Online第165期股市和社会都需要更多信心,信心来自思想解放、法治和确定性最好的 Go 框架就是不用框架?长篇小说连载《此世,此生》第五十二章三真正的高手,在于稳定性与可持续性!SRE自动化工程实践和稳定性运营 | 8月3日TF115 报名无趣才能稳定,稳定才能长久|9月17日 一席上海定性了!蚂蚁被罚71.23亿!马云今年失去控制权表面情绪稳定,背地​偷偷发疯?别再让“伪情绪稳定”逼疯你、掏空你——真情绪稳定vs假情绪稳定,看这6点就知道!desire for power and control is tied to a curse passed down thr情绪稳定=没脾气?关于情绪稳定的8个误解投资的收益性重要还是稳定性重要?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。