1

我正在寻找分布式实时系统的中间件。要求非常简单——发布/订阅具有持久存储的键值对存储:

  1. 发布者将“数据项”发布到主题,然后分发给这些主题的订阅者。这些数据项不需要排队,因为只有最新版本是相关的(想想股票价格)。如果没有订阅者,则应保留数据项以供以后使用(请参阅 2)-仅最新版本,无需排队。
  2. 订阅者可以随时上线,他们需要立即从指定主题接收最新版本的数据项,然后在发生更新时接收更新。

有什么东西可以自然地实现这种模式吗?到目前为止我见过的最好的是 Redis,但它需要在每一端进行两个单独的事务,在发布者上写入 + 发布(在订阅者上订阅 + 获取),这意味着它不是一个基本用例,也不能保证它不会错过更新发生在这两个电话之间。我知道的一种商业产品是 Tibco ActiveSpaces,但理想情况下是寻找开源和 .NET 或至少基于 Windows 的东西。

4

1 回答 1

0

OMG 的实时系统数据分发服务(简称 DDS)是一个标准,具有多种实现,可以满足您的需求。

您正在寻找的“持久数据”可以通过使用名为“transient”、“transient_local”或“persistent”的正确服务质量设置来实现,具体取决于您是否希望数据的生命周期超过生命周期它的来源,甚至整个系统的生命周期。

“最后一个值”语义是一种常见的用例和默认行为,但如果需要,DDS 可以存储的不仅仅是这些。

如需更详细的介绍,请查看此视频

于 2013-10-28T02:18:04.910 回答