一、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 还是一个内存数据管理系统,可提供可靠的异步事件通知和有保证的消息传递。