所以,原因是配置服務器進行兩階段提交的方式。而如果你有一個配置服務器,並且它失敗了,那麼你的整個系統就會失敗。如果您有3個,但其中一個失敗,則所有元數據仍然可用,但您失去了2階段提交的彈性因子。沒有3個成員就不能進行2階段提交。
因此,您仍可能會從其他兩個讀取中讀取數據,但平衡器基本上已關閉,因此不會發生塊遷移或拆分(因此元數據將變爲只讀)。這是因爲您不能使用3節點配置設置使用的提交進程來提交拆分或遷移,所以它們不會發生。
不推薦使用1個配置服務器運行。基本上,如果它發生故障,你不知道你的數據在哪裏。
2階段提交僅適用於3臺機器,因爲它可以確保您的數據保持一致狀態。這意味着如果一臺機器在更新過程中死亡,那麼更新將會失敗或者持續,這取決於它是否被提交給至少另一個會更新第三個節點的節點(因此是2階段提交)。因此,使用左側的2個配置服務器來讀取分片羣集是安全的。
你不能這樣做2節點。它可能已經過了,它可能沒有,你不能說,因爲你不能比較剩下的最後一個節點和其他節點之間的任何事情。因此,安全的做法是在第三個節點備份之前不要進行任何更新,否則您可能會讀取過期數據。
如果您想要無縫失敗抵抗,那麼使用2因爲您使用2階段承諾是沒有意義的。如果你寧願沒有任何可能不正確的數據,它實際上沒有更多的耐久性,然後1節點。而在分片集羣中,任何事情和不正確的數據都會攜手並進,因爲無論哪種方式你都不知道在哪裏找到你的組塊。
它基本上是爲了保護您免受潛在的配置數據損壞和不一致之處。
但是爲什麼不在2個節點中使用2階段提交?而且一切都會繼續,分裂和移動將會發生。如果需要,您可以使用1個配置服務器。 –