This document introduces Apache Geode, an open source distributed in-memory data management platform. It discusses what Geode is, how it is implemented, and some key features like high availability, scalability and low latency. It also introduces Spring Data GemFire, which simplifies using Geode with Spring applications through features like repositories and caching. Finally, it outlines the project roadmap and opportunities to get involved in the Geode community.
Geode can be scaled up or down to address load and changing demand, and… Ideally, Pivotal CloudFoundry (CF) will handle this automatically (dynamically)
Keywords: Data Volume and Rate of Data Streams/Events, Ingest/Process/Output, Meaningful/Impactful Business Results
Data is stored/kept in-memory for improved performance (lower latency, higher throughput) and distributed (replicated) across the cluster for high-availability and fault tolerance (resiliency to failures) and optionally persisted to disk (durability).
ACID properties characteristic is important because… Applications require traditional database capabilities (ACID-compliant (Atomic, Consistent, Isolated, Durable)) in a highly-performant architecture achieved via distributed computing (distributed systems).
Both Cache-level and Global (JTA)-based transactions are supported.
Region implements java.util.ConcurrentMap.
Geode enables event-based application architectures with Register Interests (RI) and Pivotal GemFire extends builds on that with Continuous Queries (CQ)
Consistency, highly-availability are low-latency are important aspects for enabling fast, responsive, resilient and accurate applications at scale.
Think microservices…
To summarize, Apache Geode can be described as…
Managing memory is important to prevent “stop the world” GCs and ultimately OutOfMemoryErrors.
Entry Count, Memory Size (MB) and Heap % LRU with LOCAL_DESTROY and OVERFLOW_TO_DISK
Expiration with (LOCAL_) DESTROY, (LOCAL_) INVALIDATE
Resource Management – Geode uses a ResourceManager to manage resources (memory) and can prevent cache modifications in the event of GC overload.
Appends data/transactions to Oplogs.
Application process is a (system) member in the distributed system (cluster).
Clients store metadata about bucket locations for Partitioned Region data.
Continuous feedback from servers on their load conditions.
With data partitioned and replicated across servers, clients can dynamically move to different servers to uniformly load the servers in order to deliver predictable response times.
Application process is a (system) member in the distributed system (cluster).
Powerful Application Developer Features
Spring is inherently Template-based (Template Pattern) using Callbacks.
Example… JdbcTemplate, JmsTemplate