起因:我的Dubbo服務起不來:我本地Zookeeper3.4.11,Curator4.1
Caused by: org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /dubbo/com.demo.common.service.DemoService at org.apache.zookeeper.KeeperException.create(KeeperException.java:106) ~[zookeeper-3.5.4-beta.jar:3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327] at org.apache.zookeeper.KeeperException.create(KeeperException.java:54) ~[zookeeper-3.5.4-beta.jar:3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327] at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1549) ~[zookeeper-3.5.4-beta.jar:3.5.4-beta-7f51e5b68cf2f80176ff944a9ebd2abbc65e7327] at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1183) ~[curator-framework-4.1.0.jar:4.1.0] at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1160) ~[curator-framework-4.1.0.jar:4.1.0] at org.apache.curator.connection.StandardConnectionHandlingPolicy.callWithRetry(StandardConnectionHandlingPolicy.java:64) ~[curator-client-4.1.0.jar:na] at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:100) ~[curator-client-4.1.0.jar:na] at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:1157) ~[curator-framework-4.1.0.jar:4.1.0] at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:607) ~[curator-framework-4.1.0.jar:4.1.0] at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:597) ~[curator-framework-4.1.0.jar:4.1.0] at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:575) ~[curator-framework-4.1.0.jar:4.1.0] at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:49) ~[curator-framework-4.1.0.jar:4.1.0] at com.alibaba.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createPersistent(CuratorZookeeperClient.java:76) ~[dubbo-2.6.5.jar:2.6.5] ... 33 common frames omitted
於是去了解這個版本對應關系如下:
Curator作為zookeeper的客戶端,並不是最新版的就沒問題,因為它的版本和zookeeper的版本有對應關系。
ZooKeeper 3.5.x
Curator4.0十分依賴Zookeeper3.5.X
ZooKeeper 3.4.x
Curator4.0在軟兼容模式下支持Zookeeper3.4.X,但是需要依賴排除zookeeper
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>${curator-version}</version> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency>
同時必須加入Zookeeper3.4.X的依賴,並且呢,因為是軟兼容模式,一些3.4.X不具備的新特性是不能使用的。
低版本
對於Curator2.X是支持Zookeeper3.4.X的,所以如果目前你是Zookeeper3.4.X的版本,還是使用Curator2.X的吧,比如:
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.13</version> <type>pom</type> </dependency>
版本列表
同一個項目有三個版本也是醉了,貌似現在2.X和4.X是主打了,3.X被邊緣了?