他們各有什麼區別,為什麼會如此選型?
paxos是最先解決拜占庭將軍問題的演算法,利用過半選舉的機制,保證了集群資料副本的一致性(微服務中服務註冊與發現的場景,其實已經不再適用了)
redis 使用raft實現了自己的分布式一致性。raft 本身和 paxos 並沒有場景上的區別。更多的是,協議上的簡化、term 概念的強化、log 只會從 leader 到 follower 單向同步,使得實現起來會很方便
hadoop 偏向於離線的海量資料處理,利用 zookeeper 來保證資料副本的一致性,是最為合適的
elasticsearch 希望能在服務宕機的時候,也能提供查詢的功能,並且希望能達到 較高的資料儲存的 負載均衡的能力
資料儲存的負載均衡
最新的進展,是在去年 google 發表的一篇 有界負載的一致性 hash 演算法的**。該演算法保證了負載均衡一致性和穩定性的同時,在均勻性方面做出了實質性地改進。同時,consistent hashing with bounded loads 演算法 也在 haproxy 開源專案中得以應用,有效減少了其 8 倍的快取頻寬
gossip主要被 cassandra 用於實現其分布式一致性。因為 cassandra 框架,更看重去中心化和容錯的特性,在不違背 cap 定理的情況下,能夠接受 最終一致性
key-value store
架構思考
hashmap
hashmap 的資料是存在記憶體裡的,一旦程序重啟,會有丟資料的風險。同時,資料流一旦到了 tb / pb 級別,會存在硬體方面的瓶頸。另外,需要考慮 key 相同的情況下,需要處理覆蓋的問題
berkeley db
實際上是乙個增強版的 hashmap,從乙個簡單的鍵值對儲存,進化到可以管理並行訪問、支援事務、資料同步等
kyoto cabinet
hashtable 和 b+ tree 的結合,不過在到達一定數量級,效能下降比較厲害
leveldb / hbase
利用 lsm tree 實現了讀寫分離、順序寫入等功能
technical discussion group:(人工智慧1020982(高階)& 1217710(高階)|bigdata1670647)
post author:benedict jin
post link:
大資料 一致性雜湊演算法
題目 工程師嘗試用伺服器集群來設計和實現資料快取,以下是常見的策略。1,無論新增 查詢 刪除資料,都先將資料id通過雜湊函式轉換成雜湊值key。2,有n臺機器,則 key n 為該資料所屬的機器編號。無論是新增 刪除 查詢都在這台機器上進行,請分析這種話快取策略帶來的問題,並提出改進方案。思路 該快...
一致性hash演算法 面試必備 一致性hash演算法
最近公司在招人,我們準備的問題中有一道是關於一致性hash演算法的問題,只有一些面試者能夠回答上來,而且答的也不是很全面,有的面試者只是聽說過,有的連聽都沒聽過,下面我把一致性hash演算法整理一下分享給大家 一致性雜湊演算法在1997年由麻省理工學院的karger等人在解決分布式cache中提出的...
一致性hash演算法虛擬節點 一致性hash演算法
hash 演算法也叫做雜湊演算法,他可以讓任意長度的資料m對映成為長度固定的值h。hash演算法的第乙個作用就是資料的快速儲存與查詢。寫過程式的人都知道,基本上主流的程式語言裡面都有個資料結構叫做map dictionary或者 hash table 它是根據key來直接訪問結果的資料結構。key的...