集群
集群就是多个机器提供相同的服务. 这样就避免了单点故障,实现了服务的高可用.
不需要数据同步的集群-例如一个web服务集群,可以通过nginx做负载均衡. 这种也可以称为负载均衡集群
分布式
分布式就是不同的机器通过网络连接协调来提供服务,至于是每个机器提供相同的服务还是不同的服务不重要.
比如微服务架构.多个服务独立且通过RPC通信来实现对外的一个整体服务.
分布式集群
可以理解为分布式的服务中,每个服务又是一个集群. 比如微服务中, 每个服务又可以是个集群
一致性
分布式集群,例如数据库,都会要求数据库的一致性. 不管是最终一致性还是强一致性都好,最终都会要求在集群的每个节点中提供同步的方法.
以mysql为例, mysql按历史顺序提供过的数据同步方式:
- 主从复制. (异步复制, 存在数据丢失的可能)
- 半同步复制. (因为会退化为异步复制,所以还是存在数据丢失的可能)
- 组复制. (Paxos算法)
除了Paxos算法外,还有其简化版的Raft算法. etcd项目使用了raft算法来维持节点的一致性.