美文网首页zookeeper专题
zookeeper的设计原理分析(一)

zookeeper的设计原理分析(一)

作者: 先生zeng | 来源:发表于2019-07-30 22:46 被阅读7次

    之前有一篇文章介绍了zookeeper,在看这篇文章之前希望能在看一下以下这篇,篇幅很短:
    https://www.jianshu.com/p/b0d526748804

    在研究zookeeper的设计的原理之前,我们需要先猜想下,zookeeper的设计需要满足什么条件?

    zookeeper主要是解决分布式环境下协调服务的问题而产生的,而如果要实现这样的一个中间件,我们都要考虑到分布式系统中,会出现什么问题,从而需要设计满足哪些条件才能避免这些问题,比如CAP理论,分布式数据一致性,分布式事务,高可用等等。首先就是必须考虑

    1.防止单点故障
    考虑做集群,满足高可用,并且可以分摊流量。

    2.做集群的话需要考虑数据的一致性,每个节点都能接收到请求,并且每个节点的数据都必须要保持一致。要实现各个节点的数据一致性,就势必要一个 leader 节点负责协调和数据同步操作。

    3.集群还需要考虑,leader宕机以后,选举新的leader的问题,同时,还有如何恢复数据,同时集群的leader节点和follow节点还要做读写分离,提高性能。

    4.leader 节点如何和其他节点保证数据一致性,并且要求是强一致的。在分布式系统中,每一个机器节点虽然都能够明确知道自己进行的事务操作过程是成功和失败,但是却无法直接获取其他分布式节点的操作结果。所以当一个事务操作涉及到跨节点的时候,就需要用到分布式事务,分布式事务的数据一致性协议有 2PC 协议和3PC 协议。

    所以综合上面来分析,我们可以得到zookeeper为什么要做集群,做选举,分布式事务。

    在分析设计原理之前,还需要了解一些概念性的知识。

    分布式的一些常见概念和问题:

    https://www.jianshu.com/p/58ba421212aa

    关于zookeeper的2pc,3pc分布式事务提交可以参考如下文章:

    https://www.jianshu.com/p/948d843b0489

    关于zookeeper的paxos一致性算法的改进,可以参考如下文章

    https://www.jianshu.com/p/65cb90b169d7

    zookeeper使用到的数据一致性算法:ZAB算法:

    https://www.jianshu.com/p/c93906a9a860

    zookeeper集群中的各种深入分析和实现原理:

    https://www.jianshu.com/p/17a2badf669e

    zookeeper集群中如何进行选举算法:

    待续

    相关文章

      网友评论

        本文标题:zookeeper的设计原理分析(一)

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