Multi- and Distributed-core Programming Platform
Result and Worker Queues could be split between processes and utilize various communication patterns to distribute application and its components.
To support Uniformity of the programming model between local and distributed use cases, Active Queue must provide service discovery, load balancing, and data distribution; network bindings for events; recovery of missed events, etc.
Typical zNet distributed application processing steps shown in the figure:
- Register Function
- Register Reply Handler
- Generate and Submit Events to Result Queue
- Events Submitted to Proxy Worker Queue
- Proxy Worker Thread picks up Event from Queue
- Proxy Worker Thread invokes Dispatcher to map Events to matching Function
- Events Dispatched across Network to the Least Loaded Workers
- Remote Worker Threads pick up Events from Queues
- Remote Worker Threads invoke Dispatchers to match Events to Functions
- Remote Worker Threads invoke Functions to process Events
- Replies are Dispatched across Network back to the Result Queue
- Reply Processing Threads invoke Dispatcher to map Replies to Reply Handlers
- Reply Processing Threads invoke Reply Handler to Process Replies