GLA Summit 2020/Distributed Message Broker Design

From LabVIEW Wiki
Jump to: navigation, search

Distributed Message Broker Design by Dmitry Sagatelyan

Message Broker is a very powerful Design Pattern – it enables scalability of actor-based applications by providing multiple flavors of actor decoupling:

  • Spatial – Actors do not need to know each other’s ‘location’ (references/URLs)
  • Temporal – Actors may be created/started in any order
  • Synchronization – Actors do not loose messages (message buffering)
  • Semantic – Actors can exchange messages across abstraction/aspect boundaries without being statically coupled to other actor’s message classes (Message Translation)

I’ve been using a ‘local’ Message Broker implementation to support actor-actor interactions within the same executable for the last 5 years. What I did not appreciate is that Message Brokers also allow eliminating a need for Actor Proxy objects required to communicate across EXE boundaries in ‘traditional’ actor topologies (ex: static actor hierarchies).

This presentation describes the design of a simple Distributed Message Broker extension with major features including:

  • Distributed Message Broker class is a child of the ‘local’ Message Broker class (OCP)
  • It is 100% backward compatible to ‘local’ Message Broker implementation (uses the same API)
  • It allows moving Actor classes between executables without any changes to Actor code
  • It eliminates the need for Actor Proxy objects by encapsulating proxy functionality (a single pair of proxies for EXE – EXE bidirectional message forwarding)
  • It supports auto-healing and auto-recovery of actor-actor communications in case of a remote application component (EXE) going off-line and coming back on-line
  • It uses Network Streams for implementing message forwarding across EXE boundaries

Presentation Links

See Also

External Links