如何保障系统高可用
影响系统可用性的原因
硬件故障
软件Bug
系统发布
并发压力
网络攻击
外部灾害
保障系统稳定高可用方案
解耦(系统设计、代码质量)--依据:系统依赖关系清晰,易维护、易定位、分析、解决问题
高内聚低耦合的组件设计原则
面对对象基本设计原则
面对对象设计模式
领域驱动设计建模
隔离
业务与子系统隔离
微服务与中台架构
生产者消费者隔离
虚拟机与容器隔离
异步
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份--单点故障消除
集群设计
数据库复制(CAP原理)
FailOver(失效转移)
数据库主主失效转移
负载均衡失效转移 -- 无状态服务
幂等
事务补偿
通过执行业务逻辑逆操作,使事务回滚到事务前状态
重试
超时原因:线程阻塞、垃圾回收、网络抖动
注意:上游调用者超时时间要大于下游调用者超时之和
熔断
断路器状态:关闭、打开、半开
Spring Cloud断路器实现:Hystrix
限流
计数器算法(固定窗口、滑动窗口)
令牌桶算法
漏桶算法
自适应限流
降级--关闭未核心功能,保证核心功能的正常运行
异地多活
难点是数据一致
版权声明: 本文为 InfoQ 作者【林昱榕】的原创文章。
原文链接:【http://xie.infoq.cn/article/532bbff10ac3247e477f8e4df】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论