Dani Traphagen from GridGain spoke at OSCON 2017 Conference about Apache Ignite platform and the paradigm shift in viewing the disk as a bottleneck & the decreasing costs of memory. She talked about how to optimize toward the cache, leveraging it for microservices architectures with the open source project Apache Ignite.
Apache Ignite is a distributed in-memory cache and query engine built to work with datasets in real time. It can also be integrated with other systems like relational databases, NoSQL databases like Cassandra, Spark, and Hadoop. The platform includes various components like:
- Data Grid is the foundation of the platform. It's a distributed key value data store with caching distributed in-memory data throughout the cluster. There are two flavors of data caching, partitioned cache (contains primary and backup nodes) and replicated cache (where the data is replicated throughout the cluster). Data Grid also offers the consistency, data locality and modality (every client can determine which node it belongs to).
- SQL Grid is Ignite's in-memory SQL component that's ANSI-99 compliant and supports SQL and DML commands as well as distributed SQL joins, indexing and ACID transactions.
- Compute Grid can be used for distributed computations, machine learning, risk analysis, grid computing using design patterns like MapReduce and Fork/Join.
- The Service Grid, foundation for a microservices based architecture with scalable middleware. It’s used to deploy user defined microservies and you manage the lifecycle (initiate, maintain, kill) of your services. In this architecture model, service nodes connect to data nodes which in turn connect to the persistent data stores like relational database, Cassandra, and Hadoop.
The four main aspects of the Service Grid are data nodes, service nodes, communication, internal & external Apps, and persistence. It also provides load balancing (sticky vs. non-sticky) and fault tolerance. Deployment is done by the Node Filter, a class that allows you to specify the nodes to run your service.
Data Nodes are the server nodes that store data & accept queries (and/or computations) in a distributed fashion. Service Nodes are the server or client nodes that may be used as a target for a service deployment. Persistent Storage can be read-thru, write-thru, and transactional depending on what type of persistent store you elect.
If you want to get started with Apache Ignite platform, visit the GridGain Web Console website which also includes a demo project.