研磨CouchDB-集羣管理之預備理論

couchDB從2.0版本以後能夠支持單獨部署和集羣部署, 下面詳細介紹CouchDB集羣背後的理論,關於節點、數據庫和切分管理的具體操做說明。數據庫

在咱們實踐以前,須要掌握一些理論。bash

如etc/default.ini中所示,有一個名爲「cluster」的部分服務器

[cluster]
q=8
n=3
  • q 分片數量
  • n 每一個分片的副本數

以上是默認的配置, 在建立數據庫時,可使用request發送本身的值,從而覆蓋default.ini中的默認值網絡

在集羣操做中,在CouchDB返回fetch操做的200狀態或write操做的201狀態以前,必須達成法定數量。法定數量的定義是「相關副本」數量的一半加1。對於讀寫操做,「相關副本」的定義略有不一樣。fetch

對於讀取操做,相關副本的數量是當前可訪問的請求數據的分片的數量,這意味着在故障或網絡分區的狀況下,相關副本的數量可能低於集羣中的副本數量。可使用r參數設置讀取副本的數量。spa

對於寫操做,相關副本的數量老是n,即集羣中的副本總數量。對於寫操做,可使用w參數設置副本的數量。若是可用節點的數量少於此數量,則返回202。code

分片和副本索引

分片是數據庫的一部分。它能夠被複制屢次。分片的副本越多,就能夠擴展得越多。若是您有4個副本,這意味着這個分片的4個副本將在最多4個節點上共存。對於一個副本,您只能有一個節點,就像CouchDB 1.x同樣。任何節點都不能擁有每一個碎片副本的多個副本。CouchDB的默認值(由於2.0.0)是q=8和n=3,這意味着每一個數據庫(和輔助索引)被分紅8個分片,每一個分片有3個副本,總共有24個分片副本文件。單數據庫多分片多節點的集羣模式,對於只承載具備這些默認值的單個數據庫的CouchDB集羣,最多可使用24個節點進行水平伸縮。文檔

副本增長了故障抗性,由於一些節點能夠離線而不會崩潰。部署

  • n=1 全部節點必須正常運行
  • n=2 容許1個節點宕機
  • n=3  容許2個節點宕機
  • 等等

如上描述n<2就意味着停機。n值太高會增長服務器和複雜性,而不會帶來任何實際好處。官方建議最佳點在n=3

假設咱們有一個包含3個副本和4個分片的數據庫。這樣就獲得最多12個節點。每一個分片有3個副本。 咱們能夠丟失任何2個節點,但仍然能夠讀寫全部文檔。

若是咱們失去更多的節點會發生什麼?這取決於咱們有多幸運。只要每一個分片在網上至少有一個副本,咱們就能夠讀寫全部文檔。

若是幸運的話,最多能夠損失8個結點。

相關文章
相關標籤/搜索