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

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
typeflat

Overview

Apache 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, Apache Geode is an in-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.

Apache Geode is a mature, robust technology  originally originally developed by GemStone GemStone Systems in Beaverton, Oregon. Commercially available as GemFire™, the technology it was first widely deployed in the the financial sector as the transactional, low-latency data engine used in Wall Wall Street trading platforms.  Today Apache Geode technology is used by over 600 hundreds ofenterprise customers for high-scale business applications that must meet low low latency and 24x7 availability requirements.

How to Get Apache Geode

You can download Apache Geode from the website, run a Docker image , or install with homebrew  on OSX. Application developers can load dependencies from Maven Central .

Code Block
languagexml
titleMaven
<dependencies>

    <dependency>
        <groupId>org.apache.geode</groupId>
        <artifactId>geode-core</artifactId>
        <version>$VERSION</version>
    </dependency>
</dependencies>
Code Block
languagegroovy
titleGradle
dependencies {
  compile "org.apache.geode:geode-core:$VERSION"
}
Main Concepts and Components

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

...

  • Combines redundancy, replication, and a "shared nothing" persistence architecture to deliver fail-safe reliability and performance.
  • Horizontally scalable to thousands of cache members, with multiple cache topologies to meet different enterprise needs. The cache can be distributed across multiple computers.
  • Asynchronous and synchronous cache update propagation.
  • Delta propagation distributes only the difference between old and new versions of an object (delta) instead of the entire object, resulting in significant distribution cost savings.
  • Reliable asynchronous event notifications and guaranteed message delivery through optimized, low latency distribution layer.
  • Applications run 4 to 40,000 times faster with no additional hardware.
  • Data awareness and real-time business intelligence. If data changes as you retrieve it, you see the changes immediately.
  • Integration with Spring Framework to speed and simplify the development of scalable, transactional enterprise applications.
  • JTA compliant transaction support.
  • Cluster-wide configurations that can be persisted and exported to other clusters.
  • Remote cluster management through HTTP.
  • REST APIs for REST-enabled application development.
  • Rolling upgrades may be possible, but they will be subject to any limitations imposed by new features.

...

$ gfsh 
gfsh> start locator --name=locator 
gfsh> start server --name=server 

Create a region:

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

Write a client application (this example uses a Gradle build script):

 

Code Block
languagejava
titlebuild.gradle
apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'HelloWorld'

repositories { mavenCentral() }
dependencies {
  compile 'org.apache.geode:geode-core:1.1.0'
  runtime 'org.slf4j:slf4j-log4j12:1.7.24'
}
Code Block
languagejava
titlesrc/main/java/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("regionhello");

    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 geode-dependencies.jar.

...

languagebash

...

Build and run the HelloWorld example.

$ gradle run

The application will connect to the running cluster, create a local cache, put some data in the cache, and print the cached data to the console:

key = 1, value = Hello
key = 2, value = World

Finally, shutdown the Geode server and locator:

 gfsh> shutdown --include-locators=true

For more information see the Geode Examples repository or the documentation .

Application Development

Geode applications can be written in these client technologies:

a number of client technologies:

The following libraries are available external to the Apache Geode project: