使 FIFO 保证变为可选¶
FIFO 一直是 Zaqar 最受期待的保证之一。除了可靠性、持久性和其他延迟要求外,用户一直要求提供 FIFO。然而,此功能已被证明在某些不需要它的场景中存在问题,因此提出了此提案。
https://blueprints.launchpad.net/zaqar/+spec/make-fifo-optional
问题描述¶
FIFO 尽管是一个很好的保证,但会带来一些 Zaqar 不愿意接受作为默认行为的扩展性和性能问题。本规范建议使 FIFO 变为可选,并让能够支持此类场景的驱动程序这样做。
提议的变更¶
如前几节所述,拟议的更改是使 FIFO 变为可选。可以通过 flavors 实现这一点。
并非所有存储驱动程序都能够支持 FIFO,但那些支持的驱动程序将在其支持的功能中列出 FIFO,并且这些功能将通过 flavors 暴露出来。但是,事情并不像看起来那么简单。请参阅 工作项 部分,了解使之成为可能的所需更改列表。
缺点¶
作为此更改的副作用,我们将不得不放宽 pub-sub 的传递保证。原因是遍历队列不会阻止消费者跳过消息。
备选方案¶
保持不变
完全移除 FIFO
实现¶
负责人¶
主要负责人:flaper87
里程碑¶
完成目标里程碑:K-1
工作项¶
- 允许驱动程序暴露其支持的功能
每个驱动程序支持一组功能,并且需要从上层访问该组功能
- 标准化支持的功能
列出支持的功能
- 添加一种将功能传递到驱动程序的方法
我们可以在驱动程序初始化时执行此操作,因为那时我们知道这些功能是什么。
支持 FIFO 和非 FIFO 的 post 方法。
依赖项¶
注意
本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode