我需要在项目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群集吗?如果可以,我应该使用哪个版本的服务器?
答案 0 :(得分:1)
旧客户端和更新的服务器是一个非常常见的用例,尤其是。升级时 - 服务器移动到下一个版本,而客户端在旧版本上停留一段时间,慢慢迁移(通常你有比服务器多的客户端)。所以这会得到很多锻炼。
特别是3.3客户端/服务器由ZK社区验证可以与3.4客户端/服务器一起使用,因此它应该可以正常工作。
您需要担心的一件事是,如果您在3.4客户端中使用不在3.3中且您的服务器是3.3的新功能。如果你利用例如多,这是在3.4中添加的,那么你会遇到麻烦。 3.3服务器不支持Multi,并且会失败。如果两个集群都是3.4服务器或3.3服务器集群,并且客户端是3.3或3.4并且没有使用3.3之后添加的功能那么你应该没问题。