There are many references to review.openstack.org, and while the redirect should work, we can also go ahead and fix them. Change-Id: I397b58c562079444553d393387d7c6323b06fba4
2.8 KiB
Make FIFO guarantee optional
FIFO has been one of Zaqar's most wanted guarantees. Besides reliability, durability and other latency requirements, users have always requested FIFO to be there. This feature, however, has proven to be an issue for some scenarios that don't necessarily require it, hence this proposal.
https://blueprints.launchpad.net/zaqar/+spec/make-fifo-optional
Problem description
FIFO, despite being a great guarantee to have, brings in some scale and performance issues that Zaqar is not willing to accept as the default behavior. This spec proposes making FIFO optional and letting drivers capable of supporting such scenario to do so.
Proposed change
The proposed change, as stated in previous sections, is to make FIFO optional. It is possible to do so through flavors.
Not all store drivers are capable of supporting FIFO but those who are, will have FIFO listed in their supported capabilities and such capabilities will be exposed through the flavors ones. However, it's not as straightforward as it seems. See the Work Items section for a list of required changes that will make this possible.
Drawbacks
As a side effect of this change, we'll have to relax the delivery guarantee for pub-sub. The reason being that walking through the queue won't prevent consumers to skip messages.
Alternatives
- Keep it as is
- Remove FIFO completely
Implementation
Assignee(s)
Primary assignee: flaper87
Milestones
Target Milestone for completion: K-1
Work Items
- Allow driver to expose what features they support
-
Each driver supporst a set of features and this set needs to be accessible from the upper layers
- Standardize the supported capabilities
-
Make a list of supported capabilities
- Add a way to pass capabilities down to the driver
-
We can do this when the driver is initialized since we know what the capabilities are at that time.
- Support both, FIFO and non-FIFO, post methods.
Dependencies
Note
This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode