nosql數據庫 tiger
erlang開發的開源高可靠性nosql數據庫tiger介紹
可靠性:
寫:對于n=2f+1 機器集群,在f臺機器宕機的情況下可寫
讀:只要是沒有宕機的機器都是可讀的
一致性:
強一致性
擴展性:
讀的能力可以線性擴展
功能:
目前實現了key/value的get set 和delete功能:
基于memcached協議和leveldb的持久數據庫
基于redis協議和redis存儲引擎的內存數據庫,宕機后數據重放到內存
性能:
單機跑3個實例:
雙核,Pentium(R) Dual-Core CPU E6600 @ 3.06GHz
centos 5.6 erlang R15b 2G 內存
基于memcached協議的接口:
set接口:
91.49% <= 12 milliseconds,5387.93 requests per second
get 接口:
100.00% <= 13 milliseconds 18177.54 requests per second
基于redis協議的接口:
基于redis協議的接口:
set接口:
100.00% <= 60 milliseconds 3954.13 requests per second
get 接口:
13477.09 requests per second
13477.09 requests per second
測試程序使用:mc-benchmark,redis-benchmark,因為3個實例在一個機器上,所以寫的性能影響比較大, 部署的時候建議分開到不同物理機部署。
主要技術:
erlang:用于socket和通訊層
Zab(Zookeeper Atomic Broadcast):實現消息的原子廣播
存儲引擎:leveldb,redis存儲引擎
架構實現:
zab_engine介紹:
將zab協議實現為erlang的api,如果使用erlang開發項目,可以嵌入zab_engine,實現多master的架構變得非常簡單
引擎實現功能:
1:2階段提交
2:恢復
a.follow恢復
b.leader恢復
c.在線加入和恢復
架構:

使用說明:
1.實現gen_zab_server 回調函數
2.對于須同步數據,實現handle_commit
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!