保障系统高可用性设计方案
Author: Jessie Yang
Date: 2020/8/26
摘要
本文对系统不可用的原因进行简单阐述,并对保障系统稳定高可用的方案进行列举和说明。
导致系统不可用的原因
l 硬件故障
l 软件bug
l 系统发布
l 并发压力
l 网络攻击
l 外部灾害
保证系统高可用的架构方案
参考如下原则和方案:
1. 解耦:高内聚、低耦合的组件设计原则;面向对象设计原则、领域驱动设计原则
2. 隔离:微服务和中台架构、生产者和消费者隔离、虚拟机和容器隔离;业务和子系统的隔离。
3. 异步设计原则:异步框架避免业务的同步阻塞。
4. 备份:避免单点设计,利用集群提供服务能力。数据库的主从复制等保证数据一致性。
5. 失效转移:数据库主主失效转移、负载均衡失效转移
6. 幂等: 利用操作和业务保证,使多次重复请求不会造成错误的结果(如交易编号保证有效性校验)
7. 事务补偿:利用代码的逻辑,当事务失败后,回滚到事务前状态。
8. 重试:为防止网路或系统服务临时无法响应(垃圾回收、线程阻塞),重试方法修复单词调用的故障。
9. 熔断机制:当服务出现故障,使用断路器阻断对故障服务进行打开、关闭、半开的控制。
10. 限流:系统访问超过系统的承受能力,对系统做留量限制,丢弃部分用户请求,防止系统崩溃。限流的几种算法:
l 计数器算法
l 令牌桶算法
l 漏桶算法
l 自适应限流
11. 降级:系统高并发时,将非核心功能关闭,保证核心功能的处理能力。
12. 异地多活:当遇到外部原因,用不同地点简历多个数据中心,多个机房提供完整的系统服务。
13. 安全防护:利用Web应用网关,做安全规则,防止脚本注入、SQL预编译参数绑定方式SQL注入、利用表单Token防止CSRF伪造用户请求操作等方法安全攻击。
一些开源的Web应用防火墙:ModSecurity,或者借鉴逻辑策略规则,进行安全防御策略的设置。
版权声明: 本文为 InfoQ 作者【架构5班杨娟Jessie】的原创文章。
原文链接:【http://xie.infoq.cn/article/bad11a1967d5db6731ea36cf7】。文章转载请联系作者。
评论