Node Cluster Patterns (节点集群模式)

什么是 Node Cluster Patterns

在分布式系统中, 一定有许多的节点组成了一个集群, 来向外部提供服务. 分布式系统通过让节点之间互相协作, 实现负载分流, 冗余容错, 而最终实现分布式系统中的 一致性 和 高可用性.

Master-Slave 或 Leader-Follower Pattern

指有一个 master 用于特别重要的工作, 例如 write, 有时候也可以提供 read. 而 slave 则用于提高整体系统的可用性, 例如提供 read 服务. 当 master 宕机的时候, 通过选举机制的算法, 一个 slave 可以接管成为 master, 多用于数据库的设计中.

  • 比如 mongodb 中 master 节点提供 write, 然后写入的数据转发到 slave 上同步, 从而实现 eventual consistent. 而 read preference 设置为 slave, 用于保证高负载下的高并发读数据的性能.

  • 又比如 Hadoop 中 Master 提供任务分发, 而 Slave 则真正执行 Map 和 Reduce 工作.

  • 再比如 Zookeeper 中的 Leader 提供写, 而 Follower 提供读. Leader 收到写请求后会将消息转发到 Follower, 只有超过半数的 Follower 都成功写入了, 该写入才算是成功.

Active / Active Pattern

指所有节点的地位是等价的, 都同时工作, 由负载均衡请求发送给不同的节点处理. 例如 web app 多采用这一模式部署服务器.

Active / Standby Pattern

指只有 Active 的节点在运行提供服务, 而 Standby 只是备用, 当 Active 节点挂掉后 Standby 立刻接管.