一文读懂Apache Geode缓存中间件

目录

  • 一、对缓存中间件的诉求
    • 1.1.1 弱势缓存
    • 1.1.2 强势缓存
    • 1.1 我们为什么需要缓存中间件
    • 1.2 缓存的分类
  • 二、什么是Apache Geode
    • 2.1.1 通信拓扑
    • 2.1.2 服务发现
    • 2.1.3 数据存储形式和区域
    • 2.1.4 数据量的控制和热点数据
    • 2.1 Apache Geode的架构
  • 三、Apache Geode是否能满足我们的需要
    • 3.2.1 事务支持
    • 3.2.2 Functions
    • 3.2.3 连续查询
    • 3.2.4 异构
    • 一致性
    • 可用性
    • 分区容错性
    • 3.2.1 吞吐量和延迟
    • 3.2.3 索引
    • 3.1 性能
    • 3.2 CAP
    • 3.3 复杂业务场景的需要
一、对缓存中间件的诉求 1.1 我们为什么需要缓存中间件我们一直使用关系型数据库作为我们几乎是唯一的数据存储方案 。关系型数据库在对复杂结构的数据的组织上、持久性和一致性控制上有巨大的优势 。但磁盘数据库无论如何进行查询优化 , 速度上终究无法和内存读写相提并论 。而随着客户数据量越来越大、并发量越来越高、客户场景越来越复杂,我们对数据访问效率的要求也在提高 。此时,引入缓存中间件成了我们一定要考虑的事情 。
在2022年,一听到缓存中间件,我们首先想到的依然是redis 。但我们团队长期以来并没有充分地利用起redis提高系统性能,依然大量依赖于关系型数据库处理数据的存储和读写 。为提高系统整体性能,尝试引入新的缓存中间件解决我们的问题 。
1.2 缓存的分类我将缓存解决方案划分为两大类别:弱势缓存和强势缓存 。
1.1.1 弱势缓存第一类,是以Redis为首的弱势缓存 。这类缓存强调的是极高的读性能和写性能,一般作为高并发场景下,高速的应用服务和较低速的磁盘数据库之间的缓存 。弱势缓存为提高读写效率,舍弃了强一致性,追求最终一致性,数据结构简单,因此,基于弱势缓存设计的应用系统,通常以磁盘关系型数据库的数据为准 , 缓存中更倾向于存储一些相对静态稳定的基础数据,用于辅助关系型数据库 。对于数据的更新模式,也更偏向于追加,而不是大并发下的频繁更新,应用系统不会完全信任缓存中的数据 。这种效率优先,对数据准确性要求不高的方向与如今的互联网行业(尤其是toC领域)的需求十分契合 。
1.1.2 强势缓存而对于业务数据模型较复杂,对数据实时性和准确性要求较高的金融行业、企服行业,更需要的是一个强一致性的数据存储,在引入缓存之前,关系型数据库承担了这一角色 。业务特性导致我们几乎无法接受为了读写效率牺牲数据准确性 。复杂业务场景下,我们需要一个强一致性和高实时性的、对数据结构有更强的表达能力的 , 能描述部分逻辑表达的内存数据库 。能满足这些要求的产品,我称其为强势缓存 。因为这些特性可以让内存数据库作为我们数据的基准,而让关系型数据库作为一个持久化的备份,进一步降低磁盘的访问率,提高内存的存在感 , 让一个完整业务流程中的数据流转可以在内存中可靠地完成 。
二、什么是Apache GeodeApache Geode正是满足我给出的强势缓存定义的一款内存数据库产品 。它是商业内存数据网格Geofirm的开源版本,已经在金融支付领域和12306等大型订购网站中经受住了考验 。
2.1 Apache Geode的架构 2.1.1 通信拓扑 
  • 2.1.1.1 点对点
    一文读懂Apache Geode缓存中间件

    文章插图
    点对点(Peer To Peer)的部署模式没有服务器的概念,所有参与缓存的节点一视同仁,这种部署模式主要用于把缓存嵌入到集群中每个应用节点上 。
  • 2.1.1.2 客户端/服务器
    一文读懂Apache Geode缓存中间件

    文章插图
    客户端/服务器部署下,Apache Geode作为独立的集群服务存在,这样部署的好处是,客户端只选择性地保留一小部分本地缓存,将大部分缓存数据委托给服务集群,节点和节点之间不需要频繁地进行数据分发,也更便于进行扩展 。
2.1.2 服务发现Apache Geode提供了定位器(Locator)进程,为参与缓存的所有成员(Client、Server、其它的Locator)提供其他成员的发现和负载均衡 。Locator既可以和其他Geode进程部署在一起,也可以独立部署,独立部署可以更好地保证定位器的可靠性和可用性(因为一旦一起的Geode进程挂了,这个Locator也很难幸免于难) 。可以部署多个Locator共同起作用,client连接时可以选择连接到哪个Locator上 。

推荐阅读