Geode/Gemfire 是Pivotal公司开发的一款开源的、分布式NoSql内存数据库,可用来进行完成分布式缓存,数据持久化,分布式事物、动态扩展等功能。
他的优点和特性:
-
性能扩展,线性扩展,事物和读写低延迟
-
通过全局的分布式应用进行一致的数据库操作
-
高可用性和高伸缩性,全局规模
-
强大的开发者特性
-
简单的分布式节点管理
- 动态复制和分区技术
- 可快速并行恢复的持久化
- 快速内存存储,优化的大堆内存,数据压缩,磁盘溢出回收和数据超时机制
- 分布式位置感知功能
- 分布式事物ACID
- 支持类SQL和索引
- 服务器可以将数据事件通知客户端,同步或者异步的响应客户端,保证事件顺序
- 高可扩展高健壮性的集群技术,失败检测、网络分区检测
作为世界规模最大的实时交易系统之一12306就是使用的#GemFire#
github源代码下载地址:https://github.com/apache/incubator-geode
geode文档地址:http://geode-docs.cfapps.io/
Geode是Gemfire的开源版本,GemFire是商业版本,最初被应用于对实时数据处理要求很高的华尔街的金融部门。
安装调试:
1、所需环境: jdk1.8
2、编译:
1)如果使用Geode,则需要编译 后方可使用。
由于使用gradle编译,客户端需要安装gradle编译环境。gradle需要下载大量的依赖包进行编译,所以这一步必须翻*墙才能下载。建议使用最新版的自*由*men,很好用。
我最初使用了XX-net,虽然可以翻**墙,但是下载依赖包却总是报错,可能代理有某些限制,换了自*由*men就一切顺利了。
2)如果使用GemFire已编译好的版本,则无需理会上述麻烦,可直接使用。
3、分布式环境搭建
至少两台机器,同时保证两台机器使用相同版本,要么都用Geode,要么都用Gemfire,不然无法启动server。
增加环境变量 GEODE_HOME=F:devBigDataincubator-geode-developgemfire-assemblyuildinstallapache-geode
Path里增加:%GEODE_HOME%in;
编译后的文件都放在F:devBigDataincubator-geode-developgemfire-assemblyuildinstall目录下。
搭建过程参考如何命令和快速上手教程。
4、概念介绍
gfsh geode的命令行shell工具,用于执行如下命令
locator 定位器,相当于master-slave中的master,或者zookeeper,主要用于管理集群,和链接不同的server。
gfsh> start locator --name=locator1
server 服务器,可以部署在同一台机器,也可以部署在不同机器。在不同的机器上启动时,需要先用connect连接已启动的locator
connect --locator=ip[locator的port]
start server --name=server1
region 数据区域,或者叫表,是数据存储的基本单位,以下创建一个在集群内自动复制的,自动持久化的region,并持久化数据
create region --name=regionA --type=REPLICATE_PERSISTENT
put --region=regionA --key="1" --value="one"
OQL 类SQL的脚本,用来查数
query --query="select * from /regionA"
以上命令的执行默认是以集群为范围的,如果要单机执行,需要修改apache-geodeconfiggemfire.properties文件中的属性:enable-cluster-configuration=true,改为false。
5、快速上手教程:
http://geode-docs.cfapps.io/docs/getting_started/15_minute_quickstart_gfsh.html
下一篇,我将讲解应用程序如何使用Geode进行缓存。
对于Geode的学习,最终目的是源代码阅读,看看Geode如何实现了这么强大的分布式数据库。
欢迎大家一起学习,交流经验,不吝指教,谢谢!