架构师训练营 week11 作业
作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
导致系统不可用的原因
硬件故障
软件故障
网络故障
系统升级
大量访问
黑客攻击
自然灾害
等等
高可用方案
解耦
设计原则,DDD等。
隔离
业务和子系统隔离
微服务和中台
生产者和消费者
虚拟机和容器
冗余备份
如果要实现硬件故障情况下的高可用,那至少要做硬件冗余,即服务器冗余备份。
可以利用负载均衡检测到失效的服务器后,自动引流到正常的服务器上。数据库主主复制也是一种冗余备份方案。
失效隔离
可以通过消息队列实现。
异步
多线程
反应式编程
异步通信网络编程
事件驱动架构
事务补偿
通过执行业务的逆操作
限流降级
限流是指对进入系统的用户请求进行流量限制,如果访问量超过了系统的最大处理能力,就会丢弃一部分的用户请求,保证整个系统可用,保证大部分用户是可以访问系统的。
降级是保护系统的另一种手段。有一些系统功能是非核心的,但是它也给系统产生了非常大的压力,比如说在电商系统中有确认收货这个功能,即便我们不去确认收货,系统也会超时自动确认收货。
异地多活
数据中心分布在多个不同地点的机房里。这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问,这样每个机房都可以提供完整的系统服务,即使某一个机房不可使用,系统也不会宕机,依然保持可用。
用户请求的分发可以在域名解析的阶段完成。
另外,因为是多个机房都可以独立对外提供服务,所以也就意味着每个机房都要有完整的数据记录。用户在任何一个机房完成的数据操作,都必须同步传输给其他的机房,进行数据实时同步。
总结
评论