2017-04-03 97 views
1

我有哪裏我期待複製在多個服務器(HA和可擴展性的目的)的單一數據庫的使用情況下,集羣VS複製

會不會有任何缺點運行3節點副本,而不是3節點集羣?

回答

2

Couchdb docs 11.2提供的示例集羣配置:

[cluster] 
    q=8 
    r=2 
    w=2 
    n=3 

q - 碎片的數目。

的R - 與具有CouchDB的有200和文檔返回之前,可以讀取同一版本的文件的副本的數目。如果文檔只有一個副本可訪問,則返回200.

w - 在使用201返回寫入之前需要保存文檔的節點數。如果保存文檔的節點爲0 ,返回202。

N - 有充分的文件副本的數量。副本。

[cluster] 
    q=1 
    r=1 
    w=1 
    n=3 

正確複製時:

你3部分副本的行爲應該是等價的。這是集羣的一個可能的配置,而不是因爲它缺少一個最佳:

  • 確認的好處是多個節點和多數 確認保存它被確認之前的節點。

  • 確認多個節點和大多數節點 確認修訂在返回之前是正確的好處。

  • 可擴展性超越通過sharding單個節點的存儲的數據庫。

  • 改變到任何配置相當於羣集與Q,R或W> 1參數而無需切換到羣集的能力。

間接地確認了限制令副本之間,以解決更多的潛在衝突,如果這些副本實際上是用於網絡的可擴展性和更大的勝算在丟失的記錄形式的實際不一致如果一個節點承認與失敗保存並傳遞給其他副本。

2

您將使用哪個版本的CouchDB?如果2.0.0以上,可能沒有理由不使用真正的集羣。

我能想到使用副本而不是集羣的唯一原因是爲了便於配置,或者因爲您的數據庫(即CouchDB < 2.0.0)不支持它。

但如果你現在使用的集羣,甚至在短短3個節點,你已經建立了更大的擴展之後,就通過添加更多的節點。

是否有一個原因,你可能不希望使用集羣?

+0

感謝您的回答。 其實,我現在已經在爲我的3個節點使用集羣了。 我想嘗試切換到簡單複製的原因就像您所說的那樣,易於配置。 我正在使用docker容器來運行集羣,並且偶爾會出現一些問題,例如erlang cookie被取消同步。 擁有一個集羣也迫使我創建一個用於備份我的數據庫的第四臺服務器。 基本上我的問題是,是否有任何缺點(性能,更多的數據損壞等)運行一個簡單的3節點副本。 – romainrbr