作业 - 第 11 周
导致系统不可用的原因?
导致系统不可用的原因很多,主要有如下几种:
硬件故障
软件 Bug
系统发布
并发压力
网络攻击
外部灾害
保障系统稳定高可用的方案有哪些?
建设高可用系统的架构的常用方案,如下:
系统解耦,将复杂的系统分割成多个子系统或模块,降低系统的复杂性。
系统解耦常用技术:
高内聚、低耦合的组件设计原则
面向对象基本设计原则
面向对象设计模式
领域驱动设计建模
系统隔离,将子系统或模块互相隔离,防止故障或错误的扩散。
系统隔离包括如下几种方式:
业务与子系统隔离
微服务与中台架构
生产者消费者隔离
虚拟机与容器隔离
异步编程方式,包括如下个方面:
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份或冗余,是可用性的主要方式,包括:
集群设计
数据备份
失效转移,失效转移的关键是设计无状态的服务。
事务补偿,通过执行业务逻辑逆操作,使事务回滚到事务前状态。
重试,远程服务可能会由于线程阻塞、垃圾回收或者网络抖动,而无法及时返还响应,调用者 可以通过重试的方式修复单次调用的故障。
熔断,当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求 阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务 的调用。
限流,限流是指对进入系统的用户请求进行流量限制,如果访问量超过了系统的最大处 理能力,就会丢弃一部分的用户请求,保证整个系统可用,保证大部分用户是可以访问 系统的。
降级,是指在高并发的情况下,关闭非核心的功能,保证核心功能的可用性。
异地多活,异地多活的难点是多个数据中心的数据的一致性。
评论