我在网上看到过一些关于使用Zookeeper在服务器联机时为服务器分配分片编号的帖子(假设您正在跨集群分片数据)-但在我的生活中,找不到一个Java代码示例来说明如何做到这一点。有没有人已经把它弄好了?谢谢。
发布于 2012-03-16 10:41:51
在集群中分片数据有很多细节,比如复制和从故障中恢复。我假设通过分片,您的意思是您有N个节点,每个节点应该处理1/N的请求,并且客户端可以发现哪些服务器正在运行。
首先创建一个持久节点/service。每台服务器在启动时都会创建一个/service的ephemeral子级,类似于/service/hostname:port。客户端在/service上维护一个watch,并在添加和删除孩子时收到通知(客户端必须在每次通知后更新他们的手表)。通过这种方式,客户端知道哪些服务器正在为请求提供服务,并可以根据需要分发请求(轮询、随机)。当服务器宕机时,它的临时节点将消失,客户端可以停止向其发送请求。
如果你正在寻找一个zookeeper库,curator可能是最好的。客户端将使用Path-Cache,而服务器只需创建一个临时节点。
https://stackoverflow.com/questions/9723640
复制相似问题