系统的健壮性设计(四)

系统的健壮性设计(四)

面向失败设计

世界上没有完美的东西,系统也一样,不论想的如何完美还是可能出现意料之外的bug。所以需要设计者预先就考虑出现失败的情况处理,不管是对业务或功能(功能的性能、功能的容量、功能的稳定性)都需要。面向失败的设计,就是以“失败”为对象,天然为了失败而存在的设计思想。
在软件生命周期中,会出现各式各样的问题,我们可通过面向失败设计,防范和监控已知的确定性风险及未知的不确定性风险:

  1. 任何环境都是不可信赖的;
  2. 任何外部依赖接口都可能出错的;
  3. 任何异常都需要响应和处理的;
  4. 任何行为都需要日志记录的;
  5. 任何系统的上线都需要严酷的测试

测试健壮性

  1. 功能测试:想象用户的一切可能行为进行正确性验证
  2. 稳定性测试:确定系统长时间在正常压力情况下运行的有效性
  3. 性能测试:系统能够提供的最大服务级别的能力
  4. 混沌工程:确定线上系统故障的恢复能力

分支覆盖

  1. 代码覆盖率
  2. 条件判定覆盖,特别是条件组合上效果
  3. 路径覆盖,==每条可能的路径(排列组合)都包含了

混沌工程

混沌工程(Chaos Engineering), 是在分布式系统上进行实验的学科,是一种未雨绸缪的心态。由薄弱的环节上,做到自我发现。特点是放置一个炸弹进去,控制爆炸半径,评估损伤和自我修复能力。
Netflix 提出Chaos Monkey
混沌工程是识别业务系统的稳定性指标,并建立观测(监控)体系

混沌原则

开发混沌工程实验时,可遵循以下原则:

  1. 建立稳定状态的假设;
  2. 持续自动化运行实验。业务系统在持续变化,演练也需要例行化、自动化。
  3. 多样化实现世界事件;
  4. 最小化“爆炸半径”:
    • 按照影响从小到大进行演练;
    • 控制演练业务的故障半径(爆炸半径),防止从演练转化为线上事故。
  5. 在生产环境运行实验:
    • 最终要在生产环境中演练,这才是最真实的结果;
    • 但可以从非在线开始,逐步进行线上环境。

混沌工程的流程

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值