Apache顶级项目介绍之Geode。Apache顶级项目介绍之8,我们重新恢复Apache顶级项目系列,较之前介绍系列,我们本文直入代码分析,原因有二,Geode即上文我们分析的Gemfire的开源版本,其二被逼无奈,阅读源码查找问题。
1. Geode
2016年11月21日,Apache 软件基金会(ASF)宣布 Apache® Geode™ 已从 Apache 孵化器毕业成为顶级项目(TLP),表明该项目的社区和产品已根据 ASF 的精英流程和原则得到良好管理。
Apache Geode 是一个数据管理平台,提供实时的、一致的、贯穿整个云架构地访问数据关键型应用,最初由 GemStone Systems 公司开发,商标为 GemFire。 此项技术初期被广泛应用在金融领域,用于华尔街交易平台,作为事务性、 低延时的数据引擎。2015年4月将代码提交给 Apache 孵化器作为孵化项目。目前 Apache Geode 有超过600家大中型企业级用户, 主要是必须满足低延时和24x7 高可靠要求的,高可扩展的关键业务应用系统。
2. 适用场景
可以参考上文,分布式缓存利器-Gemfire.
4个主要使用场景:
-高可用性的分布式缓存
-网格计算
-事件通知和处理(CEP类似)
-交易处理(Transaction),采用最终一致性
Geode 池化了服务器上的内存, CPU, 网络资源, 和本地磁盘,跨多个进程来管理应用对象和行为. 它使用了动态数据复制和分区技术来实现高可用, 高性能, 高可扩展性, 和容错. 另外, 对于一个分布式数据容器, Apache Geode 是一个基于内存的数据管理系统, 提供了可靠的异步事件通知和可靠的消息投递.
3. 数据结构源码
如上文所说,系统目前遇到一个分布式系统异常复杂之难题,难到不遍历源码无法解开谜题的地步。注意,笔者写此文时,此难题尚无答案,我们希望当此文发布时,已有解药。
另外,强烈建议看官先自行了解Gemfire功能以及部分原理,否则此文较为吃力。
3.1 Region
进入正题,先来看一下核心类Region。
Region继承Java的ConcurrentMap,实现了分布式K,V的HashMap,并提供了高阶的事务,Persistence,分区等分布式功能。接口继承Map的get, put无须多说,看几个比较重要的。
Geode的Region可以像树形一样,形成一种Hierarchy结构嵌套,使用"/"来分隔多个子Region.所以有向上获取父亲,自然也有向下导航获取子女:getSubregion(String path)
RegionDistributedLock