2021.11.23 孤尽训练营D29 ——系统健壮性设计

大纲:代码评审、健壮性与鲁棒性、混沌工程

代码评审

如何做CR(code review)

  • 统一的编码与设计规范
  • 完整的技术架构说明与事例
  • 不定期的Review会议
  • 小项目(3个月内)可以10天/次,大项目(6个月以上)15天/次,前期可以安排密集一些,后期考虑1月/次

推荐工具:

  • Phabricator:Facebook开源的代码审查工具
  • Gerrit:非常强的CR + 代码托管工具
  • CheckStyle:代码规范检查工具

CR建议

  • PR内容一定要少
  • 至少一条正面评价
  • 对事不对人
  • 不要在review中讨论需求
  • 明确各模块负责人

健壮性与鲁棒性

健壮性(意译):异常情况、特殊环境、超限情况、依然能够稳定运行的能力

鲁棒性(形容词robust,音译)

健壮性度量:

  • 架构:负载均衡、容灾能力
  • 代码:参数校验、异常处理、分支覆盖
  • 环境:混沌工程、异地多活

负载均衡:

防止服务或者数据热点问题的出现,使得集群内的所有服务器的负载水位在同一个水平线上

  • 轮询法:按顺序轮流地分配到各个服务器上(可以加权)
  • 最小连接数法:根据服务器的连接数来分配流量
  • 随机法:流量随机分发
  • IP哈希法:保证IP地址请求在同一服务器上

容灾能力

  • 限流:有策略地丢弃部分用户请求
  • 降级:部分功能不可用,或用户体验被降级
  • 熔断:服务全部停止响应,以保护核心流程
  • 灾备:复制多份系统能力或解决数据核心服务单点问题

数据健壮性

  • 逻辑删除:杜绝物理删除
  • 定时本地冷备份:可以作为数据日志快照
  • 主备准实时备份:快速切换服务能力
  • 定时云端离线备份:防地震,防水灾

代码健壮性

2021.11.23 孤尽训练营D29 ——系统健壮性设计

面向失败架构

  • 网络抖动:甚至是断网,如何提示,恢复,切换
  • 服务超时:任何服务都要考虑超时没有返回的可能性
  • 弱电断电:多云,多地部署能力
  • 洪峰流量:流量打爆服务器后的架构健壮性

断电预案

2021.11.23 孤尽训练营D29 ——系统健壮性设计

断网处理

2021.11.23 孤尽训练营D29 ——系统健壮性设计

 测试健壮性

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

混沌工程

混动工程是在分布式系统上进行实验的学科,是一种未雨绸缪的心态。由薄弱的环节上,做到自我发现。特点是放置一个炸弹进去,控制爆炸半径,评估损伤和自我修复能力。

Netflix提出 Chaos Monkey

在开发混沌工程实验时,可遵循以下原则,将有助于实验设计:

  • 建立稳定状态的假设
  • 多样化现实世界事件
  • 在生产环境运行实验
  • 持续自动化运行实验
  • 最小化“爆炸半径”

 稳定性指标

2021.11.23 孤尽训练营D29 ——系统健壮性设计

2021.11.23 孤尽训练营D29 ——系统健壮性设计

 

2021.11.23 孤尽训练营D29 ——系统健壮性设计

 

上一篇:普天身份证虚拟读卡


下一篇:BUAA OS Lab4 系统调用与fork