美文网首页java 知识点
面试一致性协议一系列算法的最全总结

面试一致性协议一系列算法的最全总结

作者: Tim在路上 | 来源:发表于2020-08-15 15:23 被阅读0次

一致性主要是在分布式环境中,如何约定不同的进程,来达到服务的稳定,资源利用率高,可靠性高;

zab 协议 和 paxos 思想 都是采用投票表决的方式进行实现,zab 比 paxos 增加了一个同步阶段。

zookeeper 的 leader 选举使用的就是zab协议

zab 在zookeeper 中主要进行 leader 选举 和 消息广播的服务

leader 的选举 也分为 服务启动时的leader选举 和 运行中进行leader选举

  • 服务启动选举过程 -5个节点
  1. 每一个server发出一个投票(myid, zxid), 启动时zxid 一般是0, myid 是启动的顺序进行分配的id (1,0),(2,0)(3,0)(4,0)(5,0)
  2. 所有的服务器Server 都会接受server的投票,投票的处理的规则是先选zxid较大的,如果zxid相同会选择myid较大的,超过1/2就会被选择为leader节点

所以如果是按照顺序进行启动的话,最后被选择为leader是3号节点

服务运行过程中zxid 就存在数值了

Gossip 协议

redis 集群采用 gossip 协议,gossip 协议中某一个节点会随机的与其他节点进行通信,每一个节点可能知道所有的其他节点或者是仅仅只知道几个邻居节点,最终会达到最终的一致性。

一致性hash算法

  1. 构建环形的hash空间,考虑通常的 hash 算法都是将 value 映射到一个 32 为的 key 值,也即是 0~2^32-1 次方的
    数值空间;我们可以将这个空间想象成一个首( 0 )尾( 2^32-1 )相接的圆环。

  2. 将内容和对象映射到hash环上

  3. 把对象映射到服务节点,hash值在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位
    到的服务器,新加,去除节点都不会影响其他节点的影响

相关文章

网友评论

    本文标题:面试一致性协议一系列算法的最全总结

    本文链接:https://www.haomeiwen.com/subject/fysadktx.html