系统健壮性

209 阅读2分钟

容灾能力

容灾(Disaster Tolerance),就是指系统在遭遇人为破坏/设备故障/自然等灾难时,在保证生产系统的数据尽量少丢失的情况下,保持生存系统的业务不间断地运行。


容灾与容错

容错(Fault Tolerance),指在计算机系统的软件、硬件发生故障时,保证计算机系统仍能工作的能力。

容错可通过硬件冗余、错误检查和热交换再加上特殊的软件来实现,

容灾必须通过系统冗余、灾难检测和系统迁移等技术来实现。

当设备故障不能通过容错机制解决而导致系统宕机时,这种故障的解决就属于容灾的范畴。


容灾能力主要的技术

限流:有策略地丢弃部分用户请求

降级:部分功能不可用或用户体验被降级

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

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


负载均衡

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

负载均衡常用实现方法

轮询法:按顺序轮流分配到各个服务器上(可加权)

随机法:流量随访分发

IP哈希法:保证IP地址请求到同一服务器上(就地/最近连接)

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


数据健壮性

  1. 逻辑删除:避免物理删除
  2. 定时本地冷备份:作为数据日志快照
  3. 主备准实时备份:快速切换服务能力
  4. 定时云端离线备份:防自然灾害,如地震、洪涝等

代码健壮性

需要参数校验的场合

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

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

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

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

5.禁止在POJO类中,同时存在对应属性xxx的isXxx()和getXxx()方法。

6.构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中

图片.png

封装:

封装是一种对象功能内聚的表现形式,主要是被封装的组件、类、方法的影响半径尽可能地小,这也是提升系统健壮性的一种思维方式