一致性HASH演算法是什麼?
一致性HASH演算法是一種特殊的HASH演算法,目的是為了解決分散式快取的問題,在移除或新增一個伺服器時,能夠盡可能小地改變已存在的服務請求與處理請求伺服器之間的對應關係。
雜湊演算法適應條件
均衡性(Balance)
平衡性是指雜湊的結果能夠盡可能分散到所有的緩衝中去,這樣可以使得所有的緩衝空間都被利用。很多哈希演算法都能夠滿足這項條件。
單調性(Monotonicity)
單調性是指如果已經有一些內容透過哈希分派到了對應的緩衝中,又有新的緩衝區加入到系統中,那麼哈希的結果應能確保原有已指派的內容可以被對應到新的緩衝區去,而不會被對應到舊的緩衝集合中的其他緩衝區。 (這段翻譯訊息有負面價值的,當緩衝區大小變化時一致性哈希(Consistent hashing)盡量保護已分配的內容不會被重新映射到新緩衝區。)
分散性( Spread)
在分散式環境中,終端機有可能看不到所有的緩衝,而是只能看到其中的一部分。當終端希望透過哈希過程將內容映射到緩衝時,由於不同終端所見的緩衝範圍有可能不同,從而導致哈希的結果不一致,最終的結果是相同的內容被不同的終端映射到不同的緩衝區中。這種情況顯然是應該避免的,因為它導致相同內容被儲存到不同緩衝中去,降低了系統儲存的效率。分散性的定義就是上述情況發生的嚴重程度。好的哈希演算法應能盡量避免不一致的情況發生,也就是盡量降低分散性。
負載(Load)
負載問題實際上是從另一個角度看待分散性問題。既然不同的終端可能將相同的內容對應到不同的緩衝區中,那麼對於一個特定的緩衝區而言,也可能被不同的使用者對應為不同的內容。與分散性一樣,這種情況也是應避免的,因此好的雜湊演算法應能盡量降低緩衝的負荷。
推薦教學:《PHP教學》
以上是一致性HASH演算法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!