摘要:Codis叢集在國內Redis生態圈很流行,社群已停止維護。本文從架構和特性兩方面對比,帶你感受華為雲GaussDB(for Redis)的全新價值。
本文分享自華為雲社群《華為雲GaussDB(for Redis)揭祕第19期:GaussDB(for Redis)全面對比Codis》,作者: 高斯Redis官方部落格 。
說Codis是國內最流行的自建Redis叢集方案,一點也不為過。客戶曾這樣說:
「Codis你不知道嗎?我們公司用了好多年了,好東西呀。」
的確,相比去中心化架構的開源Redis Cluster,Codis這種proxy代理叢集顯然更「好用」,甚至就連RedisLabs官方都推出了功能類似的redis-cluster-proxy來彌補傳統Cluster缺點。
然而其實從N年前開始,Codis社群就沒有人維護了,我們的客戶專案經理海鵬老師也經常要幫助客戶把自建Codis搬遷到雲上的GaussDB(for Redis)。
Codis的確很優秀,不過我們可以負責任地說:
華為雲KV資料庫GaussDB(for Redis)更優秀!
首先,我們從技術架構角度來看看兩款產品究竟哪裡不同。
如圖,架構上的差異一目瞭然,我們可以自頂向下分析:
公有云使用者普遍討厭「搞特殊」,然而Codis偏要搞特殊。Codis綁架使用者必須使用非標Jodis SDK來解決代理層單點故障問題。但如果使用者偏要使用標準SDK(如大名鼎鼎的Jedis)呢?Codis表示:對不起,跟高可用說拜拜吧。
相反,GaussDB(for Redis)在使用上則很友好,業務側使用任何標準SDK都行,同時高可用、自動負載均衡能力也全都在。上雲搬遷時,GaussDB(for Redis)相容方面做得也很成熟,不論客戶原來程式碼用的是StandAlone,還是Cluster、Sentinel等模式,都可以0改造上雲,真正做到開箱即用,體驗感極佳。
Codis的代理層雖然提供了橫向擴充套件能力,但並不好用:要麼犧牲高可用來使用標準SDK連線單點;要麼使用Jodis SDK,但代價是業務走向非標化。
而GaussDB(for Redis)提供ELB,方便使用者統一接入,在簡化使用者端複雜度的同時,還帶來了專業的負載均衡能力。有了這個統一接入IP,使用者相當於自己在使用一個超大容量的單機Redis,而無需操心底層細節。
可以認為,Codis是在多套Redis分片上做了一層封裝,架構模型是傳統的存算耦合。在大key、資料一致性、分片故障、擴縮容等典型場景中,都延續了開源Redis的長期「痛點」。
GaussDB(for Redis)採用存算分離架構,計算層聚焦資料業務,儲存層基於高效能分散式共用儲存池,確保資料三副本儲存強一致,超高可靠。同時大幅節省硬體成本,幫業務減負。
從前文的架構維度對比可以看出,GaussDB(for Redis)上有ELB讓業務側「更好用」,下有儲存池讓資料「更可靠」,比自建Codis叢集優秀了太多。
下面再從特性維度聊聊,GaussDB(for Redis)還能給業務側帶來哪些價值。
GaussDB(for Redis)完全相容Redis協定,同時相容StandAlone/Cluster/Sentinel等多種SDK模式,方便業務搬遷上雲。而Codis的相容性則顯得很差。
自建Codis叢集穩定性強依賴開源Redis能力,不論是擴容還是大key場景,都有相同痛點,在此不再贅述。
GaussDB(for Redis)自研架構完全解決了開源Redis的fork問題,穩定性大幅提升;同時,在與分散式儲存池架構的深度合作下,資料的可靠性也全面優於Codis。
Codis依然是傳統純記憶體Redis的封裝,業務存不了多少就會觸及成本痛點。隨著業務長期發展,逐漸也會有資料降冷(如APP的冷使用者),此時Codis裡真正有價值的熱資料佔比越來越低,全量資料在記憶體中成本會相當高。
GaussDB(for Redis)的算力則按需選配,儲存價格低,非常適合大容量KV儲存場景。
Codis是很多開發和運維同學曾經青睞的產品,是時代的記憶,但是,技術在快速發展。在這裡,建議使用了Codis的業務可以考慮使用GaussDB(for Redis),感受華為雲這款企業級KV資料庫的全新價值。
華為雲資料庫GaussDB(for Redis)團隊
bbs.huaweicloud.com/blogs/248875