Mirror of Apache Geode
Java HTML JavaScript Scala CSS Shell Other
Latest commit 826bdbf Feb 16, 2017 @agingade agingade GEODE-2490: Avoid processing tombstone GC message in-line
Currently the tombstone message sent for replicas are getting
processed in-line instead of handing it to thread pool.
Based on the number of nodes in the cluster, this may take
long time to process, impacting other cache operation that
required to be processed in-line.

The change provided here enables tombstone messages to
be not processed in-line instead processed in separate
thread.
Permalink
Failed to load latest commit information.
buildSrc Only run the uiTest task for the :geode-pulse subproject. Add uiTest … Oct 29, 2016
dev-tools GEODE-2156: Update mailing list references Dec 6, 2016
docker Update dockerfile for 1.1.0 Feb 15, 2017
etc [GEODE-2381] spotless: line break on enum constants. Feb 6, 2017
extensions [GEODE-2381] spotless: line break on enum constants. Feb 6, 2017
geode-assembly GEODE-2481: extract default properties generation to its own class Feb 16, 2017
geode-benchmarks GEODE-2432: Disable maven artifacts for geode-benchmarks Feb 7, 2017
geode-book GEODE-2031 Add licenses for rat check Jan 16, 2017
geode-common Added Spotless plugin to enforce formatting standards. Oct 21, 2016
geode-core GEODE-2490: Avoid processing tombstone GC message in-line Feb 18, 2017
geode-cq refactor ServerStarterRule and LocatorStarterRule so that they can be… Feb 14, 2017
geode-docs Merge branch 'hotfix/revised_1_1_0_manual' into develop Feb 17, 2017
geode-json/src/main/java/org/json Revert "GEODE-2142: Removal of non-compliant org.json implementation." Feb 17, 2017
geode-junit GEODE-1930: apply build and dunit changes to support JMX tests Jan 25, 2017
geode-lucene Make sure IndexRepositorySpy doesn't mock the same object twice Feb 17, 2017
geode-old-client-support GEODE-2127 old client support service is not set up to handle arrays Nov 18, 2016
geode-old-versions Run backwards compatibility tests against 1.1.0. Feb 17, 2017
geode-pulse GEODE-2431: Update to Awaitility 2.0 Feb 6, 2017
geode-rebalancer GEODE-2431: Update to Awaitility 2.0 Feb 6, 2017
geode-site Remove generated html files Feb 17, 2017
geode-spark-connector GEODE-2156: Fix documentation link Dec 6, 2016
geode-wan GEODE-2431: Update to Awaitility 2.0 Feb 6, 2017
geode-web-api GEODE-2247: GFSH connect over HTTP without credentials should fail ea… Feb 9, 2017
geode-web GEODE-2198: close and re-create the cache on a server when importing … Jan 19, 2017
gradle GEODE-2475: Upgrade Lucene version to 6.4.1 Feb 13, 2017
.gitignore GEODE-999: Converted from Firefox driver to PhantomJS driver to run U… Oct 12, 2016
.travis.yml GEODE-2156: Update repo references Dec 6, 2016
BUILDING.md Removing incubating reference from BUILDING.md Feb 17, 2017
KEYS Updated KEYS file. Feb 3, 2017
LICENSE GEODE-2028: Fix license issues from 1.0.0-incubating release Nov 1, 2016
NOTICE Update copyright date in NOTICE Jan 7, 2017
README.md GEODE-2409: Beautify readme Feb 3, 2017
build.gradle GEODE-2260 Remove geode-examples from geode repo and Jan 17, 2017
gradle.properties updated version number to 1.2.0 in gradle.properties. Jan 27, 2017
gradlew GEODE-1571: have the integrated security specified by security-manage… Jul 5, 2016
gradlew.bat GEODE-1571: have the integrated security specified by security-manage… Jul 5, 2016
settings.gradle GEODE-1965 Create backward-compatibility unit test framework Jan 24, 2017

README.md

Build Status License Maven Central

Contents

  1. Overview
  2. Main Concepts and Components
  3. Location of Directions for Building from Source
  4. Geode in 5 minutes
  5. Application Development
  6. Documentation
  7. Wiki

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 in Beaverton, Oregon. Commercially available as GemFire™, the technology was first deployed in the financial sector as the transactional, low-latency data engine used in Wall Street trading platforms. Today Apache Geode is used by over 600 enterprise customers for high-scale business applications that must meet low latency and 24x7 availability requirements. 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 terabytes 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 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.
  • Applications run 4 to 40 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.

Building this Release from Source

Directions to build Apache Geode from source are in the source distribution, file BUILDING.md.

Geode in 5 minutes

With a JDK version 1.8 or a more recent version installed, start a locator and server:

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

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

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

Application Development

Apache Geode applications can be written in these client technologies:

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