一、GemFire是什么?
 
如果你了解Redis或memCached,那么恭喜,你很快就能理解GemFire是什么,没错,你可以把它理解为一个增强版的Redis,具体在哪些方面增强,我们日后慢慢聊。如果你不了解Redis,也没有关系,先看官方网站上的说法:Pivotal GemFire is the distributed, in-memory database for developers who are building the highest scaling and performing data-centric apps in the world. 但是,按照我对它的理解,我更愿意用下面的语言来描述它,GemFire是一个高性能的分布式内存对象缓存系统,如果非要说它是数据库,那也只能算是一个Key/Value数据库(我更愿意称之为Key/Value存储系统)
 
我们通过把对象或数据缓存在内存中,减少对传统关系型数据库的读写次数(减少IO瓶颈),从而使我们的应用支持更多的TPS,更多的并发用户数。GemFire能够在部分场景下对关系型数据库起到很好的补充(甚至替代)作用,它可以作为应用层与传统数据层的“润滑剂”。
 
二、关于GemFire的前世今生?
 
GemFire的第一个版本发布于2002年3月份,当时它还属于一家独立的公司GemStone Systems.后来GemStone System这家公司被VMware给收购了,GemFire也被整合到了VMware Vfabric产品线。请注意,VMWare当时也收购了Redis项目。在2013年4月EMC与VMware/GE合资成立一家新公司Pivotal,VMware慷慨的贡献出了它的vfabric产品线,以及它收购的一些开源项目。
 
目前,GemFire的商业版权已经属于Pivotal了。顺便说一句,Redis的创始人Salvatore Sanfilippo 现在也供职于Pivotal.
 
三、GemFire有什么特点?
1.分布式数据存储
•     稳定而高性能的的基于内存的数据数据存储
•     灵活的Cache部署策略:点对点(peer to peer);客户端/服务端(client server);多集群(multiple clusters)的本地或远程数据同步,支持数据高性能灾备和双活
•     灵活的Region(数据对象集或者可理解为表)分布式处理:同一集合数据(可理解为一个表的数据)可以整集多点同步或切割后不同点保存,并支持数据实时再平衡(rebalance)既数据分隔保存后若加入新的空闲服务器,数据可以在不重启服务的情况下重新切割和平衡数据,从而达到真正的数据在线动态延展
•     具有持续性的数据高可用性和容错性:各个分散的数据点可以配置一个或多个基于内存的热备数据点,当主数据点宕机的情况下,其中一个热备点就会提升称为主数据点,同时可以继续在空闲机器上创建备份点,从而达到数据的持续的可用性。同时数据可以通过配置同步或异步地持续化到本地硬盘,或者到指定的数据库或文件中。
•     数据地客户端缓存:客户端可以将最常用数据缓存一个备份与本地,进一步加快效能
•     在线数据备份
•     数据全内存和部分内存策略:通过配置可以将数据全部存入内存,或者通过将非频繁使用数据挤出策略(LRU)来将部分频繁适用数据保存于内存中达到成本效益最大化
•     内置资源优化器用以降低JAVA GC所带来的延迟,支持单个大容量Cache点(一般服务器可配置超过40GB内存的Java heap size)
•     安全支持:基于用户和角色的数据访问,数据传输渠道加密(SSL)
•     数据存取
•     除key-value简单cache支持外,支持复杂数据对象和关系存储
•     丰富的OQL(类SQL)的查询语言支持
•     支持数据单记录或批处理
•     本地或分布式事务处理
•     Map-Reduce并行查询:同一查询命令可并行发送到各Cache点(Map),结果集自动在客户端汇合(Reduce)
•     智能定点查询:查询命令在包含数据特征如主键值时,查询命令会自动命中数据点
2.服务和事件
•     Function支持: Function相当于一个数据库存储过程,区别在于其可动态植入Cache点。
•     亲密关系数据同业务逻辑聚合:亲密关系数据指需要相互直接依赖完成一个交易的多个数据,例如客户A和属于客户A的产品数据。GemFire可以将业务逻辑涉及到亲密关系数据放到同一个计算机进程来处理,避免数据网络传输和数据序列化等带来的延迟,并极大体现Share Nothing的涉及理念,因为互相不依赖从而加大服务的涉及延展性
•     最大化的并行处理:数据各子集合和业务逻辑可分散在各点并行处理,而不需要想数据库等产皮按顺序处理
•     事件监听处理:Cache点可以根据数据的增、删、改和过期等事件来触发另外的业务逻辑处理。
•     类消息队列处理:客户端可以注册其感兴趣数据在Cache点,当满足条件数据出现时,自动向客户端发布。可实现类似于消息队列的Queue 或 Topic机制。
•     持续查询功能:客户端可以定制复杂查询条件在Cache点,同样在满足条件的数据出现时向客户端发送。
•     Delta数据传输:所有数据的网络同步可以选择只将变化碎片传输同步,例如当一个客户只有地址数据发生改变时,就只需要将地址同步而非整个客户数据对象。
3.整合与管理:
•     Cache的监控和数据分析工具,便于管理
•     Springdata-GemFire项目,使得GemFire和Spring的集成浑然一体
  
最后,想问一句,今年你买到回家的火车票了吗?如果你用过12306的网站,那么GemFire已经为你服务过了,虽然只是余票查询。在接下来的10个月里,我会用每两周一篇文章的频率来介绍GemFire.
 

GemFire 入门篇1:GemFire 是什么?的更多相关文章

  1. GemFire 入门篇2:GemFire 8.2 在CentOS & Mac OS X的安装步骤

    GemFire目前已经开源,开源项目的主页:http://geode.incubator.apache.org/,商业版本的主页:https://pivotal.io/big-data/pivotal ...

  2. Membership三步曲之入门篇 - Membership基础示例

    Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 -  Membership基础示例 Membership三步曲之进阶篇 -  深入剖析Pro ...

  3. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

  4. 1. web前端开发分享-css,js入门篇

    关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...

  5. 一个App完成入门篇(七)- 完成发现页面

    第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...

  6. [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

    本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...

  7. 转:OSGi 入门篇:模块层

    OSGi 入门篇:模块层 1 什么是模块化 模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现.但是这种实现与Java本身现有的一些模块化特性又有明显的不同. 本文 ...

  8. 转:OSGi 入门篇:生命周期层

    OSGi 入门篇:生命周期层 前言 生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的.生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或 ...

  9. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

随机推荐

  1. Error Dropping Database (Can't rmdir '.test\', errno: 17)

    MySql 删除数据库出错:Can't rmdir '.\test\', errno: 17 到test数据下的所在的目前data\test目录,删除掉所有的文件后,就可以删除数据了

  2. poj 3259 Wormholes spfa算法

    点击打开链接 Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25582   Accepted: 9186 ...

  3. Node.js发送邮件

    1.使用nodemailer模块 var nodemailer = require("nodemailer"); 2.代码如下 exports.send_email = funct ...

  4. 安装express后却找不到express的命令

    1.全局安装express npm install -g express 2.执行express命令,创建web项目框架 express -e ejs myweb 会提示 express 不是内部或外 ...

  5. Android——Gallery 图片拖动效果

    1.XML文件 <?xml version="1.0" encoding="utf-8"?><Gallery xmlns:android=&q ...

  6. jdk的反射机制

    反射的作用 1)在运行时判断任意一个对象所属的类: 2)在运行时构造任意一个类的对象: 3)在运行时判断任意一个类所具有的成员变量和方法: 4)在运行时调用任意一个对象的方法. 5)反射API可以获取 ...

  7. fw:学好Python必读的几篇文章

    学好Python必读的几篇文章 from:http://blog.csdn.net/hzxhan/article/details/8555602 分类: python2013-01-30 11:52  ...

  8. 剑指Offer:面试题17——合并两个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路1: 分别用p1,p2两个指针扫描两个有序链表,p3指针去构建新链表h3. p1.val & ...

  9. 手机app测试之我见

    app端功能测试不是单纯的点点点,在实际的工作中,测试小白需要从业务入手,熟悉基本测试点.测试技巧和方法,以点带面,从功能和思维入手,避免眼高手低: app端测试,首先我们需要考虑不同的机型系统.不同 ...

  10. 使用postman玩转接口测试

    (一)前言: 之前搞自动化接口测试,由于接口的特性,要验证接口返回xml中的数据,所以没找到合适的轮子,就自己用requests造了个轮子,用着也还行,不过就是case管理有些麻烦,近几天又回头看了看 ...