集群: 解决高并发, 在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点。
两个特点:
高可用性:集群当中的一个节点发生故障,这台节点上面所运行的应用程序将在另一台节点被自动接管,提高可用性
可扩展性:集群的性能不限制于单一的服务实体,新的服务实体可动态的添加到集群
两大能力:
1.负载均衡:把任务比较均匀的分布到集群环境下的节点,提高数据吞吐量
2.错误恢复:如果集群中的某一台服务器发生故障需要维修,资源和应用汇转移到可用的集群节点上。这种由于某个节点的资源不能工作,另一个可用节点中的资源能够透明的接管并继续完成任务的过程,叫做错误恢复。
Zookeeper集群的leader选举:
1,Zookeeper集群中的follower检测到leader挂机,然后把自己的状态置为LOOKING,开始进行leader选举。
2,每台服务器选举自己为leader,然后把自己的选票通过广播通知其他服务器。
3,每台服务器接收来自其他服务器的选票,并进行合法性校验,主要有两点校验,选举轮次校验和服务器的状态的校验。
4,处理选票。每台服务器都会将自己的选票与其他服务器的选票进行PK,PK的规则如下:
第一个规则:首先进行ZXID的PK,大者获胜。
第二条规则:如果ZXID相等,则进行myid的PK,大者获胜。
经过PK以后,如果当前服务器PK失败,则会把自己的选票重新投给胜者,然后把更新后的选票通过广播通知其他服务器。
5,统计选票。根据超过半数的原则,每台服务器都会统计leader的选票,如果超过半数,则结束选举。
redis集群的主从切换:
redis没有类似Zookeeper的选举机制。redis的master挂掉以后,redis集群是通过主从切换来保证高可用性的。
Eureka集群的相互复制
Eureka集群中的各节点之间不存在主从关系。Eureka集群中的节点的关系是对等的
Eureka集群的各个server之间通过相互注册的方式来实现集群的高可用性。数据同步的方式是增量备份,这样可以保证每个server都是最新最全的数据。从而保证集群的高可用性。这样即使某个server挂了,集群还可以对外提供服务。
分布式: 扩容
都是需要很多节点服务器通过网络协同工作完成整体的任务目标