架构师训练营第十一周
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
引起系统不可用的原因:
硬件故障、软件故障(bug)、系统发布(版本控制,数据库和代码管理,服务器配置等)、并发压力(高并发压力过大)、网络攻击、外部灾害
高可用方案:
解耦 -- 大多数公司不会像淘宝一样出现高并发现象,编程为主要优化对象
高内聚、低耦合的组件设计原则 -- 发布阶段出现问题概率高,依赖关系要清晰
面向对象的基本设计原则
面向对象设计模式
领域驱动设计建模
隔离-- 使得故障不会扩散
业务和子系统隔离
微服务与中台架构
生产者和消费者隔离
虚拟机与容器隔离
异步 -- 同步导致一个失效,多个连锁失效
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份 -- 当应用只部署在一个服务器上,服务器发生故障,则该应用不可使用
集群设计
数据库复制,CAP原理
失效转移 -- 检测到用户实
数据库主主失效转移
负载均衡失效转移
幂等
事务补偿
重试 -- 远程服务发生超时,保证重新服务再次重试可以修复单词调用的故障
熔断 -- 当服务器服务延迟和失败调用增加时,采用断路器熔断处理
限流 -- 在高并发情况下,设定好数值,丢弃一部分用户请求,保证大部分用户请求得到响应
自适应限流 -- 检测高并发情况,根据自身负载进行自适应限流
降级 -- -- 在高并发情况下关闭一些不重要的服务
异地多活 --在多个地方部署机房
评论