为 DSE 添加控制总线

https://blueprints.launchpad.net/congress/+spec/dse-control-bus

参与数据服务引擎 (DSE) 总线的节点需要一种发现彼此及其公开的数据类型的方式。目前,为此目的使用周期性广播机制。虽然有效,但这些广播效率低下,并使调试复杂化。

与其使用现有的基于广播的发现机制,DSE 上的节点应在已知的“集合注册表”上发布事件,每个节点都订阅该注册表。

问题描述

DSE 端点信息的分发目前使用效率低下的广播机制进行。相反,该信息应仅在发生更改或在明确请求时传递。

提议的变更

  • deepSix 的所有实例都将订阅一个已知的表,我们将将其称为“集合注册表”。

  • 当 deepSix 实例公开的数据索引发生更改(包括实例启动)时,该实例将向集合注册表发布更新。

  • 每个 deepsix 实例将维护一个它希望订阅的数据索引列表。该实例将在其本地副本的集合注册表中查找关联的端点以发送订阅请求。当集合注册表发生更改时,每个实例将重新评估其自身的订阅与这些更新。

  • DSE 的每个实例都有一个集合注册表。在分层 DSE 中,可能有多个注册表。

  • 在进行这些更改后,可以删除数据索引信息的周期性广播。

备选方案

我们可以继续使用现有机制作为替代方案,但随着总线上节点数量的增加,效率低下和复杂调试的问题将大大增加。

策略

N/A

策略操作

N/A

数据源

N/A

数据模型影响

N/A

REST API 影响

N/A

安全影响

N/A

通知影响

N/A

其他最终用户影响

N/A

性能影响

在运行时,此更改将减少在系统中分发有关新节点的信息所需的时间。它还将通过消除不必要的广播来减少总线上的整体“干扰”。我们预计干扰的减少将大大简化消息总线的调试。

其他部署者影响

N/A

开发者影响

N/A

实现

负责人

主要负责人

其他贡献者

工作项

待定

依赖项

N/A

测试

现有的测试框架足以测试此更改。

文档影响

N/A

参考资料

N/A