Zookeeper

zk架构


    1.Client
        从server获取信息,周期性发送数据给server,表示自己还活着。
        client连接时,server回传ack信息。
        如果client没有收到reponse,自动重定向到另一个server.

    2.Server
        zk集群中的一员,向client提供所有service,回传ack信息给client,表示自己还活着。

    3.ensemble
        一组服务器。
        最小节点数是3.

    4.Leader
        如果连接的节点失败,自定恢复,zk服务启动时,完成leader选举。

    5.Follower
        追寻leader指令的节点。

znode


    zk中的节点,维护了stat,由Version number, Action control list (ACL), Timestamp,Data length.构成.
    data version        //数据写入的过程变化

    ACL                    //action control list,


节点类型


    1.持久节点
        client结束,还存在。
        
    2.临时节点
        在client活动时有效,断开自动删除。临时节点不能有子节点。
        leader推选是使用。

    3.序列节点
        在节点名之后附加10个数字,主要用于同步和锁.

Session


    Session中的请求以FIFO执行,一旦client连接到server,session就建立了。sessionid分配client.

    client以固定间隔向server发送心跳,表示session是valid的,zk集群如果在超时时候,没有收到心跳,
    判定为client挂了,与此同时,临时节点被删除。

Watches


    观察。
    client能够通过watch机制在数据发生变化时收到通知。
    client可以在read 节点时设置观察者。watch机制会发送通知给注册的客户端。
    观察模式只触发一次。
    session过期,watch机制删除了。


zk工作流程


    zk集群启动后,client连接到其中的一个节点,这个节点可以leader,也可以follower。
    连通后,node分配一个id给client,发送ack信息给client。
    如果客户端没有收到ack,连接到另一个节点。
    client周期性发送心跳信息给节点保证连接不会丢失。

    如果client读取数据,发送请求给node,node读取自己数据库,返回节点数据给client.


    如果client存储数据,将路径和数据发送给server,server转发给leader。
    leader再补发请求给所有follower。只有大多数(超过半数)节点成功响应,则
    写操作成功。


leader推选过程(最小号选举法)


    1.所有节点在同一目录下创建临时序列节点。
    2.节点下会生成/xxx/xx000000001等节点。
    3.序号最小的节点就是leader,其余就是follower.
    4.每个节点观察小于自己节点的主机。(注册观察者)
    5.如果leader挂了,对应znode删除了。
    6.观察者收到通知。
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值