Last year I participated in the development of distributed systems in Java, and I use in-memory data grids (IMDG) for building of such the systems. What is IMDG about? It's a durable clustered in-memory cache with the possibility of distributed data processing and writing data to persistent storage (for example relational database).