Distributed Message Broker Design - Dmitry Sagatelyan

preview_player
Показать описание
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 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
Рекомендации по теме