java访问zookeeper
❶ java连接zookeeper集群,必须配置多个ip吗
zookeeper的集群一般都是奇数,多采用三台服务器,就是一个leader,两个follower的模式,你只填一个IP,那就是单机模式
❷ 如何解决java接口访问ZooKeeper时的connectionloss错误
常见错误日志如下:
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss
1. 原因:
是因为ZooKeeper建立连接时采用异步操作,连接操作后并不能保证ZK连接已成功。如果在ZK连接成功前的这个小时间窗口去访问ZK,就会碰到如上错误。
2. 解决思路
我们在新建ZK连接后要等一段时间,保证连接成功后再访问ZK。
3. 网上比较赞同的解决方案:
主要利用两个Java类:
(1)java.util.concurrent.CountDownLatch:
一个同步辅助类,类似倒数计数,直到计数器为0时才能对资源“解锁”。未解锁前等待该资源的进程只能被阻塞。
主要方法:
public CountDownLatch(int count); /* 构造函数,参数指定计数次数 */
public void countDown(); /* 当前线程调用此函数,则计数减一 */
public void await() throws InterruptedException; /* 此函数会一直阻塞当前线程,直到计时器的值为0为止 */
(2)org.apache.zookeeper.Watcher
ZooKeeper有一个很有用的功能,就是集群上每一个变化都可以通知到自定义的Watchcer。
❸ 如何启动zookeeper-3.3.6
如何启动zookeeper-3.3.6?
启动zookeeper-3.3.6的方法:下载安装配置zookeeper的服务器环境-创建文件-设置权限-编辑-重启即可。
具体步骤:
一、登陆linux服务器用cd 命令切换到/etc/rc.d/init.d/目录下。
十、重启即可。
❹ java项目打成war后,项目中用到的zookeeper或mq等服务需要再安装吗
肯定需要啊。目前没有那哪种编译器是内置了zookeeper和mq的,只是提供了对应的驱动和检测功能。另外,在你的编译器上运行时肯定也是需要另外启动zk和mq的,打包的时候是不会把单独的第三方程序打包进去的。