Geode分布式内存数据库rest api 之PHP版本

来源:互联网 发布:网络上小姐姐表示什么 编辑:程序博客网 时间:2024/06/03 12:26

最近看到篇文章都在谈论12306使用的分布式内存数据库,感觉比较火热,由于对12306充满了好奇心,于是自己就对Geode研究了一下。

Geode 是一个开源的分布式内存数据库,用于构建水平伸缩的应用,基于 GemFire 开发,使用的是java。

它有如下特性,这部分来源于网络介绍。

1. 综合冗余 复制和shared nothing的持久化架构,提供自动预防故障的高性能的传递。
2.横向扩展到数千万个缓存成员,使用多个缓存拓扑来满足不同企业需求缓存能够跨计算机分布。
3.异步和同步缓存更新传播
4.delta变化量传播能只在一个对象(delta)的新旧不同版本之间传播,而不是将整个对象进行传播,好处是显著降低了分布的开销。
5.可靠的异步事件通知,保证消息传递能实现定制的低延时的分布。
6.在没有附加硬件情况下,应用运行性能提高4到40倍。
7.数据敏感和实时商业智能,如果数据改变,你会立即能够看到改变。
8.集成Spring框架简化可扩展的事务企业应用。
9.JTA兼容事务支持
10.跨整个集群范围的配置能够持久或导出到其他集群
11.远程HTTP集群管理
12.REST API和激活REST应用开发
13.主版本滚动升级。

这里有几篇博文非常不错,看官可以有兴趣阅读一下:http://geek.csdn.net/news/detail/34772


目前Geode资料相对较少,所以只能去看它的官方文档,地址:http://geode-docs.cfapps.io/docs/


Geode安装:

注:使用虚拟机安装的同学,尽量把虚拟机内存设为4G。

我使用的centos58,64位,4G

1、首先安装java环境,需要jdk 1.7以上

根据相应的系统环境选择相应的安装包
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装rpm包
rpm -ivh jdk-7u79-linux-x64.rpm

配置环境变量
vi /etc/profile
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/java/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
source /etc/profile

2、下载Geode
从pivotal下载geode包。https://network.pivotal.io/products/project-geode
解压geode
cd geode
./gradlew installDist   #有些教程用的是./gradlew build installDist,但是会很耗时,因为会gradle编译时会运行测试用例,我运行到700多个,花了一个小时也没编译完。

3、启动Geode
cd gemfire-assembly/build/install/apache-geode/bin

#运行gfsh,这个是用来管理geode的工具。
./gfsh 

#启动定位器
start locator --name=locator1

#打开pdx,并且打开本地存储,这个是使用rest api的必须配置,否则会无法创建数据
configure pdx --read-serialized=true --disk-store

#启动服务,ip地址和端口都可以更换
start server --name=server1 --J=-Dgemfire.start-dev-rest-api=true --J=-Dgemfire.http-service-bind-address=192.168.199.132 --J=-Dgemfire.http-service-port=8080

复加注释:
shutdown --include-locators=true   #关闭locator
stop server --dir=/usr/local/src/geode/gemfire-assembly/build/install/apache-geode/bin/server1   #关闭server
http://192.168.199.132:8080/gemfire-api/docs/index.html    #访问这个地址可以查看web版本的api


4、php rest api使用

在看到Geode提供的客户端,目前有java,python,ruby,没有php版本的,因为Geode有提供Rest api的接口,所以写了个php的版本。

代码位置:https://github.com/luzhengfei/php-gemfire-rest

使用方法:

<?php/** * author: lzf * createTime: 15/7/1 22:11 * description: */require_once '../PHPGeodeClient.Api.php';$geode = new PHPGeodeClient("192.168.199.132","8080");$re = $geode->list_all_regions();print_r($re->getRespondData());$re = $geode->create('user_profile','ccc',array('cccc','dddd' => 'aaaaa'));print_r($re->getRespondData());$re = $geode->create('user_profile','xt',array('name' => 'xt','age' => 50));print_r($re->getRespondData());$re = $geode->get_region_all('user_profile');print_r($re->getRespondData());$re = $geode->get_region_keys('user_profile');print_r($re->getRespondData());$re = $geode->get_entries_by_keys('user_profile',array('ccc'));print_r($re->getRespondData());$data = array(        'name' => 'lzf',        'age' => 23);$re = $geode->update('user_profile','ccc',$data);$re = $geode->create_queries('sel','select * from /user_profile');//$re = $geode->update_queries('sel','select * from /user_profile where name=\'lzf\'');$re = $geode->update_queries('sel','select * from /user_profile where age>10');$re = $geode->execute_queries('sel');print_r($re->getRespondData());$re = $geode->list_queries();print_r($re->getRespondData());

如有问题,欢迎批评指证。微笑

0 0
原创粉丝点击