大数据应用实践2: IMDG应用场景

内存数据网格(In-Memory Data Grid)技术的出现是为了应对日益增长的数据实时处理性的需求8。其中最具代表性的IMDG解决方案当属Pivotal Gemfire(其开源版本为Apache Geode)。在了解Gemfire/Geode的主要适用场景前,大家只需要记住12306在上一次票务查询系统大规模系统迭代时采用的就是Gemfire的企业版,替换了之前的IBM DB2,让查询时间提升了近1000倍!是的,2013-14年之前的12306,随便查张票可能需要20秒或更久。用了内存网格计算架构后直接飙升到平均2-20ms。企业版Gemfire是Dell EMC集团旗下Pivotal公司的商业化产品。笔者在负责EMC中国研究院时参与了该项目。遮盖经历告诉我们,架构的升级可以带来指数级的性能提升,永远对架构保持好奇、保持敬畏,不同的场景不妨考虑用不同的架构来适配。

我们先了解一下Gemfire/Geode的系统拓扑架构设计。Gemfire支持以下三种拓扑结构:

(1)点对点(Peer-to-Peer)

(2)客户端/服务器(Client/Server)

(3)多站点(Multi-Site)

其中,点对点拓扑结构是所有其他拓扑结构的基础组件,它的最大特点是作为缓存实例(Cache Instance)的Gemfire成员与本地应用进程共享同一个堆(Heap),并且在分布式系统中各成员直接维系通信。这也是我们认为的最简洁的拓扑结构,如图1所示。

图1 Gemfire的P2P拓扑结构

C/S拓扑结构主要用来做垂直扩展(Vertical Scaling),如图5-5所示。在这样的拓扑设计中,位于应用进程中的Gemfire客户端只保存一小部分数据,而把剩余的数据留给Gemfire服务器端保存,而多个服务器之间依旧以P2P的方式组网。这样的设计有两大优点:一个是提供了更好的数据隔离性,另一个是当数据分布造成网络负载沉重的时候,C/S架构通常会提供优于P2P架构的性能。

图2 Gemfire的C/S拓扑结构

多站点拓扑方案则是一种水平扩展(Horizontal Scaling)方案,也是三种拓扑结构中最为复杂的。Gemfire的设计理念采用的是跨广域网(WAN)的松散耦合(Loosely Coupled)组网方式。这样组网的主要优点是,相比那种紧耦合组网方式,各站点相对更为独立,任一站点网络连接不畅或者掉线对于其他站点影响微乎其微。在多站点拓扑结构中,每个站点内部依然采用的是P2P的拓扑结构,如下图所示。

图3 Gemfire的Multi-Site拓扑结构

Gemfire/Geode的应用场景很广泛,总结起来有如下几大类:

(1)高可用、分布式缓存(Distributed Caching)

(2)网格计算(Data Grid)

(3)交易处理(Transaction Processing)

(4)流数据处理、事件触发、通知(Streaming/Event Processing & Notification)

在分布式缓存场景中,Gemfire可以被用作缓存层来提供基于内存的常用数据快速返回(即便在后端服务器掉线的情况下,Gemfire依然可以提供数据服务)。Gemfire通常被看作是比Redis更强大、豪华的缓存解决方案(反之,Redis也可以被看作是“穷人”的Gemfire……)。

一类典型的案例就是当保险公司客户在线填写表格的时候,相关信息可以通过Gemfire在服务器端缓存,这样做的结果是极大地提高了端到端系统反应速度,用户不会再因为网页刷新等待服务器完成计算返回表格数据时间过长而导致中途退出或终止填写表格(客户流失)。

上面提到的在交易处理场景中的铁道部官网12306.cn(火车票网上订票服务)的案例,在此多说两句。

12306在2013年春节之前的数个月内做的大规模的系统调整是把整个票务查询部分的功能从原有的关系型数据库调整为使用基于Gemfire的IMDG解决方案,其取得的系统性能提升是惊人的,如下表所示,查询效率提高了100~1000倍,并发可以达到每秒钟26,000次(等同于每小时可以完成超过9亿次查询,一天可以完成超过200亿次查询),而且系统的造价远远低于原有的以小型机为主的高运维成本架构。这也充分体现了NoSQL类系统设计与实践在商业领域的巨大潜力!

表1 12306系统改造前后对比

性能

12306网站改造前

12306网站改造后

查询耗时

单次~15秒

最短1~2毫秒,最长150~200毫秒

查询并发

并发性差,无法支持高并发

万次/秒,高峰2.6万/秒

可扩展性

无法动态增加主机

弹性、按需增减主机,数据同步秒级

系统架构

UNIX小型机

Linux X86服务器集群

系统规模

72台UNIX系统+一个RDBMS

10台主X86服务器 + 10台从X86服务器 + 1个月(2TB)历史票务数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值