在 用 Zookeeper + Dubbo 进行微服务实践的时候,启动 Provider 的时候出现了如下的问题,一直无法启动。

同时用 Docker 启动的 注册中心 Zookeeper 里也有如下的提示:

2018-12-19 10:43:08,770 [myid:] – INFO  [ProcessThread(sid:0 cport:2181)::PrepRequestProcessor@487] – Processed session termination for sessionid: 0x10002da0d300006

2018-12-19 10:43:08,780 [myid:] – INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] – Closed socket connection for client /172.17.0.1:49274 which had sessionid 0x10002da0d300006

2018-12-19 10:43:15,430 [myid:] – INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@215] – Accepted socket connection from /172.17.0.1:49282

2018-12-19 10:43:15,433 [myid:] – INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@949] – Client attempting to establish new session at /172.17.0.1:49282

2018-12-19 10:43:15,438 [myid:] – INFO  [SyncThread:0:ZooKeeperServer@694] – Established session 0x10002da0d300008 with negotiated timeout 40000 for client /172.17.0.1:49282

2018-12-19 10:43:15,455 [myid:] – WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@756] – Received packet at server of unknown type 15

2018-12-19 10:43:15,457 [myid:] – INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1056] – Closed socket connection for client /172.17.0.1:49282 which had sessionid 0x10002da0d300008

说明在消费者和注册中心进行交互的时候出现了一些问题,无法进行注册。

同时,注册中心的日志里有很重要的一句话,

Received packet at server of unknown type 15

上网多方搜索,似乎是说注册中心的版本和 Provider 的架包版本不一致所致。

仔细一看 Provider 的日志,

这里和 Dubbo 的依赖 Curator-Framework 有关,可以看到他用的架包版本是 3.5.3-beta,

而我们 Zookeeper 的版本是 3.4.13,

架包的版本太新了,所以我们得把 Curator-Framework 的版本降下来,

<!-- Curator -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.13.0</version>
</dependency>

降到 2.13.0,尝试运行,可以看到正确注册运行了。