Hello,大家好,我是兔君哦!今天主要介绍一下zookeeper,以及相关功能和数据结构。后续还会继续分享。
zookeeper定义
zookeeper是一个开源的分布式应用程序协调服务器,为分布式服务提供一致性服务。其主要功能如下
(1)配置维护
当今互联网公司为了提升系统吞吐量会部署成百上千台服务节点。但是这就为后期服务的配置文件的维护带来了不便。通常这些配置都是相同的,因而我们可以zookeeper的订阅/发布模型。当我们需要修改服务配置时,我们仅仅修改zookeeper相关节点信息,而每个服务节点又通过watcher机制实时获取节点变化的数据,从而修改本地的配置信息。
(2)域名服务
当今互联网服务都会采用去中心化的架构思想,即将原来的一整个项目拆分为多个服务,从而实现解耦,即微服务。但是这就带来了一些问题,一般一整个项目分为多个服务,而每个服务又由多个节点组成,这时一个请求过来具体哪个节点负责处理这就成为了难题。我们通过zookeeper维护一个服务地址映射表,我们仅仅知道服务名称就好,具体由哪个节点处理交给zookeeper,由相应的算法确定一个具体节点。
(3)分布式同步
在微服务系统中,我们经常会遇到一个请求由多个服务调用组成而且有前后顺序。这是我们就可以利用zookeeper的watcher机制,这些服务同时监听一个zNode,当节点的数据更改为某一数值时,则由相应的服务处理,这样就可以保证了顺序性。
(4)集群管理
所谓集群管理,包括集群监控与集群控制两大块,前者侧重对集群运行时状态的收集,后者则是对集群进行操作与控制。而zookeeper可以很好的做到这一点。
zookeeper的数据结构
(1)数据模型
它的结构很像数据结构中的树,也很像文件系统的目录,树是由节点组成的,同样Zookeeper也是由节点组成的,这种节点的名字叫做Znode,但是Zookeeper的节点引用方式是路径引用,类似于文件系统 例如:/ 动物 / 猫。这样每个节点都拥有唯一的路径。
(2)Znode结构
1)data:Znode存储的数据信息。
2)ACL:Znode的访问权限,比如哪些人或者IP可以访问本节点。
3)stat:Znode的元数据,比如事务ID,版本号,时间戳,数据大小等信息。
4)child:当前节点子节点的引用,类似二叉树的左孩子右孩子。
ps:每个Znode节点最大不超过1MB。
这是兔君的第一次分享,大家喜欢请关注+点击好看呦!