Apache Geode
Java HTML JavaScript CSS Shell Python
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github GEODE-2897 Add PR template for github May 11, 2017
buildSrc GEODE-5388: Adding a gradle task to repeat a test Jul 12, 2018
ci Bump Windows job timeouts to 6h Aug 16, 2018
dev-tools GEODE-3870: move region entry classes to new entries package (#972) Oct 25, 2017
docker Update dockerfile for v1.6.0 May 2, 2018
etc GEODE-5254: Configure spotless to refrain from joining wrapped lines (#… May 25, 2018
extensions GEODE-5530: Creates extensions/geode-module-test (#2313) Aug 14, 2018
geode-assembly GEODE-5530: Add geode-core project to distributedTestRuntimeOnly (#2322) Aug 15, 2018
geode-book GEODE-5351 Prefer terminology of cluster over dist system (#2116) Jul 10, 2018
geode-common GEODE-5363: Moves all non-unit tests into specific isolated source se… Jul 17, 2018
geode-concurrency-test GEODE-4952: Remove unused imports from test files. (#1723) Apr 12, 2018
geode-connectors GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-core GEODE-5530 Refactors shared test source between geode-web and geode-… Aug 16, 2018
geode-cq GEODE-5530: Add geode-core project to distributedTestRuntimeOnly (#2322) Aug 15, 2018
geode-docs User Guide: parameterize product name Jul 26, 2018
geode-dunit GEODE-5530 Refactors shared test source between geode-web and geode-… Aug 16, 2018
geode-experimental-driver GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-json GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-junit GEODE-5438: Add rule for running threads in tests Aug 15, 2018
geode-lucene GEODE-5530: Add geode-core project to distributedTestRuntimeOnly (#2322) Aug 15, 2018
geode-old-client-support GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-old-versions GEODE-5492 Fix gradle dependencies to enable reliable parallel build (#… Jul 30, 2018
geode-protobuf-messages GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-protobuf GEODE-5530: Add geode-core project to distributedTestRuntimeOnly (#2322) Aug 15, 2018
geode-pulse GEODE-5530 move common pulse test framework into new sub-project Aug 16, 2018
geode-rebalancer GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-wan GEODE-5248: Fixes in GatewayReceiverMBeanBridge Aug 16, 2018
geode-web-api GEODE-5530: Removes test dependency from other test source sets (#2294) Aug 10, 2018
geode-web GEODE-5530: Removes geode-web-test since it is empty. Aug 16, 2018
gradle GEODE-5579: Add -PforceTest property to :test tasks (#2318) Aug 16, 2018
.gitattributes [#150615582] limit .gitattributes to only java files Aug 28, 2017
.gitignore GEODE-5484: Add Eclipse artifacts bin/ and .metadata to .gitignore Jul 27, 2018
BUILDING.md GEODE-2550 Improve README and BUILDING Feb 28, 2017
KEYS Adding pgp signature for Nabarun Nag in KEYS May 18, 2018
LICENSE GEODE-5535: Upgrade FastClasspathScanner to 4.0.6 (#2310) Aug 12, 2018
NOTICE Update NOTICE with 2018 copyright Feb 2, 2018
README.md GEODE-4801 Readme links to "how to contribute" Mar 12, 2018
build.gradle GEODE-5555: Add 'devBuild' task (#2293) Aug 10, 2018
gradle.properties GEODE-5525: Increase gradle jvmargs -Xmx value to 3g Aug 3, 2018
gradlew GEODE-4791: Enable gradle 4.8 for features and futureproofing (#2050) Jun 19, 2018
gradlew.bat GEODE-4791: Enable gradle 4.8 for features and futureproofing (#2050) Jun 19, 2018
settings.gradle GEODE-5530 move common pulse test framework into new sub-project Aug 16, 2018

README.md

Build Status License Maven Central homebrew Docker Pulls

Contents

  1. Overview
  2. How to Get Apache Geode
  3. Main Concepts and Components
  4. Location of Directions for Building from Source
  5. Geode in 5 minutes
  6. Application Development
  7. Documentation
  8. Wiki
  9. How to Contribute?
  10. Export Control

Overview

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

Apache 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 developed by GemStone Systems. Commercially available as GemFire™, it was first deployed in the financial sector as the transactional, low-latency data engine used in Wall Street trading platforms. Today Apache Geode technology is used by hundreds of enterprise customers for high-scale business applications that must meet 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.

Maven

<dependencies>
    <dependency>
        <groupId>org.apache.geode</groupId>
        <artifactId>geode-core</artifactId>
        <version>$VERSION</version>
    </dependency>
</dependencies>

Gradle

dependencies {
  compile "org.apache.geode:geode-core:$VERSION"
}

Main Concepts and Components

Caches are an abstraction that describe a node in an Apache 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 clients with both discovery and server load balancing services. Clients are configured with locator information, and the locators maintain a dynamic list of member servers. The locators provide clients with connection information to a server.

Apache Geode includes the following features:

  • 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.
  • 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.

Building this Release from Source

See BUILDING.md for instructions on how to build the project.

Geode in 5 minutes

Geode requires installation of JDK version 1.8. After installing Apache Geode, start a locator and server:

$ gfsh
gfsh> start locator
gfsh> start server

Create a region:

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

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

build.gradle

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'HelloWorld'

repositories { mavenCentral() }
dependencies {
  compile 'org.apache.geode:geode-core:1.4.0'
  runtime 'org.slf4j:slf4j-log4j12:1.7.24'
}

src/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("hello");

    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();
  }
}

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

Apache Geode applications can be written in these client technologies:

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

Export Control

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software: