一、Geode和redis兩個分布式內(nèi)存數(shù)據(jù)庫的對比
兩者的定位不一樣。Geode是分布式內(nèi)存數(shù)據(jù)庫,提供了可配置的一致性保證,能夠保證數(shù)據(jù)不丟失,更符合數(shù)據(jù)庫的定位。而Redis的定位本身就是緩存,采用的最終一致性和周期性持久化策略,在單服務(wù)進(jìn)程模型下,提供了高性能緩存服務(wù)。Geode是java生態(tài)圈,有多種運(yùn)行模式,可以lib方式運(yùn)行在client端,其支持的客戶端語言有限。Redis引擎是C編寫,運(yùn)行更高效,性能損耗低,由于交互協(xié)議簡單,支持的客戶端語言眾多,基本上常用的語言都能夠支持。
其實這兩者的比較不在一個維度上,一個是應(yīng)用場景定位,前者更看重數(shù)據(jù)安全性、后者作為緩存更看重性能;一個是上手難度,前者上手比較困難,運(yùn)維起來也會復(fù)雜很多,后者上手簡單,集群化方案也比前者簡單;從社區(qū)活躍度方面來看,前者社區(qū)不怎么活躍,DB-ENGINES在kv存儲中排名23, 后者社區(qū)活躍,應(yīng)用廣泛,在kv存儲中排名第1。
1)集群內(nèi)存總?cè)萘?,現(xiàn)在Geode可以實現(xiàn)單個節(jié)點(diǎn)200-300GB內(nèi)存,總集群包含300個節(jié)點(diǎn)的大型集群,因此總?cè)萘靠梢赃_(dá)到90TB左右的級別,而Redis即使使用集群,也很難超過1個TB的總內(nèi)存。
2)Geode集群功能非常強(qiáng)大,實現(xiàn)了內(nèi)存中數(shù)據(jù)Shard分布,自動管理,集群故障自動恢復(fù),自動平均分布等一系列企業(yè)級的功能,而且有自帶的集群間數(shù)據(jù)同步功能,這里Redis都在努力追趕,但是還沒有很成熟的實現(xiàn)。
3)在CAP原理下(不了解的話可以百度一下CAP不可能三角),Geode可以保證集群內(nèi)數(shù)據(jù)的強(qiáng)一致性,注意是真正的強(qiáng)一致性而不是最終一致性,再加上分區(qū)可用性,因此是一個CP型的產(chǎn)品,可以提供統(tǒng)一的數(shù)據(jù)視圖,支持高并發(fā)下的acid事務(wù)。而Redis是不保證一致性的,因此即使Redis集群,也只能是AP型產(chǎn)品。
延伸閱讀:
二、什么是 Geode
Apache Geode 是一個數(shù)據(jù)管理平臺,可在廣泛分布的云架構(gòu)中提供對數(shù)據(jù)密集型應(yīng)用程序的實時、一致的訪問。Geode 跨多個進(jìn)程匯集內(nèi)存、CPU、網(wǎng)絡(luò)資源和可選的本地磁盤,以管理應(yīng)用程序?qū)ο蠛托袨?。它使用動態(tài)復(fù)制和數(shù)據(jù)分區(qū)技術(shù)來實現(xiàn)高可用性、改進(jìn)的性能、可伸縮性和容錯性。除了作為分布式數(shù)據(jù)容器之外,Geode 還是一個內(nèi)存數(shù)據(jù)管理系統(tǒng),可提供可靠的異步事件通知和有保證的消息傳遞。