2012-11-30 113 views
3

我目前正在查看CouchDB,我明白我必須手動指定所有的複製。如果我想在100個節點上使用它,我將如何進行復制?很多服務器上的couchdb複製

  • 做99「複製到」和99的每個節點上的「從複製」
    • 感覺就像這將是矯枉過正由於節點複製包括所有其他節點複製到它
  • 做1個複製到下一個,形成一個圓圈(如A - 「乙 - 」ç - > A)
    • 會工作,直到一個崩潰,那麼所有的等待,直到它回來
    • 的laten cy將是巨大的,從第一個複製到最後

難道沒有辦法說:「這裏有完整的網絡上的IP地址3。連接到它們,當你看到適合喜歡獨立P2P」與大家分享?

感謝您的見解

+1

也許[BigCouch](https://github.com/cloudant/bigcouch)是你應該用什麼來代替?它基本上需要大量的節點簇,並允許它們作爲CouchDB的單個實例出現在最終用戶/應用程序中。 –

+0

我同意Dominic。看看Cloudant併爲自己省去麻煩。你可能在分割的是BigCouch(和Cloudant)爲你做的分割。 – AndyD

回答

1

BigCouch將不提供跨數據中心的東西開箱。Cloudant DBaaS(基於BigCouch)確實已經在多個數據中心中實現了這種設置

BigCouch是Apache CouchDB的分解式「Dynamo式」分支 - 它將在未來合併到「mainline」Apache CouchDB fwiw中。分片存在於同一個數據中心的節點(服務器)上。「經典」CouchDB風格的複製用於保證BigCouches處於各種數據中心的異步操作中。

CouchDB樣式的複製(n-master)是基於更改的,因此複製只包含最新的更改。

您需要爲每個節點/數據庫組合設置複製/複製對。但是,如果您的所有服務器都是相同的,則複製實際上不會經常發生 - 只會在需要時纔會發生。

如果A得到更改,複製將其發送到BC(etc)。但是,如果B - 剛剛獲得該更改 - 將其複製到C,然後A也有機會 - 由於網絡延遲等 - 當A最終嘗試時,它會意識到數據已經存在,而不是麻煩再次發送更改。

如果這是您的設置的標準部分(即,每次你做一個數據庫,你希望它複製到其他地方),那麼我強烈建議自動化設置。

另外,簽出_replicator數據庫。管理正在發生的事情要容易得多: https://gist.github.com/fdmanana/832610

希望在這裏有所幫助。 :)