高并发系统设计三-系统怎样做到高可用

高可用(High Avaliability, HA),指的是系统具备较高的无故障运行的能力。

1、可用性的度量

  • MTBF
    MTBF(Mean Time Between Failure):平均故障间隔,代表两次故障的间隔时间,也就是系统正常运转的平均时间,这个时间越长,系统稳定性就越高
  • MTTR
    MTTR(Mean Time To Repair):故障的平均恢复时间,也就是平均故障的时间。这个值越小,故障对于用户的影响也就越小。

Availability = MTBF / (MTBF + MTTR)

在这里插入图片描述

一般来说,我们的核心的业务系统的可用性,需要达到 四个九;非核心系统的可用性最多容忍到 三个九。

2、高可用系统设计思路

2.1、系统设计

“Design for failure”是我们做高可用系统设计时秉持的第一原则。

  • failover(故障转移)

    1、完全对等的节点之间做 failover,一个节点不可用时,直接访问另一个节点。

    2、不对等的节点之间(系统中存在主节点也存在备节点)。比方说我们有一个主节点,有多台备用节点,这些备用节点可以是热备(同样在线提供服务的备用节点),也可以是冷备(只作为备份使用),那么我们就需要在代码中控制如何检测主备机器是否故障,以及如何做主备切换。

    使用最广泛的故障检测机制是“心跳”。你可以在客户端上定期地向主节点发送心跳包,也可以从备份节点上定期发送心跳包。当一段时间内未收到心跳包,就可以认为主节点已经发生故障,可以触发选主的操作。

  • 超时控制
    复杂的高并发系统通常会有很多的系统模块组成,同时也会依赖很多的组件和服务,比如说缓存组件,队列服务等等。它们之间的调用最怕的就是延迟而非失败,因为失败通常是瞬时的,可以通过重试的方式解决。而一旦调用某一个模块或者服务发生比较大的延迟,调用方就会阻塞在这次调用上,它已经占用的资源得不到释放。当存在大量这种阻塞请求时,调用方就会因为用尽资源而挂掉

  • 降级是为了保证核心服务的稳定而牺牲非核心服务的做法

  • 限流,它通过对并发的请求进行限速来保护系统。

2.2、系统运维

  • 灰度发布
  • 故障演练
发布了57 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wmdkanh/article/details/105442172