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