Distributed rpc messaging using ZeroMQ
Currently, the messaging between components goes through a queue server. Even though each component polls to a queue of its topic, there are cases when the target host of a message retrieved from a component is not theirs and puts it back in the queue. In the worst case a message in a production deployment could be wandering around components of which is not its destination. Even though this would be a rare case, there is always a possibility for high latency.
In order to deliver messages efficiently, the messaging should be handed to its exact target. ZeroMQ seems promising for implementing a distributed messaging system for Nova. Some of the issues of implementation are architecture, failover, serialization, and monitoring.
Blueprint information
- Status:
- Complete
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- Zhongyue Luo
- Direction:
- Needs approval
- Assignee:
- Sina Web Service Dev
- Definition:
- Superseded
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
- Vish Ishaya
Related branches
Related bugs
Sprints
Whiteboard
There was already a blueprint for Essex and an actively maintained implementation seeking merge into Folsom (it missed the Essex merge window). The current driver is fully distributed and brokerless, including for fanout messages. See: https:/
The other blueprint is disingenuous to the actual implementation as the implementation exceeded the goals of the blueprint.
-- ewindisch