
Apache Geode (incubating) 是一个数据管理平台,提供实时的、一致的、贯穿整个云架构地访问数据关键型应用.
Geode 池化了服务器上的内存, CPU, 网络资源, 和本地磁盘,跨多个进程来管理应用对象和应用行为. 它使用了动态数据复制和分区技术来实现高可用, 高性能, 高可扩展性, 和容错. 另外, 对于一个分布式数据容器, Apache Geode 是一个基于内存的数据管理系统, 提供了可靠的异步事件通知和可靠的消息投递.
Apache Geode 是一个相当成熟, 强健的技术, 最初由GemStone Systems 公司开发(位于美国俄勒冈州的比弗顿市). 商标为 GemFire™, 此项技术初期被广泛应用在金融领域, 用于华尔街交易平台,作为事务性, 低延时的数据引擎. 那么今天Apache Geode 有超过600家大中型企业级用户, 主要是必须满足低延时和24x7 高可靠要求的,高可扩展的关键业务应用系统.
此工程目前在ASF下正处于孵化阶段, 通过孵化器来提供赞助. 孵化对于所有新加入的工程很重要,直到基础设施, 通信, 决策流程足够稳定,和其他成功的 ASF工程一致. 当孵化器状态完成或代码稳定时, 它提示此工程完全由 ASF 承认.
缓存 是一个抽象的概念, 在一个 Geode 分布式系统中用于描述一个节点.
在每个缓存中, 你定义数据 regions. 数据 regions 类似于传统关系型数据库中的'表'的概念, 以分布式的方式来管理数据 , 表现为名/值对儿形式. 在分布式系统的每个缓存成员中, 一个 复制 region 保存数据的拷贝. 一个 分区 region 跨缓存成员来同步数据. 在系统配置后, 客户端应用能够访问regions 中的分布式数据, 而不需要知道系统整体架构的知识. 你能够定义监听器来接收通知, 当数据发生变化时, 同时你也能够定义超时标准来删除在一个 region 中的废弃掉的数据.
Locators 提供了发现和负载均衡服务. 你配置带有 locator 服务列表的客户端, 同时 locators 维护一个成员服务器的动态列表. 默认情况下, Geode 客户端和服务器使用端口 40404 和多播来互相发现.
Geode 包含了如下的特性:
从 http://geode.incubator.apache.org/releases/ 下载和安装Geode 二进制安装包, 安装说明如下 http://geode.incubator.apache.org/docs/.
在路径中, 包含了所安装的 bin 目录, 启动一个 locator 和 server:
$ gfsh gfsh> start locator --name=locator gfsh> start server --name=server 创建一个 region:
gfsh> create region --name=region --type=REPLICATE 写一个 client 应用:
import java.util.Map;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.client.*;
public class HelloWorld {
public static void main(String[] args) throws Exception {
ClientCache cache = new ClientCacheFactory()
.addPoolLocator("localhost", 10334)
.create();
Region<String, String> region = cache
.<String, String>createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY)
.create("region");
region.put("1", "Hello");
region.put("2", "World");
for (Map.Entry<String, String> entry : region.entrySet()) {
System.out.format("key = %s, value = %s\n", entry.getKey(), entry.getValue());
}
cache.close();
}
} |
编译和运行 HelloWorld.java. classpath 应该包含 geode-dependencies.jar.
$ javac -cp /some/path/incubator-geode/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar HelloWorld.java $ java -cp .:/some/path/incubator-geode/geode-assembly/build/install/apache-geode/lib/geode-dependencies.jar HelloWorld |
Geode 应用可以使用如下的客户端技术来写入: