Developing a cloud system with an eye on scalability meaning that the system is composed into REST-based services along functional boundaries (usermgmt, ordermgmt, customermgt etc) each with its own underlying database and depending on load, its presumable that we might spins up multiple instances of say the ordermgmt service. When the ordermgmt service processes a request to add an order (on behalf of a "customer"), it will make a REST call to the customermgmt service to validate the customer etc...
Since a customer entity would not change very often, I'm wondering if something like ZooKeeper would be appropriate to cache an instance of a particular customer that multiple instances of a customermgmt service might interrogate before hitting the database. I've looked at the various lists of Zookeeper uses but don't see anyone using it for object caching. Seems like the recommended znode size of bytes to approx 1K making it not appropriate for storing an dehydrated object. Also there's no support for GC or LRU out of the box so I would need to add this as well.
If not Zookeeper, any more appropriate suggestions? We're using Hibernate as the ORM, but we don't have a lot of experience with it and while it support 1st and 2nd level caches, I'm not sure if there they work in a distributed/replicated manner across multiple service instances.
Thanks Scott