linux-on-ibm-z/incubator-geode

Name: incubator-geode

Owner: LinuxONE and Linux on z Systems Open-source Team

Description: Mirror of Apache Geode (Incubating)

Created: 2015-07-19 23:00:42.0

Updated: 2015-07-19 23:00:54.0

Pushed: 2015-07-17 21:30:25.0

Homepage: null

Size: 27690

Language: Java

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Overview

Geode is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures.

Geode pools memory, CPU, network resources, and optionally local disk across multiple processes to manage application objects and behavior. It uses dynamic replication and data partitioning techniques to implement high availability, improved performance, scalability, and fault tolerance. In addition to being a distributed data container, Geode is an in-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.

Geode is an extremely mature and robust product that can trace its legacy all the way back to one of the first Object Databases for Smalltalk: GemStone. Geode (as GemFire?) was first deployed in the financial sector as the transactional, low-latency data engine used by multiple Wall Street trading platforms. Today Geode is used by over 600 enterprise customers for high-scale, 24x7 business critical applications. An example deployment includes China National Railways that uses Geode to run railway ticketing for the entire country of China with a 10 node cluster that manages 2 gigabytes of “hot data” in memory, and 10 backup nodes for high availability and elastic scale.

Main Concepts and Components

Caches are an abstraction that describe a node in a Geode distributed system.

Within each cache, you define data regions. Data regions are analogous to tables in a relational database and manage data in a distributed fashion as name/value pairs. A replicated region stores identical copies of the data on each cache member of a distributed system. A partitioned region spreads the data among cache members. After the system is configured, client applications can access the distributed data in regions without knowledge of the underlying system architecture. You can define listeners to receive notifications when data has changed, and you can define expiration criteria to delete obsolete data in a region.

Locators provide both discovery and load balancing services. You configure clients with a list of locator services and the locators maintain a dynamic list of member servers. By default, Geode clients and servers use port 40404 and multicast to discover each other.

Geode includes the following features:

Geode in 5 minutes

Extract and build from source (note: currently Geode supports jdk1.7.75):

$ cd geode
$ ./gradlew build installDist

Start a locator and server:

$ cd gemfire-assembly/build/install/apache-geode
$ ./bin/gfsh
gfsh> start locator --name=locator
gfsh> start server --name=server

Create a region:

gfsh> create region --name=region --type=REPLICATE

Write a client application:

HelloWorld.java

import java.util.Map;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.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();
  }
}

Compile and run HelloWorld.java. The classpath should include gemfire-core-dependencies.jar.

javac -cp /some/path/geode/gemfire-assembly/build/install/geode/lib/gemfire-core-dependencies.jar HelloWorld.java
java -cp .:/some/path/geode/gemfire-assembly/build/install/geode/lib/gemfire-core-dependencies.jar HelloWorld

Application Development

Geode applications can be written in a number of client technologies:


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.