zookeeper入门

一、Zookeeper的特点
1、开放源代码
2、分布式的协调服务,可以解决分布式数据一致性问题:
(1) 顺序一致性:从客户端 发起一个事务请求最终会按照发起顺序严格应用在zookeeper中。
(2) 原子性:所有的请求的处理结果在整个集群中的所有应用情况都是一致的
(3) 单一视图:无论哪个客服端连接集群中的任意一个zookeeper,其他服务器看到的情况都是一致的
(4) 可靠性:一旦服务器应用一个事务,并对客户端完成响应,该事务对服务器的影响将一直保留,除非里一个事物进行修改
(5) 实时性:一个事务应用成功,服务器将立即获取新数据,zookeeper仅仅能保证在一定时间内,客户端获取到最新的数据
3、高性能
二、Zookeeper应用场景(包含但不限于下列场景)
1、数据发布/订阅
zk采用了推模式和拉模式相结合的方式
1
2、负载均衡
(1)首先DB在启动时,将自己在zk上注册成一个临时节点(zk包含临时节点和永久节点两种,临时节点在服务器出现问题的时候,节点会自动从zk上删除,能够保证zk上的服务器列表是最新的可用列表)
(2)客户端在需要读写数据的时候去zookeeper上得到所有可用的DB的链接信息
(3)客户端随机选择一个DB与之建立连接
(4)当客户端发现连接不可用时可以再次从zk上获取可用的DB连接信息,也可以从之前获得的列表中删除这个不可用的连接后再随机选择一个DB与之连接
3、命名服务
传统命名有两种,第一种是数据库表的自增长ID,但是不可用于分布式系统,第二种则是UUID,可以用于分布式系统,但是没有规则,不利于理解。
zk可以生成一个用于分布式环境下的顺序增长且便于理解的ID
1
2
4、分布式协调\通知
心跳检测,在zk中我们可以将所有机器都注册成一个临时节点(根据临时节点的特点),当需要判断一个机器是否可用时,只需要判断这个节点在zk中是否存在即可,从而降低了系统的复杂度
1
三、Zookeeper的基本概念
1、集群角色
Leader服务器是整个zookeeper集群工作机制中的核心
Follower服务器是zookeeper集群状态的跟随者
Observer 服务器充当一个观察者的角色
2、会话
客户端与zookeeper服务器的连接,zookeeper中的会话叫session。客户端在启动的时候会与服务器建立一个TCP的长连接来维持一个Session,通过这个连接,客户端能够通过心跳检测与服务器保存有效的会话,也能像zk服务器发送请求并获得响应。
1
3、数据节点
(1)集群中的一台机器称为一个节点
(2)数据模型中的数据单元Znode,分为持久节点和临时节点

zookeeper的数据模型是一棵树,其中树的节点就是Znode,Znode中可以保存信息

4、版本
用来记录节点数据或节点或子节点列表或权限信息的修改次数
1
(1) version : 当前数据节点内容的版本号
(2) cversion : 当前数据节点子节点的版本号
(3) aversion : 当前数据节点ACL变更版本号
5、watcher
Zookeeper允许用户在指定节点上注册一些watcher,当数据节点发生变化的时候,zookeeper服务器会把这个变化的通知发送给感兴趣的客户端
1
6、ACL(Access Control Lists)权限控制
ZooKeeper采用ACL策略来进行权限控制,有如下权限:

(1)CREATE : 创建子节点的权限
(2)READ : 获取节点数据和节点列表的权限
(3)WRITE : 更新节点数据的权限
(4)DELETE : 删除子节点的权限
(5)ADMIN : 设置节点ACL的权限
--------------------- 
作者:Jason_LiuMeng 
来源:CSDN 
原文:https://blog.csdn.net/a314368439/article/details/70242305 
版权声明:本文为博主原创文章,转载请附上博文链接!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值