zookeeper-分布式协调工具(一),java操作zookeeper

摘要:
ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群,基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。zookeeper运用场景1.dubbo+zk实现rpc远程调用中,zk在其中的作用类似springcloud中的eureka注册服务中心,管理接口服务2.发布订阅3.负载均衡4.分布通知5.分布式锁zokeeper存储数据结构在zk的节点中,每个节点名称是不可以重复的,可以依次无限递增。

什么是zookeeper

1.Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步、命名服务、集群维护等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群,基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

zookeeper运用场景

1.dubbo+zk实现rpc远程调用中,zk在其中的作用类似springcloud中的eureka注册服务中心,管理接口服务

2.发布订阅

3.负载均衡

4.分布通知

5.分布式锁

zokeeper存储数据结构(类似xml数据结构)

zookeeper-分布式协调工具(一),java操作zookeeper第1张

在zk的节点中,每个节点名称是不可以重复的(实现分布式锁的关键性),可以依次无限递增。节点的类型可以分为四种:

1.持久节点,一旦创建就保存到硬盘上面

2.临时节点,创建以后如果断开连接则该节点自动删除

3.顺序持久节点

4.顺序临时节点

每个节点都可以通过节点事件监听,对于节点的变化(增,删,改)都能获取到

例如:在使用zk作为dobbo注册服务中心的时候

zookeeper-分布式协调工具(一),java操作zookeeper第2张

在Windows环境下安装运行zk

1.下载Windows版本zk,解压以后,修改配置文件zoo_sample.cfg名字为zoo.cfg

2.在zk的bi目录下找到zkServer.bat 启动zk

zookeeper-分布式协调工具(一),java操作zookeeper第3张

3.在zk的bi目录下找到zkCli 启动zk的客户端工具,可以在cmd里面对zk的节点进行创建 修改和删除,可以根据zk的可视化管理工具进行查看,例如创建一个会员服务 ip地址是 127.0.0.1

zookeeper-分布式协调工具(一),java操作zookeeper第4张

可以通过ls 空格 / 查看当前的节点

zookeeper-分布式协调工具(一),java操作zookeeper第5张

zookeeper-分布式协调工具(一),java操作zookeeper第6张

JAVA如何操作Zookeeper

1.导入zookeeper所需要的依赖:

<dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
        </dependency>

2.编写java类创建zookeeper的节点

packagecom.zk.demo;
importjava.io.IOException;
importorg.apache.zookeeper.CreateMode;
importorg.apache.zookeeper.KeeperException;
importorg.apache.zookeeper.WatchedEvent;
importorg.apache.zookeeper.Watcher;
importorg.apache.zookeeper.Watcher.Event.EventType;
importorg.apache.zookeeper.Watcher.Event.KeeperState;
importorg.apache.zookeeper.ZooDefs.Ids;
importorg.apache.zookeeper.ZooKeeper;
public classCreateZookeeper {
    /**
     * ZK地址和端口
     */
    private static final String CONNETTION_ADDR = "127.0.0.1:2181";
    /**
     * session超时时间
     */
    private static final int SESSION_TIMEOUT = 5000;
    public static void main(String[] args) throwsIOException, InterruptedException, KeeperException {
        ZooKeeper zk = new ZooKeeper(CONNETTION_ADDR, SESSION_TIMEOUT, newWatcher() {
            public voidprocess(WatchedEvent event) {
                //获取时间的状态
                KeeperState keeperState =event.getState();
                EventType tventType =event.getType();
                //如果是建立连接
                if (KeeperState.SyncConnected ==keeperState) {
                    if (EventType.None ==tventType) {
                        System.out.println("创建zk连接");
                    }
                }
            }
        });
        zk.create("/zk", "testZookeeper".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        System.out.println("创建节点成功");
        zk.close();
    }
}

3.运行测试类,启动zk服务,通过命令或者可视化客户端查看生成的zk节点

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/developer/mvnResponsity/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/developer/mvnResponsity/org/slf4j/slf4j-log4j12/1.7.26/slf4j-log4j12-1.7.26.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
15:37:24.266 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18GMT
15:37:24.268 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:host.name=NNH1J2ASSQP10BA
15:37:24.268 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.version=1.8.0_172
15:37:24.268 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.vendor=Oracle Corporation
15:37:24.268 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.home=E:Javajdk1.8.0_172jre
15:37:24.268 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.class.path=E:Javajdk1.8.0_172jrelib
esources.jar;E:Javajdk1.8.0_172jrelib
t.jar;E:Javajdk1.8.0_172jrelibjsse.jar;E:Javajdk1.8.0_172jrelibjce.jar;E:Javajdk1.8.0_172jrelibcharsets.jar;E:Javajdk1.8.0_172jrelibjfr.jar;E:Javajdk1.8.0_172jrelibextaccess-bridge-64.jar;E:Javajdk1.8.0_172jrelibextcldrdata.jar;E:Javajdk1.8.0_172jrelibextdnsns.jar;E:Javajdk1.8.0_172jrelibextjaccess.jar;E:Javajdk1.8.0_172jrelibextjfxrt.jar;E:Javajdk1.8.0_172jrelibextlocaledata.jar;E:Javajdk1.8.0_172jrelibext
ashorn.jar;E:Javajdk1.8.0_172jrelibextsunec.jar;E:Javajdk1.8.0_172jrelibextsunjce_provider.jar;E:Javajdk1.8.0_172jrelibextsunmscapi.jar;E:Javajdk1.8.0_172jrelibextsunpkcs11.jar;E:Javajdk1.8.0_172jrelibextzipfs.jar;E:codeservletjava-zk	argetclasses;E:codeservletjava-zklibzookeeper-3.4.14.jar;E:developermvnResponsityorgspringframeworkootspring-boot-starter1.5.21.RELEASEspring-boot-starter-1.5.21.RELEASE.jar;E:developermvnResponsityorgspringframeworkootspring-boot1.5.21.RELEASEspring-boot-1.5.21.RELEASE.jar;E:developermvnResponsityorgspringframeworkspring-context4.3.24.RELEASEspring-context-4.3.24.RELEASE.jar;E:developermvnResponsityorgspringframeworkspring-aop4.3.24.RELEASEspring-aop-4.3.24.RELEASE.jar;E:developermvnResponsityorgspringframeworkspring-beans4.3.24.RELEASEspring-beans-4.3.24.RELEASE.jar;E:developermvnResponsityorgspringframeworkspring-expression4.3.24.RELEASEspring-expression-4.3.24.RELEASE.jar;E:developermvnResponsityorgspringframeworkootspring-boot-autoconfigure1.5.21.RELEASEspring-boot-autoconfigure-1.5.21.RELEASE.jar;E:developermvnResponsityorgspringframeworkootspring-boot-starter-logging1.5.21.RELEASEspring-boot-starter-logging-1.5.21.RELEASE.jar;E:developermvnResponsitychqoslogbacklogback-classic1.1.11logback-classic-1.1.11.jar;E:developermvnResponsitychqoslogbacklogback-core1.1.11logback-core-1.1.11.jar;E:developermvnResponsityorgslf4jjcl-over-slf4j1.7.26jcl-over-slf4j-1.7.26.jar;E:developermvnResponsityorgslf4jjul-to-slf4j1.7.26jul-to-slf4j-1.7.26.jar;E:developermvnResponsityorgslf4jlog4j-over-slf4j1.7.26log4j-over-slf4j-1.7.26.jar;E:developermvnResponsityorgspringframeworkspring-core4.3.24.RELEASEspring-core-4.3.24.RELEASE.jar;E:developermvnResponsityorgyamlsnakeyaml1.17snakeyaml-1.17.jar;E:developermvnResponsityorgapachezookeeperzookeeper3.4.14zookeeper-3.4.14.jar;E:developermvnResponsityorgslf4jslf4j-api1.7.26slf4j-api-1.7.26.jar;E:developermvnResponsityorgslf4jslf4j-log4j121.7.26slf4j-log4j12-1.7.26.jar;E:developermvnResponsitycomgithubspotbugsspotbugs-annotations3.1.9spotbugs-annotations-3.1.9.jar;E:developermvnResponsitycomgooglecodefindbugsjsr3053.0.2jsr305-3.0.2.jar;E:developermvnResponsitylog4jlog4j1.2.17log4j-1.2.17.jar;E:developermvnResponsityjlinejline

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇人工智能深度学习入门练习之(26)TensorFlow – 例子:人工神经网络(ANN)CentOS 7 修改设置静态IP和DNS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux php安装扩展方法 查找配置文件

如何在linux中查看nginx、apache、php、mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档。这时该怎么判断找到正确的加载文件路径了。可以通过以下来判断 1、判断apache 首先执行命令找到httpd路径 ps aux | grep httpd 如httpd路径为 /usr/local/apache/bin/http...

Apache 分割日志

为什么要分割日志 随着网站的 访问越来越大,WebServer产生的日志文件也会越来越大,如果不对日志进行分割,那么只能一次将大的日志(如Apache的日志)整个删除,这样也 丢失了很多对网站比较宝贵的信息,因为这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等,因此管理好这些海量的日志对网站的意义是很大 的。 本文将总结一些实用的日志分割方...

大数据的那些面试题及答案(一) ---阿善有用

文章目录 1. Flume系列: 2. zookeeper系列 3.spark系列 4.Mysql系列 5.其他大数据面试题 1. Flume系列: 1.Channel Selectors有几种类型,它们的区别是什么?答:有两种。Replicating Channel Selector(默认的)和Multiplexing Channel Sele...

apache配置禁止访问某些文件/目录

 我们来看俩段通常对上传目录设置无权限的列子,配置如下: 代码如下: ? 1 2 3 4 5 6 <Directory "/var/www/upload"> <FilesMatch ".php"> Order Allow,Deny Deny from all </FilesMatch> </Dir...

org.apache.commons.httpclient工具类

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.ap...

elk日志收集架构

ELK日志系统整体架构:   结构解读: 整个架构从左到右,总共分为5层 最左边的是业务服务器集群,上面安装了filebeat做日志采集,同时把采集的日志分别发送给多个kafka 服务。 第二层、数据缓存层,把数据转存到本地的kafka broker+zookeeper 集群中。 第三层、数据转发层,这个单独的Logstash节点会实时去kafka br...