分布式系统常见疑问

Distribute System Quick Q&A

分布式系统常见疑问

Leader节点和Follower节点的关系

  1. Leader节点是干活的节点,所有的客户端请求都会被发送到leader节点,leader节点更新数据后,同步到所有的follower节点。
  2. 一个cluster只有一个leader节点,其他的都是follower节点。
  3. Follower节点接收leader的状态更新消息,并等待准备成为新的leader节点。

什么是quorum

法定票数,就是cluster在选新的leader时,必须获得最少的得票数,这个值是(n/2)+1。(n是所有节点数)

节点个数为什么是奇数?

就是一个原因,奇数和(奇数+1)对应的clustor能够允许的最大的失败数是一样的,然后可以减少一个节点的资源。
例如5个节点和6个节点的clustor,运行的最大失败数都是2,所以配置5个节点能够提供同样的服务,而减少资源。

节点数/法定票数/最大允许失败节点数 关系

节点数 法定票数 最大允许失败节点数
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3
8 5 3
9 5 4

Client如何知道cluster里面谁是leader节点。

Client不需要知道谁是leader节点,client只需要把请求发给任意一个节点就行,如果这个节点不是leader节点,那么它就转发请求到leader节点,最终都是由leader节点完成数据更新操作,然后同步到所有的follower节点。

替换失效的节点时是否需要先删除原先的节点

是的,强烈建议这么操作。举例来说:
假如一个3节点的集群(法定票数是2,最大允许失效数是1),有一个节点失效了,整个集群仍能继续运行,因为满足法定票数2;
此时如果新增一个节点,那么集群总节点上变成了4,而4节点集群的法定票数是3,这相当于新加了一个节点后,还是处在危险状态,不能允许新的节点失效,还得继续想办法把原先已失效的那个节点恢复,才能保证4节点的安全状态。更严重的后果是,如果此时新节点由于配置错误等原因无法正确加入到集群,反而导致整个集群无法工作,因为4节点集群需要3个法定票数,而此时只有两个节点有效。相反的,如果先删除失效节点,则能避免上述问题,因为此时总的集群节点上变成了2,其法定票数还是2,新加入的节点不影响集群的功能,即使新节点出问题,不能加入集群,也不影响整个集群的工作。

猜你喜欢

转载自blog.csdn.net/weixin_34358365/article/details/86887559