1. 代码评审
1.1 代码评审作用
熵减的过程、团队成长、提升代码规范度、提升代码质量
1.2 如何做CR
统一的编码与设计规范
完整的技术架构说明与示例
不定期的Review会议
小项目10天/次,大项目15天/次,前期可以密集一些,后续考虑1月/次
2. 健壮性与鲁棒性
2.1 含义
异常情况、特殊环境、超限情况,依然能够稳定运行
2.2 健壮性度量
(1)架构:负载均衡、容灾能力
(2)代码:参数校验、异常处理、分支覆盖
(3)环境:混沌工程、异地多活
3. 如何构建健壮性的系统
3.1 负载均衡
(1)作用:防止服务或数据热点问题的出现,使得集群内的所有服务器的负载水位在同一个水平线上
(2)算法:轮询、随机、IP哈希、最小连接数
3.2 容灾
限流、降级、熔断、灾备
3.3 数据健壮性
逻辑删除、主备准实时备份、定时本地冷备份、定时云端离线备份
3.4 代码健壮性
(1)POJO 属性使用保障类型、POJO 属性不设置默认值、DO 属性类型与数据库字段匹配、getter/setter 不增加业务逻辑、POJO 不同时存在 xxx 属性的 isXxx() 和 getXxx() 方法、构造方法无业务逻辑
(2)异常处理
(3)封装:是一种对象功能内聚的表现形式,主要是被封装的组件、类、方法的影响半径尽可能小
4. 面向失败的架构思维
4.1 场景
网络抖动、服务超时、弱点断电、洪峰流量
4.2 防范风险方法
(1)任何环境都不可信赖
(2)任何外部依赖接口都可能出错
(3)任何异常都要响应和处理
(4)任何行为都要记录日志
(5)任何系统上线都要严酷的测试
4.3 测试健壮性
功能测试、性能测试、稳定性测试、混沌工程
4.4 分支覆盖
代码覆盖率、条件判定覆盖、路径覆盖
5. 混沌工程
5.1 开发混沌工程实验原则
建立稳定状态的假设、多样化现实世界事件、在生产环境实验、持续自动化运行实验、最小化“爆炸半径”
5.2 流程
(1)准备:流量录制,环境搭建
(2)执行:开启流量,注入故障
(3)检查:执行 SOP,监控数据
(4)恢复:验证,恢复故障