Clustered and distributed

Posted by Keal on February 23, 2021

集群

集群就是多个机器提供相同的服务. 这样就避免了单点故障,实现了服务的高可用.

不需要数据同步的集群-例如一个web服务集群,可以通过nginx做负载均衡. 这种也可以称为负载均衡集群

分布式

分布式就是不同的机器通过网络连接协调来提供服务,至于是每个机器提供相同的服务还是不同的服务不重要.

比如微服务架构.多个服务独立且通过RPC通信来实现对外的一个整体服务.

分布式集群

可以理解为分布式的服务中,每个服务又是一个集群. 比如微服务中, 每个服务又可以是个集群

一致性

分布式集群,例如数据库,都会要求数据库的一致性. 不管是最终一致性还是强一致性都好,最终都会要求在集群的每个节点中提供同步的方法.

以mysql为例, mysql按历史顺序提供过的数据同步方式:

  1. 主从复制. (异步复制, 存在数据丢失的可能)
  2. 半同步复制. (因为会退化为异步复制,所以还是存在数据丢失的可能)
  3. 组复制. (Paxos算法)

除了Paxos算法外,还有其简化版的Raft算法. etcd项目使用了raft算法来维持节点的一致性.

Reference

Raft算法动画演示