System Design

系统设计基础5:避免单点故障

2019-03-20  本文已影响0人  MeazZa

之前我们已经讲了不少关于服务器水平扩展、负载均衡等的内容,本文我们着重介绍一下单点故障相关的内容。

单点故障

一个典型的系统架构图如下所示,服务部署在一台服务器上,所有客户端请求都发送到这台服务器上。

单点架构示意图

如果这台服务器出现故障,将导致所有客户端的请求失败,那么应该如何避免系统设计中可能出现单点故障的问题呢?

解决方法

下图是一个避免单点故障设计的架构图,其中使用到了多种解决方法,以下将展开介绍。

image.png
多服务器部署

原本服务部署在单台服务器上,将它部署同样的版本到多台服务器上。将所有服务器接入到Load Balance的组件,这很像我们之前讲过的内容。Load Balancer也可能出现单点故障,因此同样需要部署在多台服务器上。在Load Balancer之前使用DNS,DNS中记录了请求地址的hostname和多个ip之间的映射,客户端的请求将被转发到任意一个Load Balance服务器上。

主从结构

这里我们关注服务使用到的数据库,它同样是可能出现单点故障的。因此,这里我们采用主从结构,每个对主数据库的修改,将同步地发送到从服务器上。当主服务器出现故障时,由从服务器接替主服务器,确保能够持续提供服务。

多地部署

在实现上述的架构后,系统仍然会出现单点故障。当服务器所在地区的网络中断,或发生紧急灾害时,服务将中断。因此,这套架构需要部署在多地,才能避免地域问题导致的单点故障。

小结

本节主要介绍的避免单点故障的几种方法:多服务器部署、主从结构和多地部署等。各种方法的核心都是将任意一个服务进行冗余部署,避免存在单点,从而解决单点故障的问题。

欢迎大家订阅专题,其中包含了系统设计基础系列的全部文章:System Design

上一篇 下一篇

猜你喜欢

热点阅读