我需要在我的项目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集群吗?如果可以,我应该使用哪个版本的服务器?
发布于 2013-03-28 12:45:57
旧的客户端和新的服务器是非常常见的用例,例如。当升级时-服务器移动到下一个版本,而客户端在旧版本上停留了一段时间,缓慢地迁移(通常您的客户端比服务器多得多)。所以这会得到很大的锻炼。
特别是,3.3客户机/服务器被ZK社区验证为可以与3.4客户机/服务器一起工作,所以它应该工作得很好。
您需要担心的一件事是,如果您使用的是3.4客户端中的新功能,而您的服务器版本是3.3,而这些新功能不在3.3中。如果你利用了multi,它是在3.4中添加的,那么你就会遇到麻烦。Multi不受3.3服务器支持,因此会失败。如果两个集群都是3.4服务器,或者3.3服务器集群,而客户端是3.3或3.4,并且没有使用3.3之后添加的特性,那么您应该没有问题。
https://stackoverflow.com/questions/15673313
复制相似问题