从 cage 获取关于数据服务状态的信息¶
https://blueprints.launchpad.net/congress/+spec/dse-dataservices-status
获取关于数据服务的指标,并通过 API 提供。这些信息将包括策略引擎需要了解的数据服务状态以及数据服务无法正确执行其工作时的状态。
问题描述¶
目前,作为 DSE 中节点实现的每个数据源都有两个状态字段:数据源上次刷新数据的时间以及尝试刷新数据时生成的最后一个错误。但还有其他指标作为数据源/DSE 节点状态的一部分会很有用,例如:待处理消息、消息速率、订阅者、订阅。
提议的变更¶
此更改将为每个 DSE 节点添加一个 status() 方法,该方法返回关于该节点的有用信息字典。该节点还将计算这些指标,并且可以配置,以便可以关闭计算成本较高的指标。
备选方案¶
status() 信息可以在 DSE 之上实现,而不是直接在 DSE 内部实现。但这样做会破坏 DSE 提供的抽象:一个负责消息队列、消息传递、排队时间等的消息总线。
策略¶
N/A
策略操作¶
N/A
数据源¶
N/A
数据模型影响¶
N/A
REST API 影响¶
没有,因为 API 已经为每个数据源公开了一个“status”查询。但该 API 的实现将更改为包含 DSE 提供的其他状态信息。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
可以关闭高成本的状态计算;因此,人们可以决定每个状态项是否值得计算其成本。
其他部署者影响¶
无
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
<launchpad-id 或 None>
- 其他贡献者
<launchpad-id 或 None>
工作项¶
添加指标的实现。是否持续计算指标或按需计算指标的决定将基于每个指标进行。
将 status() 方法添加到 DeepSix 类并返回一个指标字典。
依赖项¶
无
测试¶
单元测试就足够了:模拟 DSE 中的活动并检查状态指标是否符合预期。理想情况下,还应模拟负载下的指标计算。
文档影响¶
无
参考资料¶
无