第 11 周作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别举例并简述
1)导致系统不可用的原因
硬件故障、软件BUG、系统发布、并发压力、网络攻击、外部灾害等
2)保障系统稳定高可用的方案
解耦
高内聚、低耦合的组件设计
面向对象基本设计原则
面向对象设计模式
领域驱动设计模式
隔离
业务与子系统隔离
微服务与中台架构
生产者消费者隔离
虚拟机与容器隔离
异步
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份
集群设计
数据库复制
Failover失效转移
数据库主主失效转移
负载均衡失效转移
幂等
服务重复调用无法避免,必须保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性
事务补偿
事务补偿:通过执行业务逻辑逆操作,使事务回滚到事务前状态
传统事务的ACID
原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability
分布式事务的BASE
基本可用Basic Availability、软状态Soft-state、最终一致性Eventual Consistency
重试
远程服务可能由于线程堵塞、垃圾回收或网络抖动,而无法及时返回响应,调用者通过重试的方式修复单次调用的故障
熔断
当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务的调用
限流
在高并发场景下,系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。丢弃一部分用户请求,虽然产生了部分不可用,但是好过整个系统崩溃。
限流算法:
计算器算法(固定窗口、滑动窗口)
令牌桶算法
漏铜算法
降级
有一些功能时非核心的,但是给系统产生了巨大的系统压力,解决方案就是在系统极限高并发的访问压力下下,临时关闭非核心功能,将宝贵的资源留给核心功能。
异地多活
为了避免由于灾害等引起的整个数据中心不可用导致的系统不可用,采用异地多活的多机房架构,将数据中心分布在多个不同机房里。
异地多活的难点是数据一致性。
通过高可用运维来增加系统高可用
自动化部署
预发布验证
灰度发布
监控数据采集(用户行为日志、业务运行数据、系统性能数据)
监控管理(报警、自动控制(自动失效转移、自动扩容、自动限流))
评论