蚂蚁课堂每特教育第五期互联网架构分布式协调工具zookeeper快速入门_第1页
蚂蚁课堂每特教育第五期互联网架构分布式协调工具zookeeper快速入门_第2页
蚂蚁课堂每特教育第五期互联网架构分布式协调工具zookeeper快速入门_第3页
蚂蚁课堂每特教育第五期互联网架构分布式协调工具zookeeper快速入门_第4页
蚂蚁课堂每特教育第五期互联网架构分布式协调工具zookeeper快速入门_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、分布式 Zookeeper 快速入门Zookeeper文档上这么解释 zookeeper,它是一个分布式服务框架,是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。上面的解释有点抽象,简单来说 zookeeper=文件系统+通知机制。Zookeeper 应用场景.5.中心(Dubbo+Zookeeper)分布式配置中心(存放配置文件)分布式锁 分布式队列分布式文件系统Zookeeper 单机版本Linux 环境安装 Zookeeper1.解压 zk 压缩包tar -

2、zxvf zookeeper-3.4.14.tar.gz2. 进入到 zk 目录cd zookeeper-3.4.143.在 zk 目录中创建 data 和 logs 文件夹mkdir data mkdir logs4.进入到 conf 目录,修改文件名称mv zoo_svi zoo.cfgle.cfg zoo.cfgdataDir =/usr/local/zookeeper-3.4.14/datadataLogDir=/usr/local/zookeeper-3.4.14/logs 5.启动 zk./zkServer.sh start./zkServer.sh sus单机启动成功注意:在安装

3、 Zk 的时候提前安装好jdk 环境 建议java8 以上Zookeeper 相关特性1、高效适用于大型的分布式系统. 如果写多的话性能不高,因为它要做所有节点之间的数据同步。2、可靠支持集群,大部分可用即服务可用3、顺序所有写请求由 leader 生成递增 zxid,写操作时,采用 mvcc 乐观锁机制进行写,保证所有写操作顺序。4、简洁对外提供的 api 非常实用、简洁。仅仅 7 个 api create - 在树形结构的位置中创建节点delete - 删除一个节点exists - 测试节点在指定位置上是否存在get data - 从节点上数据set data - 往节点写入输入get c

4、hilren - 检索一个节点的子节点列表sync - 等待传输数据Zookeeper 数据模型临时节点临时顺序节点持久节点持久顺序节点Java 语言操作 ZKACL 权限控制ACL 权限模型,实际上就是对树每个节点实现控制的认证有 4 种方式:world:默认方式,相当于全世界都能auth:代表已经认证通过的用户(cli 中可以通过 addauthdigest uswd 来添加当前上下文中的用户)digest:即用户名:这种方式认证,这也是业务系统中最常用的ip:使用 Ip 地址认证1.给节点设置权限/ 1.创建 zooKeeper 连接ZooKeeper zooKeeper = new Z

5、ooKeeper(35, 500, new Watcher() public void pros(WatchedEvent watchedEvent) / 1.创建 zooKeeper 连接ZooKeeper zooKeeper = new ZooKeeper(35, 500, new Watcher() public void pros(WatchedEvent watchedEvent) System.out.prln(watchedEvent.getSe().name(););/ 2.创建临时节点String s1 = zooKeepe

6、r.create(/mayikt, mayikt.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);System.out.prln(s1: + s1);/ 3.创建持久节点String s2 = zooKeeper.create(/mayikt, mayikt.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.prln(s2: + s2);/ 4.创建持久节点带顺序String s3 = zooKeeper.create

7、(/mayikt, mayikt.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT_SEQUENTIAL);System.out.prln(s3: + s3);/ 5.创建临时节点带顺序String s4 = zooKeeper.create(/mayikt, mayikt.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL_SEQUENTIAL);System.out.prln(s4: + s4);2.查询该节点必须账号实现服务与发现/ 1.创建 z

8、ooKeeper 连接ZooKeeper zooKeeper = new ZooKeeper(35, 500, new Watcher() public void pros(WatchedEvent watchedEvent) System.out.prln(watchedEvent.getSe().name(););/ 2.设置 zk 连接账号zooKeeper.addAuthInfo(digest, guest:guest123.getBytes();byte bytes = zooKeeper.getData(/mayikt_6440, null, new S(

9、);String string = new String(bytes);System.out.prln(string);System.out.prln(watchedEvent.getSe().name(););/ 2.创建账号权限 admin 可以实现读写操作Id id1 = new Id(digest, DigestAuthenticationProvider.generateDigest(admin:admin123);ACL acl1 = new ACL(ZooDefs.Perms.ALL, id1);/ 3.创建权限 guest 只允许做读操作Id id2 = new Id(dige

10、st, DigestAuthenticationProvider.generateDigest(guest:guest123);ACL acl2 = new ACL(ZooDefs.Perms.READ, id2);/ 4.添加该账号ArrayList a= new ArrayList();a.add(acl1);a.add(acl2);/ 5.创建该节点String s1 = zooKeeper.create(/memberservice, mayikt.getBytes(), a, CreateMode.PERSISTENT);System.out.prln(s1: + s1);服务端St

11、ring data = : + servort;zooKeeper.create(parentPath + / + servort, data.getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);Componentpublic class ApplicationRunnerImpl implements ApplicationRunner Value($servort)private String servort;Overridepublic void run(ApplicationArguments args) thro

12、ws Exception start();public void start() throws IOException, KeeperException,erruptedException ZooKeeper zooKeeper = new ZooKeeper(35, 50000, new Watcher() Overridepublic void pros(WatchedEvent watchedEvent) System.out.prln(watchedEvent.getSe().name(););String parentPath = /mayikt;Sexis

13、ts = zooKeeper.exists(parentPath, new Watcher() Overridepublic void pros(WatchedEvent event) );/ 如果当前父节点不存在的情况 就创建if (exists = null) zooKeeper.create(parentPath, mayikt.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);/ 将当前服务信息到 zk 上客户端获取Zookeeper 事件通知Zookeeper Watcher 事件通知 当节点发生变化的时候

14、修改、删除、新增 都会到通知;相关命令service keepalived startservice keepalived stopprivate sic final CountDownLatch countDownLatch = new CountDownLatch(1);public sic void main(String args) throws IOException,erruptedException, KeeperExceptionZooKeeper zooKeeper = new ZooKeeper(35, 50000, new Watcher() O

15、verridepublic void pros(WatchedEvent watchedEvent) Event.KeeperSe se = watchedEvent.getSe();/ 如果当前连接成功,则开始放心if (se = Event.KeeperSe.SyncConnected) System.out.prln(zk 连接成功);countDownLatch.countDown(););countDownLatch.await();String path = /mayikt;/ 获取该节点下子集List children = zooKeeper.getChildren(path,

16、null, new S();for (i = 0; i children.size(); i+) String pathChildren = path + / + children.get(i);byte data = zooKeeper.getData(pathChildren, null, new S();System.out.prln(服务接口地址: + new String(data);systemctl stop firewalldZookeeper简称 zk 分布式领域中遇到Zookeeper 应用场景1.分布式锁(redis 或者 zk)分布式领域中协调者2.Dubbo 服务(zk)分布式配置中心 disconfig分布式消息中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论