Zookeeper概述
Zookeeper是Apache Hadoop项目下的一个子项目,是一个树形目录
服务。
Zookeeper翻译过来就是动物园管理员
,他是用来管Hadoop (大象) 、Hive(蜜蜂)、Pig(小猪)的管理员。简称zk
- adoop (大象) 、Hive(蜜蜂)、Pig(小猪)都是大数据领域的一些框架
Zookeeper是一个分布式
的、 开源的
分布式应用程序的协调服务。
- 分布式应用程序的协调服务:意思就是说是用来管理分布式应用程序的,自己不做一些事情,就是用来管人的
Zookeeper提供的主要功能包括:
- 配置管理:
作为配置中心使用
- 分布式锁:
作为分布式锁提供的组件使用
- 集群管理:
作为注册中心使用
配置管理
情形:
- 比如有三个服务(A、B、C),这三个服务(三个应用程序),将来每一个应用程序里面都可能存在一些配置文件的属性(配置信息),
- 这些属性可能有一些是相同的(比如:数据库的ip地址,数据库名称等),将来这些相同的信息可能发生变更,为了避免每一个都需要进行修改配置,减少麻烦,降低成本,所以引入了一个组件:配置中心。
- 将来A、B、C都和配置中心连接起来,这时候将公用的配置信息放入这个配置中心里面,这时候A、B、C里面就不需要再去写这些配置信息了,以后A、B、C想要上面配置信息,就直接从配置中心里面拉取供自己的服务使用就可以了,
- 再比如,一旦产生了变更,这时候A、B、C就不需要变更了,只需要配置中心变一下就ok了
分布式锁
情形:
- 有一个服务A,它要访问一些数据;
- 如果A被许多人一起访问,为了保证数据的完整性和正确性,期望数据在同一时间只能被一个人访问到,所以这时候就需要加锁
- 来一个人访问服务A,然后将这个服务给加上锁,访问完了之后再把锁打开
- 但是如果有两个或多个服务的话,由于不是一台机器,所以前面A加的锁对另一个服务不起作用,导致数据可能被两个服务所访问到,导致数据的不正确,所以出现了分布式锁组件
- 将A和B与分布式锁相连接,比如A要访问数据,A就需要去分布式锁里面要锁,获取数据的访问权限,然后分布式锁里面的这个权限就给了A,给了之后就去访问数据
- 同时B也想访问这个数据,也需要去分布式锁里面要这个锁的权限,如果这时候锁被别人(A)拿去了还没有释放,B就需要等待,直到释放
集群管理
作为注册中心使用
- 由provider服务的提供方,与服务的消费方
- 提供方provider先把自己的地址给注册中心,consumer服务的消费方将来想要访问这个provider的时候,就从注册中心去获取provider的地址,然后进行RPC的远程调用