十一、高可用
提升系统高可用的架构方案
1)解耦
系统的耦合度越高, 它们之间的关系越复杂, 那么任何一个模块或功能出问题都可能牵连到其他的功能模块, 最后发生级联反应
2)隔离
通过解耦以后的这些业务子系统, 如果能在物理上进一步地进行隔离分隔,即使是某一个子系统内部出现了一些小的问题,这个问题不会扩散到其他的已解耦业务子系统里面去,这样也可以提高系统的可用性。
3)异步
事件驱动的异步架构
基于消息中间件, 如新用户注册, 将事件消息扔到主题队列内, 其他子系统对这个新用户注册事件进行消费处理, 如发送邮件、发送短息、加积分等等
4)备份
当机器发生故障或宕机等情况时,能够使用备用服务器进行继续服务
应用集群设计
数据库主从架构, 从服务器进行数据备份
5)故障转移
应用集群负载均衡
数据库主库失效转移 MHA
6)容错机制
重试, 远程服务可能由于线程阻塞、垃圾回收或者网络抖动, 而无法及时返回响应, 调用者可以通过重试的方式来修复单次调用的故障!
7)熔断降级
当某个服务出现故障、响应延迟或者失败率增加, 若继续调用这个服务将会导致调用者请求阻塞、资源消耗增加, 进而出现服务级联失效, 这种情况下使用断路器阻断对故障服务的调用。
8)限流
在高并发场景下, 如果系统的访问量超过了系统的承受能力, 则可以通过限流对系统进行保护!
限流的几种算法:
计数器算法(固定窗口、滑动窗口)
漏桶算法
令牌桶算法
9)异地多活
评论