Scalable Reactive Stream Processing Using DDS and Rx
Event-driven design is fundamental to developing resilient, responsive, and scalable reactive systems as it supports asynchrony and loose coupling. The OMG Data Distribution Service (DDS) is a proven event-driven technology for building data-centric reactive systems because it provides the primitives for decoupling system components with respect to time, space, quality-of-service, and behavior. DDS, by design, supports distribution scalability. However, with increasing core count in CPUs, building multicore-scalable reactive systems remains a challenge. Towards that end, we investigate the use of Functional Reactive Programming (FRP) for DDS applications. Specically, this paper presents our experience in integrating and evaluating Microsoft .NET Reactive Extensions (Rx) as a programming model for DDS-based reactive stream processing applications. We used a publicly available challenge problem involving real-time complex analytics over high-speed sensor data captured during a soccer game. We compare the FRP solution with an imperative solution we implemented in C++11 along several dimensions including code size, state management, concurrency model, event synchronization, and the fitness for the purpose of "stream processing." Our experience suggests that DDS and Rx together provide a powerful infrastructure for reactive stream processing, which allows declarative specication of concurrency and therefore dramatically simplies multicore scalability.