achieving causal and total ordering in publish/subscribe middleware with dsm
Causal and total event ordering are Quality of Service guarantees needed by many distributed applications, such as collaborative whiteboards, chat systems, online multiplayer games, and has also usage when implementing active replication, replicated databases and other systems. Most state of the art Publish/Subscribe middlewares offer no guarantees regarding event ordering either because of the bandwidth overhead associated with the vector clock approach or the bottleneck of a central sequencer. In this paper we propose an architecture based on distributed shared memory, where publishers of the same group can publish at different brokers, while maintaining event ordering. By synchronizing broker access to one shared logical clock per group, causal and total event ordering is achieved. Our architecture allows events to be delivered out-of-order to subscribers, while giving them a way to correctly reorder events. Results of experiments with a reference implementation of the architecture show that the bandwidth consumption of our ordering mechanism can be three orders of magnitude lower than a vector based solution.
publish/subscribe middleware dsm causal/total order