2012-03-15 63 views
3

我在網上看到一些關於使用Zookeeper將分片號碼分配給服務器的帖子,因爲它們聯機(假設您正在將數據分散到集羣中) - 但是對於我而言,無法找到Java代碼如何做到這一點的例子。任何人有這個工作已經?謝謝。用於分配分片索引的Zookeeper

回答

2

羣集中的數據分片有很多細節,例如複製和故障恢復。我假設你是指你有N節點,並且每個節點應該處理這些請求中的第1個,並且客戶端可以發現哪些服務器已啓動。

您首先創建一個持久節點/service。每臺服務器在啓動時會創建一個ephemeral/service的子項,如/service/hostname:port。客戶在/service上保留watch,並在添加和移除子女時得到通知(客戶必須在每次通知後更新其手錶)。這樣客戶端就知道哪些服務器正在爲請求提供服務,並且可以根據需要分配請求(循環,隨機)。當服務器關閉時,它的臨時節點將消失,客戶端可以停止發送請求。

如果您正在尋找zookeeper庫,curator可能是最好的。客戶端將使用Path-Cache,而服務器只是創建一個臨時節點。