curator-framework 使用采坑记之org.apache.zookeeper.ClientCnxn - Opening socket connection to server..........Will not attempt to authenticate using SASL (unknown error)报错解决
一、curator-framework 简介 -> 关注清哥聊技术公众号,了解更多技术文章
curator-framework 是对zookeeper做的分二次分布式封装处理,目前代码也是apache 开源社区维护,如下所示。
github地址:https://github.com/apache/curator
curator-framework 中包含了基于zookeeper的分布式锁的实现、服务discovery、leader选举、基于zk的缓存实现等。在curator-framework 提供了示例代码,如下所示:
二、curator-framework 使用中的问题
1、curator-framework 在使用分布式锁时遇到的问题:
一开始使用的是2.13.0的版本,maven中引入的方式如下:
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.13.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.13.0</version> </dependency>
使用时,客户端连接zk和启动都正常没有任何的问题,在切换到最新的4.3.0的版本后出现连接报错问题
<dependency> <groupId>org.apache.curator</groupId> <artifactId>4.3.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.3.0</version> </dependency>
着实郁闷了很久,使用pom分析看了一下依赖的关系,发现因为4.3.0 依赖的zk jar包版本和服务端的zk服务版本不一致,然后怀疑是 客户端和服务端版本不一致导致的,那么尝试修改maven中zk的jar包的依赖版本。
本文作者:张永清 转载请注明博客园:https://www.cnblogs.com/laoqing/p/12768298.html
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.3.0</version> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.3.0</version> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> </dependency>
首先排除apache.curator中的依赖的zk jar,然后重新引入和服务端版本一致的3.4.14版本的zk jar。
客户端重新启动连接后,发现正常了,由此发现客户端和服务端版本一致,是可能会引发这个问题。
另外如果zk的服务端配置的zoo.cfg配置的为主机名,那么客户端zk在连接时也需要用主机名去连接,在使用ip去连接时,也有可能会出现同样的问题。