GLA Summit 2020/Distributed Message Broker Design
Distributed Message Broker Design | |
---|---|
Conference | GLA Summit 2020 |
Presenters | Dmitry Sagatelyan |
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