Vitrage-Collector 按需¶
https://blueprints.launchpad.net/vitrage/+spec/rpc-collector
Vitrage 高可用性的一个更简单的实现,collector 服务应满足这些新需求
collector 应该采用主动-主动模式。
应移除 collector 和 graph 服务之间的依赖关系。
vitrage-graph 应该能够在需要时向 collector 请求更新。
问题描述¶
当前实现中,vitrage collector 和 vitrage graph 总是同时重启,这不是期望的行为,但这是由于缺乏更好的触发 get_all 事件。此外,当 vitrage-graph 宕机且不消费消息时,消息总线可能会因这种行为而偶尔过载。
提议的变更¶
Collector 接收同步 RPC 并检索所有事件的列表。
- vitrage-collector 实现
移除 get_all 和 get_changes 的定时器
get_all 和 get_changes 可以通过 RPC 调用
get_all 和 get_changes 接收一个列表参数 datasource_names。
将返回所有指定数据源中的所有实体
将在后台打开一个线程,将所有事件写入 Persistor 消息队列。
移除 collector 和 graph 服务之间的依赖关系(.service 文件)
- vitrage-graph 实现
应该管理对 get_all 和 get_changes 的 RPC 调用。
添加适当的定时器,通过 RPC 调用 get_all 和 get_changes
事件列表应使用事件协调器处理(在 TwoPrirityQueue 之前)
在每次处理完事件后,应拍摄一个快照。因此,大多数事件不需要重放
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
版本影响¶
无
其他最终用户影响¶
无
部署者影响¶
vitrage-collector 可以从 vitrage-graph 独立重启
开发者影响¶
无
Horizon 影响¶
无
实现¶
负责人¶
- 主要负责人
idan-hefetz
- 其他贡献者
无
工作项¶
无
依赖项¶
无
测试¶
现有 tempest 已经覆盖了新的行为
文档影响¶
无
参考资料¶
无