【zookeeper】框架 & 数据模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Francis123580/article/details/82253931

概念

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户

它是一个为分布式应用提供一致性服务的软件,提供的功能包括:

  • 配置维护、域名服务、分布式同步、组服务
  • 数据发布/订阅 、 负载均衡 、命名服务、master选举、分布式队列、分布式锁

zookeeper 特性

顺序一致性
从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到zookeeper中

原子性
所有事物请求的处理结果在整个集群中所有机器上的应用情况是一致的,即,要么整个集群中所有机器都成功应用了某一事务,要么都没有应用,一定不会出现集群中部分机器应用了改事务,另外一部分没有应用的情况。

单一视图
无论客户端连接的是哪个zookeeper服务器,其看到的服务端数据模型都是一致的。

可靠性
一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变。

实时性
zookeeper并不是一种强一致性,只能保证顺序一致性和最终一致性,只能称为达到了伪实时性。

zookeeper 角色

  • 领导者(leader):负责进行投票的发起和决议,更新系统状态

  • 学习者(learner):包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票

  • 观察者(observer):可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度

  • 客户端(client):请求发起方

数据模型

zookeepei中可以保存数据,正是利用zookeeper可以保存数据这一特点,我们的集群通过在zookeeper里存取数据来进行消息的传递。

树形结构

zookeeper中保存数据的结构非常类似于文件系统。都是由节点组成的树形结构。不同的是文件系统是由文件夹和文件来组成的树,而zookeeper中是由znode来组成的树。

每一个znode里都可以存放一段数据,znode下还可以挂载零个或多个子znode节点,从而组成一个树形结构。

节点类型

znode有两种类型:短暂的(ephemeral) 、持久的(persistent)

  • 短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
  • 持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
  • znode的类型在创建时确定并且之后不能再修改

znode目录节点形式

  • PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL
  • 顺序节点为节点增加了顺序性的特性

 
 

参考:
https://www.cnblogs.com/felixzh/p/5869212.html
https://www.cnblogs.com/zpb2016/p/5791632.html

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/82253931