zookeeper学习记录-zookeeper介绍

由以上介绍,分布式系统主要面临一致性和可用性的权衡,所以出现了一系列分布式一致性解决方案,zookeeper是一个典型的分布式数据一致性的解决方案。分布式应用程序可以基于它实现如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。

zookeeper

ZooKeeper致力于提供一个高性能、高可用,且具有严格的顺序访问控制能力的分布式协调服务。

ZooKeeper的基本概念

集群角色

在分布式系统中构成一个集群的每台机器都有自己的角色,最典型的集群模式就是Maste/Slave 模式,而在Zookeeper中颠覆了这些概念,没有沿用M/S模式,而是引入了Leader、Follower和Observer三种角色。

  1. Leader: 需要通过选举,且Leader服务器为客户端提供读和写服务。
  2. Follower和Observer都能提供读服务,唯一区别在于,Observer 机器不参与Leader选举过程,也不参与写操作“过半写成功”策略,因此Observer在不影响写性能的情况下提升集群的读性能。
会话(Session)

Session 是指客户端会话,首先说下客户端连接,客户端连接是指客户端和服务器之间的一个TCP长连接,ZK对外的服务端口默认是2181,客户端启动时首先会与服务端建立一个TCP长连接,从第一次建立连接开始,客户端会话生命周期就开始了,通过这个连接,客户端能够通过心跳检测与服务器保持有效的会话,也能够向zk服务器发送请求并接受响应,同时还能通过该连接接收来自服务器的Watch事件通知。sessionTimeout可设置会话的超时时间,当由于服务器压力大,网络故障或客户端主动断开连接时,只要在sessionTimeout周期内能够重新连接上集群中的任意一台,之前创建的会话仍然有效。

数据节点

ZK将所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割的路径就是一个ZNode,每个ZNode上都会保存自己的数据内容,同时会保存一系列属性信息,ZNode分为持久节点和临时节点。
持久节点,就是指一旦创建,除非主动移除,否则这个ZNode节点一直保存在ZK上,而临时节点是与客户端会话绑定,一旦客户端会话失效,那么这个客户端创建的所有临时节点将会被清除。

版本

ZK每个ZNode上都会存储数据,对应于每个ZNode,ZK都会维护一个叫做Stat的数据结构,Stat中记录了这个ZNode的三个数据版本,分别是vesion(当前ZNode的版本)、cversion(当前ZNode子节点的版本)和aversion(当前ZNode的ACL版本)。

Watcher

Watcher,事件监听器,该机制是ZK实现分布式协调服务的重要特性。

ACL

ZK采用ACL策略进行权限控制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值