这二者乍一看好像是一回事:都是要求遵循大多数原则(即过半数原则)。
其实,在概念上是不同的!
选主:本质是功能角色的概念。“国不能一日无主、群龙不能无首;否则,则是”一盘散沙、溃不成军“。
对于FastCFS组件的群集来说,必须要有master,这个master是在server中自动选出来的,选择master的过程需要遵循大多数原则。
因此,对于一个只有偶数个servers的群集来说,必须要引入vote角色才行。对于奇数个servers的群集则没有这个问题。
过半写:指的是数据落地安全层面的概念。
对于FastCFS的servers之间的数据同步,必须满足超过过半数的节点落地,如此才能保证任何时候至少都有1份最新版本的数据落地。
加上群集健康运行需要保持的servers数量的约束,可以保证任何时候群集都是数据安全的,保证具有可以在各种故障中恢复数据的能力。
所以,这是2个不同的东西。FastCFS中可以根据实际情况去分别选择不同的策略。
进一步,我们应该要保证任何时候都要首先满足“过半写”,然后满足“选主”,这样才能保证一个健康的群集。
细心的话,你可能会意识到:
对于2节点群集来说,非常脆弱:我们即使通过引入vote角色,如果仅有1个正常数据节点,虽然群集能正常“选主”,
但此时,无法满足“过半写”的基本条件,我们必须选择适当的写策略,否则很很容易发生数据安全层面的“脑裂”问题。
特殊的,1节点群集,是个特殊的奇数群集,满足“选主”,也不满足“过半写”,只能特殊场景使用。
标签:选主,FastCFS,群集,再谈,servers,节点,过半 From: https://www.cnblogs.com/jinzhenshui/p/17297373.html