IceStorm is a publish–subscribe event distribution service that allows you to create push applications that decouple publishers and subscribers. A single invocation can be sent to any number of subscribers based on application-defined topics, so application code is shielded from changes to the topology of the network.
IceStorm is particularly suited to broadcast-style scenarios, such as stock tickers, social networking applications, or remote monitoring systems. The diagram below illustrates how a remote sensing application that collects data from a number of sensors can use IceStorm to send each status update to any number of monitoring stations.
IceStorm servers can be federated, allowing you to create publish–subscribe services with unlimited scalability. In addition, IceStorm can operate in a high-availability mode where a number of servers form a replica group. If a server goes down, IceStorm automatically reroutes communication to servers that are still running, and when a server comes up, it automatically resumes event delivery via that server without any manual intervention.
Event subscriptions can be made persistent, so clients do not require special action after a restart for event flow to resume. IceStorm also provides a configurable mechanism that allows you to deal with stale subscriptions to clients that become dysfunctional, for example, by being disconnected from the network for an extended time.