Redis/HBase/Tair比較


KV系統對比表

對比維度

Redis Redis Cluster Medis Hbase Tair
訪問模式    支持Value大小 理論上不超過1GB(建議不超過1MB) 理論上可配置(默認配置10M,這個可以調大) 256M(更大value還需要測試)
支持Value結構 byte[]/list/map/set 支持分列族存儲,在列族(column Family)下支持多quantifier(quantifier支持實時增刪,不需要在schema中預定義)

(1)kv/map/list

(2)支持big_list(list無長度限制)

(3)支持創建schema,cmd query

支持的總數據量   1000+instance 按業務划分group集群,單個group不超過100GB scale out(業界已經有單機群幾百台服務器的集群規模應用案例) scale out,理論上總數據量無限制
適宜的讀寫比 存內存型,均適合 支持讀寫混合的業務模型(讀、寫應用不同的Cache,可配置適用各種比例的讀寫業務) 支持多引擎,適宜各種比例的讀寫。讀多寫少(mdb+leveldb),讀少寫多(leveldb)。
數據是否可改寫 Y Y 支持
是否支持Scan/Range Query   不支持,並且不支持merge operations Scan目前不支持(即將支持),Range Query不支持 支持按Key維度的Scan

支持scan

支持range query

CAP   CP 僅CA(有方案可擴展為CP) CP 用戶可配置,CP或AP
語言支持 主流語言 主流語言,目前java、ruby可用 僅Java(有其它語言支持方案)

原生為Java接口。支持restful接口,支持通過thrift Server方式間接支持其他多用語言(如C,golang等)

php,restful,java,c/c++
訪問性能 點寫latency 虛機上平均1~2ms 平均5ms以下(寫操作直接刷cache和追加持久化HLOG即可)

5~8ms(write through),1ms左右(write back)

點寫吞吐率 一個instance 5w,單機器整體性能根據cpu來決定   虛機上單個redis節點5~10w qps,group的吞吐可通過多節點來擴展。受限網卡帶寬瓶頸 預計單節點可達20K/s(key + value = 1k) 受限網卡帶寬瓶頸(100MB),單機純內存8w~10w qps(key+value=1k)
批量寫吞吐率 受限網卡帶寬瓶頸 可在hbase集群外直接將原始數據轉換為HFile(hbase底層存儲文件),直接以文件接口copy到hbase集群即可(理論上受限於網絡帶寬)

受限網卡帶寬瓶頸(100MB),單機純內存8w ~10w batch/s(batch=10keys,key+value=100,batch_size=1k)

讀latency 虛機上平均1~2ms 目前Java client的平均latency在5ms左右。(理論上負載過高時,latency會有所增加) 同機房內存1ms,磁盤5-8ms(延遲不會隨單機數據容量增加而增加)
可運維性 可擴展性(自動擴容、在線擴容)   支持水平擴展 支持在線擴容(暫不支持擴容時數據遷移),支持在線數據遷移 支持在線平滑擴容。 在不停讀和寫的服務下自動擴容
可用性(是否有單點、數據遷移/單機出錯時是否會有服務中斷、過載保護、慢查詢保護) 使用keepalived或者官方哨兵來保持高可用

無單點

無單點

數據遷移/單機出錯時自動故障轉移

無過載保護(僅限制單客戶端到redis的連接數500)

無慢查詢保護

目前的集群hmaster為單點服務(提供進程級恢復機制)。后續部署多hmaster方案。

單個RegionServer異常時,region服務被遷移到其他Server上時,該Server上的數據短時不可訪問。

無慢查詢保護

(1)無單點

(2)不中斷服務

(3)有過載保護

(4)無慢查詢保護,但有慢查詢遞歸樹監控

可靠性(如何防止數據丟失,包括機器斷電、硬盤損毀等情形下) 0~N個數據slave備份(實際使用情況基本是0個備份) 數據持久化在底層HDFS中,默認配置為三備份。

(1)多機數據冗余

(2)斷電數據不丟失,重放redo log

(3)數據完整性crc校驗(防止磁盤損壞)

對業務混合部署的支持(性能隔離) 進程級隔離(特殊處理可以到機器間隔離) 集群級隔離

硬軟隔離:

(1)支持不同group的業務混步

(2)支持同一個group業務混步(通過名字空間隔離),支持網絡和內存的隔離。

對訪問權限的可控制性

web操作管理員授權

api操作支持鑒權和非鑒權兩種模式

提供機器接入的安全認證;

提供業務表級別的權限認證機制(如讀、寫、管理運維等)。

機器粒度的白名單管理
實現語言、代碼量 JAVA,java客戶端14000行、管理中心22000行

Java。

client,30K

整個工程(包括client和測試用例等)500k

核心代碼c++,10w行左右

注:redis、redis cluster、medis如果沒有特殊說明,核心指標相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM