DayXX 系统健壮性设计

代码评审

烂代码的标准

  1. 不遵守diam规约

  2. 代码像迷宫

  3. 代码流程复杂或不清楚

  4. 代码执行效率低

  5. bug 多

烂代码的后果

死循环: 不断出现的坑 -> 进度紧张 -> 到处灭火

对自己的要求

1.写出计算机能理解的代码

2.写出自己未来可以理解的代码

3.写出别人可以自我理解的代码

CR 常用的工具

Phabricator

Gerrit

CheckStyle

实战

健壮性

健壮性的定义:在遇到异常情况时,依然可以运行的能力。

架构

负载均衡

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

负载均衡的方法

轮询法:按顺序轮流地分配到各个服务器上。

最小连接法:根据服务器的链接数来分配流量。

随机法:流量随机分发

IP哈希法:保证IP地址请求到同一服务器上。

容灾能力

限流:有策略丢弃部分用户请求。限流和降级是不同的。

降级:部分功能不可用。

熔断:服务全部停止响应,以保护核心流程

灾备:赋值多份系统能力或解决数据核心服务单点问题

Sentinel

流控规则配置

感知机制

不要物理删除;主备切换

代码

代码健壮性:

  1. 所有的 POJO 类属性必须使用包装数据类型.

  2. 定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。

  3. 定义数据对象 DO 类时,属性类型要与数据库字段类型相匹配

  4. getter/setter 方法中,不要增加业务逻辑

  5. 进制在POJO类中,同时存在对应属性 xxx 的 isxxx() 和 getxxx() 方法

  6. 构造方法里进制加入任何业务逻辑。

  7. 封装:被封装的范围要尽量小。如果要扩展的话,再封装一下。

参数校验;

异常处理;

分支覆盖;

注意条件判断时的覆盖情况。条件组合的覆盖。

环境

混沌工程;

异地多活;

断网断电之后造成的影响

面向失败架构

思维就是力量

目的是为了防范已知的确定性风险和位置的不确定性风险

测试健壮性

功能测试:想象用户的一切可能行为进行正确性验证

稳定性测试:确定系统长时间在正常压力情况下运行的有效性

性能测试:系统能够体用的最大服务级别的能力

混沌工程:确定贡献上系统故障的恢复能力

自动化测试:一般用于核心接口的输入输出:不经常改动,所以可以用自动化脚本来测试。

混沌工程

Chaos Engineering

是在分布式系统上进行实验的科学,是一种未雨绸缪的心态。

建立稳定状态的假设

多样化实现世界事件

在生产环境运行实验

持续自动化运行实验

最小化“爆炸半径”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值