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