豌豆實驗室的Codis(分散式Redis)與自己用Zookeeper+Redis組網,有什麼區別?
01-29
wandoulabs/codis · GitHub
謝邀,
豌豆莢開源的Codis 是一個分散式 Redis 解決方案,它基於Zookeeper,採用Proxy方式。目前已經到2.0了, 相當成熟,國內不少公司都在用。
Redis官方的cluster方案,直到今年Redis3.0才出來,目前來看生產環境用的較少;
當然,你可以自己搭建Redis的集群,但可以肯定的是其中的坑很多,建議使用Codis。正在做,做完告訴你。。
從目前來看。RedisCluster的問題在於對客戶端要求比較高,很多語言的客戶端不能很好的支持Cluster,Jedis的支持相對較好,除了不支持讀寫分離,當然個人覺得意義不大。
從可靠性來說,RedisCluster+ZK可以基本上保證不會出現單點問題了,當然zk掛了只要應用不重啟其實都沒有什麼問題,一主兩叢感覺是有必要的。
性能上來說,在極限性能到達之前,Cluster性能會遠遠低於Codis,這是顯然的,以Jedis客戶端為例,這種本地緩存slot信息的形式,必然需要消耗計算資源,又有讀寫鎖,感覺客戶端會有一定壓力。
在單個proxy到達極限之後,RedisCluster優勢就可以顯現出來了,,因為RedisCluster性能幾乎是n*單機性能。。。。。感覺可以突破天際。
至於有什麼坑,這個只有自己探索了。1.有web ui,可以方便地監控集群的狀態,以及在ui上動態增刪集群節點2.Jodis實現了client端的ha,在一定程度上可以省去haproxy這一層3.最明顯的區別是不用自己讀寫zookeeper啊
coids優勢是實現了如下:
1、數據的分散式存儲(pre-sharding)2、每個shard的主從選舉機制。(集成了redis-sentinel)
3、方便的webui管理工具,減少了運維成本。(codis-fe)所以如果題主能用zookeeper+redis組網實現上面的功能,我覺得你可以選擇用zookeeper組網。推薦閱讀:
※Zookeeper 和 Chubby 有哪些不同點?
※Zookeeper vs Chubby
※zookeeper與keepalived的高可用區別?
※zookeeper在dubbo到底起了什麼作用,dubno如何解決了阿里的高並發問題?