zookeeper本地伪集群搭建

Zookeeper是什么
官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。
1、 文件系统
Zookeeper维护一个类似文件系统的数据结构:
每个子目录项如 NameService 都被称作为 znode(目录节点),和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。
有四种类型的znode:
PERSISTENT-持久化目录节点
客户端与zookeeper断开连接后,该节点依旧存在
PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号
EPHEMERAL-临时目录节点
客户端与zookeeper断开连接后,该节点被删除
EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号
2、 监听通知机制
客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。
Zookeeper能做什么
zookeeper功能非常强大,可以实现诸如分布式应用配置管理、统一命名服务、状态同步服务、集群管理等功能,我们这里拿比较简单的分布式应用配置管理为例来说明。
假设我们的程序是分布式部署在多台机器上,如果我们要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把这些配置全部放到zookeeper上去,保存在 zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 zookeeper 的通知,然后从 zookeeper 获取新的配置信息应用到系统中。
以上来自:https://blog.csdn.net/java_66666/article/details/81015302
Zookeeper单机模式安装
zookeeper下载:http://archive.apache.org/dist/zookeeper/
解压修改conf下的zoo_sample.cfg修改为zoo.cfg

tickTime 
时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。 
tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
clientPort 
zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
dataDir 
无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录
bin目录zkServer.cmd		启动
bin目录zCli.cmd         客户端启动

可以使用ZooInspector连接zookeeper查看
Zookeepe本地伪集群搭建
下载的zookeeper解压复制3份分别命名为

zookeeper1
zookeeper2
zookeeper3

修改conf配置文件为

initLimit=5
syncLimit=2
clientPort=2181
tickTime=2000
dataDir=D://zookeeper//zookeeper1//data
dataLogDir=D://zookeeper//zookeeper1//log
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

注意:server.A=B:C:D
其中A表示进程id,B表示ip地址
C是follower和leader交换消息所使用的端口,D表示选举leader所使用的端口。
原来我的配置是照网上的进程不同,ip,交换消息的端口和选举leader的端口一致,
导致集群一直起不来,后来找了篇博客看到这个配置,改了下发下本地伪集群可以启
成功了,我这边觉得原因是本地选举的交换消息的端口,和选举leader的端口配成一致会导致进程被占用,导致集群起不起来
java连接
添加依赖

 <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j</artifactId>
                    <groupId>log4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

public class zookeeperConfig {
    public static void main(String[] args) {
        String connection = "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183";
        ZkClient zkClient = new ZkClient(connection);
        zkClient.createPersistent("/toov5_01");
        zkClient.close();
    }
}

zookeeper集群配置完了,有什么地方错误了欢迎各位大佬指点,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值