Apache Geode is a distributed, in-memory database with strong data consistency. It's also the basis for a powerful commercial implementation that runs in Cloud Foundry.
"Pivotal Cloud Cache (PCC) is a specialized implementation of Pivotal GemFire, Pivotal’s commercial caching product based on Apache Geode." This quote comes from a good article covering the balancing act between Availability and Consistency of this technology.In any of it's three variations, it can provide a strong foundation for a 12 Factor application that needs a persistence layer (Geode also supports read-through, write-through and overflow techniques).
Start Geode in a Docker containerTo get started playing around with Geode, it's easy to spin up a Docker container. There is one gotcha, that I'll describe a workaround for. Ideally, someone more Docker savvy can let me know a better method to access Geode from the host OS.
docker run -p 8080:8080 -p 10334:10334 -p 40404:40404 -p 1099:1099 -p 7070:7070 -it apachegeode/geode
Start a Locator and a ServerOnce the container starts, you'll have an interactive shell active from which you can start Geode services. The "gee-fish" prompt is a shortened name for the GemFire Shell.
gfsh > start locator
Note the hostname it starts on. It will be output from the previous command in a format like: "d26f1ea42d39".
gfsh > start server
Setup a Geode Region
Next, create a region that will host your application data.
Access the Geode from a Windows OS HostTo reach the Geode services controller from outside of the container, I had to implement a small networking hack. Edit your Windows "C:\Windows\System32\drivers\etc\hosts" file to give the address "127.0.0.1" an alias matching the locator host address noted above.
For the location host shown above, the hosts entry would look like this:
127.0.0.1 localhost d26f1ea42d39
Running a Simple Java ClientI created a simple GitHub repo containing a Java client application to verify that the container is up and accepting data flow to the defined region: https://github.com/thecodebeneath/geodeclient
To run the simple Spring Boot client that writes some data to Geode, run the Maven command:
> mvn spring-boot:run
Query the Geode region for data by running this command from the container prompt:
gfsh > query --query='select * from /hello-world-region'
SummaryI hope this is a helpful bootstrap to get up and running with a Geode instance.
If you know of a way to avoid the Windows hosts file edit, please let me know - I'm always ready to learn something new!