This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Page tree
Skip to end of metadata
Go to start of metadata

 

概览

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 包含了如下的特性:

  • 结合冗余, 复制, 和 "shared nothing" 的一致性架构来交付 '自动防故障' 的可靠性和高性能.
  • 水平扩展到数千个缓存成员, 具有多种缓存拓扑结构来满足不同的企业级部署需求. 缓存能够跨多台机器进行分布.
  • 异步和同步缓存更新传播.
  • Delta 传播只分发新版本和旧版本的变化量 (delta) , 而不是整个对象, 从而可以节省大量的网络开销.
  • 通过经过优化的, 低延时的通信层进行可靠的异步事件通知, 高保障的消息投递.
  • 在没有额外硬件的辅助下, 应用可以加速4 到 40,000 倍.
  • 数据感知和实时BI. 当你查询时, 如果数据变化了, 你能够立刻在系统中看见数据的变化.
  • 集成 Spring 框架来加速和简化高可扩展、高并发和事务型企业级应用的开发复杂度.
  • JTA 兼容的事务支持.
  • 集群的配置可以写到文件中和导出到其他集群中.
  • 通过HTTP做 远程集群管理.
  • 基于REST应用开发的REST APIs.
  • 滚动升级是可行的, 但是需要服从新特性的限制问题.

5分钟内上手 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 应用:

HelloWorld.java
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 应用可以使用如下的客户端技术来写入: