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 已经覆盖了新的行为

文档影响

参考资料