Quorum (分散式系統)
Quorum 機制,是一種分散式系統中常用的,用來保證資料冗餘和最終一致性的投票演算法,其主要數學思想來源於鴿巢原理。
基於Quorum投票的冗餘控制演算法
[編輯]在有冗餘資料的分散式儲存系統當中,冗餘資料對象會在不同的機器之間存放多份拷貝。但是同一時刻一個資料對象的多份拷貝只能用於讀或者用於寫。
該演算法可以保證同一份資料對象的多份拷貝不會被超過兩個訪問對象讀寫。
演算法來源於[Gifford, 1979][3][1]。 分散式系統中的每一份資料拷貝對象都被賦予一票。每一個讀操作獲得的票數必須大於最小讀票數(read quorum)(Vr),每個寫操作獲得的票數必須大於最小寫票數(write quorum)(Vw)才能讀或者寫。如果系統有V票(意味著一個資料對象有V份冗餘拷貝),那麼最小讀寫票數(quorum)應滿足如下限制:
- Vr + Vw > V
- Vw > V/2
第一條規則保證了一個資料不會被同時讀寫。當一個寫操作請求過來的時候,它必須要獲得Vw個冗餘拷貝的許可。而剩下的數量是V-Vw 不夠Vr,因此不能再有讀請求過來了。同理,當讀請求已經獲得了Vr個冗餘拷貝的許可時,寫請求就無法獲得許可了。
第二條規則保證了資料的串行化修改。一份資料的冗餘拷貝不可能同時被兩個寫請求修改。
演算法的好處
[編輯]在分散式系統中,冗餘資料是保證可靠性的手段,因此冗餘資料的一致性維護就非常重要。一般而言,一個寫操作必須要對所有的冗餘資料都更新完成了,才能稱為成功結束。比如一份資料在5台裝置上有冗餘,因為不知道讀資料會落在哪一台裝置上,那麼一次寫操作,必須5台裝置都更新完成,寫操作才能返回。
對於寫操作比較頻繁的系統,這個操作的瓶頸非常大。Quorum演算法可以讓寫操作只要寫完3台就返回。剩下的由系統內部緩慢同步完成。而讀操作,則需要也至少讀3台,才能保證至少可以讀到一個最新的資料。
Quorum的讀寫最小票數可以用來做為系統在讀、寫效能方面的一個可調節參數。寫票數Vw越大,則讀票數Vr越小,這時候系統讀的開銷就小。反之則寫的開銷就小。
參考文獻
[編輯]- ^
Gifford, David K. SOSP '79: Proceedings of the seventh ACM symposium on Operating systems principles. Pacific Grove, California, United States: ACM: 150–162. 1979. doi:10.1145/800215.806583.
|contribution=
被忽略 (幫助)