我是非典型理科男号主。 关注后你可以收获最硬核的知识分享, 最有趣的互联网故事
大家好,我是“非典型理科男”。今天跟大家聊聊稳定性建设相关的事情。
稳定性建设思路
我们有三种视角去看待高可用这件事:可用性计算公式、复杂系统理论、交易技术事故定级规范。从不同的视角看待事情,会导致不同的分析路径。
1.可用性计算公式—亚马逊
可用性定义
第一种理解可以从可用性计算公式(Availability Estimate)入手,涉及两个变量:故障概率、故障时长,增大MTBF、减小MTTR。
AvailabilityEstimate=MTBF/(MTBF+MTTR)。MTBF:theMeanTimeBetweenFailure,MTTR:MeanTimetoRecover
提高可用性三种方法
主要包含减少故障发生概率、减少故障恢复时间、制造故障发生概率(可控的)三个方法
为什么会需要人为制造故障发生概率?因为故障发生相应频次较低,没有办法很好地提前发现故障,而制造故障本质则能帮助解决。减少故障发生概率是know unnkown的做事, 制造故障发生概率是unkown unkown的做事。
从这三个策略推导的一些主要方法如下图示,参考了亚马逊《AWS Reliability Pillar 2019》。
2.复杂系统理论—Netflix
分布式系统具备复杂系统的一般特征,可以复杂系统理论来研究与指导分布式系统,该想法来自Netflix《Mastering Chaos—A Netflix Guide to Microservices》的启发。Netflix在业内有一系列产生重大影响的稳定性开源产品,包含Hystrix、Chaos Monkey、Zuul、aws-autoscaling等。
依据《What is a Complex System(James Ladyman etc.)》论文对复杂系统定义的研究,复杂系统的特征之一是系统主要维护 “无序性(disorder) vs. 鲁棒性(robust order)”这对矛盾的平衡稳定。当系统突破临界值、就会产生更大的disorder。从这对矛盾出发、有两个思路:既可以通过模拟环境增加无序性、激化矛盾,也可以增加稳定性能力鲁棒性、减少矛盾。
复杂理论的原则可概括为:随机、依赖和规模是影响系统稳定性的三大因素,分治、自治、反馈是守正之法,无序是出奇之法。从该原则推导的主要方法如下图所示。
3.交易技术事故障驱动—蚂蚁金服
影响事故定级的因素主要是两大类:资金损失、体验损失。
从避免资金损失、体验损失这两个策略归纳的一些主要方法,如下图所示。鉴于蚂蚁金服在金融领域的行业影响力,主要参考了蚂蚁金服TRaaS技术风险防控平台、将高可用与资金安全相结合。资金安全也是影响系统稳定性的一个重要因素。
交易事故拆解的稳定性方法(灰色部分源自《蚂蚁金服 TRaaS 技术风险防控平台》)
稳定性建设成熟度模型
稳定性建设设计方方面面的东西, 不能胡子眉毛一块抓。 需要定义稳定性的成熟度模型。
按照不同稳定性阶段重点实施相关措施。
稳定性核心是围绕风险管理,即RMMM(Risk Mitigation 风险预防, Risk Monitoring 风险监控,Risk Management and planning : 风险管理)
参照IIRM风险认证对于风险成熟度水平,可以将稳定性成熟度分为5个等级。
根据上面分享成熟度标准制定,不同成熟度模型对应的IT措施。
参考内容
人生杂谈
稳定性系列
架构设计
工程实践
Redis相关
Mysql
Mysql执行DDL操作怎么才能防止锁表,这篇文章值得读一读