commit | 09d7b5ce2817bcd1ae7e7b09f32dce995b9cfcf5 | [log] [tgz] |
---|---|---|
author | Swapnil Bawaskar <sbawaskar@apache.org> | Mon Oct 24 23:18:28 2016 -0700 |
committer | Swapnil Bawaskar <sbawaskar@apache.org> | Mon Oct 24 23:18:28 2016 -0700 |
tree | 09f34460ee309f86eb212785111cb9e6acf68dcf | |
parent | 639c856021ec9321cdc0895a5e1503a6296dc765 [diff] | |
parent | 280a407c59a89401d5d87d6e6aeda1c975870753 [diff] |
Merge branch 'release/1.0.0-incubating'
Overview
Main Concepts and Components
Location of Directions for Building from Source
Geode in 5 minutes
Application Development
Documentation
wiki
Continuous Integration
[Apache Geode] (http://geode.incubator.apache.org/) 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.
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:
Directions to build Apache Geode (incubating) from source are in the source distribution, file BUILDING.md
.
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
Apache Geode applications can be written in these client technologies: