I'm currently architecting a system that must be capable of dealing with tens of thousands of writes per second. I am more-or-less settled on using Apache Cassandra for the persistence layer, and will be using Java for the application layer, but there are situations where I need to quickly access data in a way that picks up any changes within seconds.
Hitting Cassandra every single time I need to check this data for changes will be too slow, which means I need to use some kind of application layer caching.
To ensure that the cached data remains current, ideally it would support some kind of multicast-based cache invalidation.
What are my options?