架构高可用
什么是架构的高可用
从哪些方面来保证高可用
- 硬件服务器保证高可用。
- 软件应用程序保证高可用。
高可用的手段
- 无状态化设计,随时可进行服务的上线和下线操作。
- 幂等性设计,重要交易需要设置幂等设计,同一个请求发送多次不会受到影响。
- 异步设计,适当引入队列,非紧急的计算或者不需要同步返回的可以使用队列进行异步处理。
- 缓存,容错,系统需要支持限流,失败重试等机制,确保一次不成功,会自动调用第二次。
- 服务治理,服务的监控需要了如指掌(硬件方面的监控和应用程序方面的监控)。
- 监控方向有:
- 请求的平均耗时
- 请求的异常条数
- 请求的qps
- 异常码的监控
- 程序异常的监控
- 服务接口级别一边会为每一个接口进行定级(优先级说高、中、低),等级越高的越需要保证高可用性,反之亦然。
系统高可用的评定指标
系统性能的评定指标
系统高可用的优化手段
- 空间换时间
- 时间换空间
- 找到系统瓶颈进行相对应的优化
- 读写分离
- 分库分表
分布式锁的设计
基于redis的分布式锁
分布式锁设计目标
分布式锁的选择方案
综合下来选择etcd作为分布式锁比较靠谱
分布式事务的设计与实践
分布式事务类型
不同类型的分布式事务处理方法有着不同的优缺点。
- 刚性分布式事务
- 强一致性、XA模型、CP模型
- 案例:2PC(两阶段提交)
- 柔性分布式事务
- 最终一致性、AP模型
- 案例:TCC模型、Saga模型