目录
- 一、对缓存中间件的诉求
- 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 复杂业务场景的需要
在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 点对点
文章插图
点对点(Peer To Peer)的部署模式没有服务器的概念,所有参与缓存的节点一视同仁,这种部署模式主要用于把缓存嵌入到集群中每个应用节点上 。
- 2.1.1.2 客户端/服务器
文章插图
客户端/服务器部署下,Apache Geode作为独立的集群服务存在,这样部署的好处是,客户端只选择性地保留一小部分本地缓存,将大部分缓存数据委托给服务集群,节点和节点之间不需要频繁地进行数据分发,也更便于进行扩展 。
推荐阅读
- 基于 Apache Hudi 极致查询优化的探索实践
- 一文搞定 Spring事务
- 汽车灯语是什么意思 怎么读懂汽车灯语
- 如何轻松读懂三国演义 如何读《三国演义》
- 水浒传怎么读懂 水浒传怎么读
- 八字详解,一步步读懂你的命运
- 一文掌握手动对焦操作技巧 华为手机手动对焦怎么操作
- 一文弄懂快充是否损害手机电池 120w充电器可以充普通手机吗
- 一文看懂声卡接口类型 speaker是什么接口
- 3分钟读懂空调上的能效等级 空调能效标识怎么解读