Java操作Zookeeper原理及过程详解
ZooKeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。
Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心。服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。如下图所示,在Dubbo架构中Zookeeper就担任了注册中心这一角色。
maven依赖
org.apache.zookeeper zookeeper 3.6.0
程序其它依赖:
org.apache.logging.log4j log4j-core 2.11.2 org.apache.logging.log4j log4j-1.2-api 2.11.2 org.apache.logging.log4j log4j-slf4j-impl 2.11.2 org.apache.zookeeper zookeeper 3.6.0 org.slf4j slf4j-log4j12
API操作代码:
packagecom.zhi.test; importjava.util.List; importorg.apache.logging.log4j.LogManager; importorg.apache.logging.log4j.Logger; importorg.apache.zookeeper.CreateMode; importorg.apache.zookeeper.WatchedEvent; importorg.apache.zookeeper.Watcher; importorg.apache.zookeeper.ZooDefs.Ids; importorg.apache.zookeeper.ZooKeeper; importorg.apache.zookeeper.data.Stat; importorg.junit.jupiter.api.AfterAll; importorg.junit.jupiter.api.BeforeAll; importorg.junit.jupiter.api.MethodOrderer; importorg.junit.jupiter.api.Order; importorg.junit.jupiter.api.Test; importorg.junit.jupiter.api.TestInstance; importorg.junit.jupiter.api.TestInstance.Lifecycle; importorg.junit.jupiter.api.TestMethodOrder; /** *Zookeeper操作测试 * *@author张远志 *@since2020年5月3日14:31:28 * */ @TestInstance(Lifecycle.PER_CLASS) @TestMethodOrder(MethodOrderer.OrderAnnotation.class) publicclassZookeeperTest{ privatefinalLoggerlogger=LogManager.getLogger(this.getClass()); privateZooKeeperzooKeeper; privatefinalStringpath="/test"; @BeforeAll publicvoidinit()throwsException{ zooKeeper=newZooKeeper("192.168.59.131:2181",60000,newWatcher(){ publicvoidprocess(WatchedEventevent){ logger.info("事件类型:{},路径:{}",event.getType(),event.getPath()); } }); } /** *添加数据,当路径已经存在时会报错,初始版本号为0。第三个参数是权限控制。
*第四个参数,CreateMode: *
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。