---
# System prepended metadata

title: 双机架构
tags: [架构设计]

---

# 双机架构
---

## 主备复制

主备架构中的“备机”主要还是起到一个备份作用，并不承担实际的业务读写操作，如果要把备机改为主机，需要人工操作。

![](https://i.imgur.com/Aw4A8dN.png)

- 主备复制架构的优点就是简单，表现有：对于客户端来说，不需要感知备机的存在，即使灾难恢复后，原来的备机被人工修改为主机后，对于客户端来说，只是认为主机的地址换了而已，无须知道是原来的备机升级为主机。对于主机和备机来说，双方只需要进行数据复制即可，无须进行状态判断和主备切换这类复杂的操作。

- 主备复制架构的缺点主要有：备机仅仅只为备份，并没有提供读写操作，硬件成本上有浪费。故障后需要人工干预，无法自动恢复。人工处理的效率是很低的，可能打电话找到能够操作的人就耗费了 10 分钟，甚至如果是深更半夜，出了故障都没人知道。人工在执行恢复操作的过程中也容易出错，因为这类操作并不常见，可能 1 年就 2、3 次，实际操作的时候很可能遇到各种意想不到的问题。

## 主从复制

主从复制和主备复制只有一字之差，“从”意思是“随从、仆从”，“备”的意思是备份。我们可以理解为仆从是要帮主人干活的，这里的干活就是承担“读”的操作。也就是说，主机负责读写操作，从机只负责读操作，不负责写操作。

![](https://i.imgur.com/1OnZTr6.png)

- 优点有：主从复制在主机故障时，读操作相关的业务可以继续运行。主从复制架构的从机提供读操作，发挥了硬件的性能。
- 缺点有：主从复制架构中，客户端需要感知主从关系，并将不同的操作发给不同的机器进行处理，复杂度比主备复制要高。主从复制架构中，从机提供读业务，如果主从复制延迟比较大，业务会因为数据不一致出现问题。故障时需要人工干预。

## 双机切换

- 主备复制和主从复制方案存在两个共性的问题：主机故障后，无法进行写操作。
- 如果主机无法恢复，需要人工指定新的主机角色。

![](https://imgur.com/3cif4bH.png)

### 常见的架构

- 互连式

![](https://imgur.com/wQWacD0.png)


- 中介式

![](https://i.imgur.com/a8VaRor.png)

开源方案已经有比较成熟的中介式解决方案，例如 ZooKeeper 和 Keepalived。

- 模拟式

模拟式指主备机之间并不传递任何状态数据，而是备机模拟成一个客户端，向主机发起模拟的读写操作，根据读写操作的响应情况来判断主机的状态。

![](https://i.imgur.com/fTBFt0G.png)

## 主主复制

主主复制指的是两台机器都是主机，互相将数据复制给对方，客户端可以任意挑选其中一台机器进行读写操作 (双向复制数据)

![](https://i.imgur.com/6g8p9rP.png)

###### tags: `架构设计`