大数据时代,分布式缓存领域,大家可能较为熟悉Redis,当红一哥,还有经典老将Memcached, 以及新秀Apache Ignite, 当然还有Oracle的Coherence内存数据网格,今天我们主要关注投行金融领域的分布式缓存一哥Gemfire。
1. 前世今生
Gemfire的第一个商业版本由GemStone公司操刀正式发布于2002-2003年间,成为业界J2EE JCache -JSR107标准的中间件,兼容Java, C++, C#, 并在CEP(Complex Event Processing)处理领域一枝独秀。2008年借着金融危机之际凭着其实力击败老牌厂商Oracle, 大举进入华尔街金融领域,而其中Citi则是Gemfire的铁粉,据称全球2/3的Gemfire应用跑在Citi的服务器上,尤其是固定收益类交易系统的最爱,各位老友看到请自动点赞举牌。
之后GemStone被Spring之父Rod Johnson在当时的VMare时慧眼识珠,2010年收购并入SpringSource部门作为进军Cloud以及大数据的入口,目前则与Spring一并成为Pivotal中重要的In-Memory Data Grid, 并于2015年其核心模块开源为Apache Geode核心项目。
2. Gemfire整体分布式架构
总体来说Gemfire提供了基于内存的海量数据实时处理平台,包括低延迟高吞吐,线性动态扩展
(流行的话叫“弹性水平扩展”),HA,MapReduce,听起来很Hadoop, 这些是一切后SQL时代的分布式大数据产品入门款必备装备。
可以粗略看出Gemfire一些精髓, 如支持CEP Subscribers, 数据支持Replicated, Partitioned, 线性水平扩展,Shared Nothing Disk Persistence, Cache同步Read/Write Through与异步Write Behind。
3. 核心概念
Region
Region是Gemfire中一Map的分布式实现,同时具备了支持查询,事务。这个是Gemfire的核心中核心,一切的一切始于此。
Replicated Region: 一个Replicated Region保存所有分区的数据拷贝。
Partitioned Region: 只保存一部分分区的数据拷贝。
2Shared-Nothing Persistence
支持非共享持久化,每一个peer持久化数据到本地磁盘,Gemfire持久化允许在磁盘维护一份配置的数据拷贝
3Distributed
Distributed Member: Gemfire托管的集群中成员
Distributed Transaction: 跨节点,集群更新事务,分布式事务。
Distrbuted Lock: 分布式集群锁
4Locator & Gateway
Gemfire的Locator类似ZooKeeper, 协调客户端与服务器成员,相互发现,以及简单负载均衡(非负荷均载)。
Gateway: 作为Gemfire跨WAN网同步数据,如HK, TK, NY等。
4. 拓扑结构
1. Peer-to-Peer
缓存潜入应用,共享堆内存,适合小型缓存应用。
原以为这种架构在企业,金融机构无用武之地,殊不知一些大型金融机构的小型IT项目竟然采用此架构,没办法cowboy,今天需求明天生产。
2. Client/Server结构