这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战
代码评审
程序员的的分级
- 写出计算机可以理解的代码
- 写出自己未来可以理解的代码
- 写出别人可以自我理解的代码
程序员的自我修养
- 写出好代码-->技术水平不断提高-->帮助别人成长-->写出好代码
代码评审
- 简称CR
- 熵减的过程
- 减少系统混乱
- 提高代码质量
- 工程师相互review,扫除知识盲区,提升代码的质量
- 提升代码规范度
- 通过代码审查,发现纠正不规范情况,慢慢形成良好开发规范
如何做好CR
- 统一的编码与设计规范
- 完善的技术架构说明与事例
- 不定期的Review会议
CR建议
- 对事不对人
- 至少一条下面评价
- PR内容一定要少
- 不要在review中讨论需求
- 明确各模块负责人
两个CR实战
健壮性与鲁棒性
什么是软件的健壮性差
- 一个人经常生病的话那我们说他体质差。软件会有黑客的各类破解,病毒或者在使用中因为数据 错误、操作错误、设计功能问题等等导致软件的可用性差,即称为软件 的健壮性差。
健壮笥与鲁棒性
- 健壮性
- 意译
- 异常情况、特殊环境、超限情况下依然能够稳定运行的能力
- 鲁棒性
- 音译
- 形容词robust强健的,强壮的,耐用的,坚固的,富有活力的
健壮性度量
- 架构,负载均衡、容灾能力
- 代码,参数检验、异常处理、分支覆盖
- 环境,混沌工程、异地多活
如何构建健壮性的系统
负载均衡
- 负载均衡是防止服务或者数据热点问题的出现 ,使得集群内的所有服务器的负载水位在同一个水平线上
- 轮询法
- 按顺序轮流地分配到各个服务器上(可以加权)
- 最小连接数法
- 根据服务器的连接数来分配流量
- IP哈希法
- 保证IP地址请求到同一服务器上
- 随机法
- 流量随机分发
容灾能力
- 限流
- 有策略地丢弃部分用户请求
- 熔断
- 服务全部停止响应,以保护核心流程
- 灾备
- 复制多份系统能力或解决数据核心服务单点问题
- 降级
- 部分功能不可用或用户体验被降级
数据的健壮性
- 数据是企业生命线
- 逻辑删除
- 杜绝物理删除
- 主备准实时备份
- 快速切换服务能力
- 定时云端离线备份
- 防地震,防水灾
- 定时本地冷备份
- 可以作为数据日志快照
面向失败的架构思维
面向失败架构
- 网络抖动
- 甚至是断网,如何提示、恢复、切换
- 服务超时
- 任何服务都要考虑超时没有返回的可能性
- 弱电断电
- 多云、多地部署能力
- 洪峰流量
- 流量打爆服务器后的健壮性
混沌工程
混沌工程(ChaosEngineering):是在分布式系统上进行实验的学科,是一种未雨绸缪的心态.由薄弱的环节上,做到自我发现.特点是放置一个炸弹进去,控制爆炸半径,评估损伤和自我修复能力.
混沌原则
在开发混沌工程实验时,可以遵循以下原则,将有助于实验设计
- 建立稳定状态的假设
- 多样化现实世界事件
- 在生产环境运行实验
- 持续自动化运行实验
- 最小化“爆炸半径”