1

我需要在我的项目 A 中使用 zookeeper java 客户端。

A 有一个依赖 B,它是一个使用 zookeeper 3.3.5 java 客户端连接到“企业服务目录”zookeeper 集群的库。这个集群不在我的控制之下,我不能将它用于我的代码。A 和 B 在同一个类加载器中运行,A 中的代码必须使用 3.3.5 客户端。

还有另一个依赖项 C(它是 Solr 4.2),它在不同的 JVM 中运行。C 使用 zookeeper 3.4.5 java 客户端。

问题是A使用3.3.5客户端,C使用3.4.5客户端,但是我不想搭建两个不同的zookeeper集群。他们可以连接到相同的 zk 集群吗?如果可以,我应该使用哪个版本的服务器?

4

1 回答 1

2

旧客户端和新服务器是一个非常常见的用例,尤其是。升级时 - 服务器移动到下一个版本,而客户端在旧版本上停留一段时间,缓慢迁移(通常您的客户端比服务器多得多)。所以这得到了很多锻炼。

特别是 3.3 客户端/服务器已经过 ZK 社区的验证,可以与 3.4 客户端/服务器一起使用,因此它应该可以正常工作。

您确实需要担心的一件事是,如果您在 3.4 客户端中使用了 3.3 中没有的新功能,而您的服务器是 3.3。如果你利用3.4 中添加的例如multi,那么你会遇到麻烦。3.3 服务器不支持 Multi 并且会失败。如果两个集群都是 3.4 服务器或 3.3 服务器集群并且客户端是 3.3 或 3.4 并且不使用 3.3 之后添加的功能,那么您应该没问题。

于 2013-03-28T04:45:57.227 回答