2

正如我在这里读到的http://mechanitis.blogspot.fr/2011/06/dissecting-disruptor-how-do-i-read-from.html

“对于每一个单独的项目,消费者只需说‘当你得到的数量超过这个数字时告诉我’,并被告知它可以获取多少条目作为回报。”

这不与 Erik Meijer http://www.youtube.com/watch?v=8Mttjyf-8P4公开的 Rx 框架概念有关 吗?

如果是,Rx Framework 是否有助于实现类似的软件?

4

2 回答 2

4

好问题,对于我目前的一个项目,我自己一直在想这个问题。

但是,我觉得没有资格给出明确的答案:

它们旨在抓挠不同的瘙痒。

Disruptor 显然是为性能优先而设计的,尽可能接近金属。除了它所做的事情之外,它并没有做任何花哨的事情。

Rx 更高级别,它是“Linq to events”,它允许您使用“事件”做一些普通框架事件无法做到的事情(您不能过滤标准事件,然后继续将其作为事件传播) )。

语义差异

正如 Disruptor.Net 的创始人在这里指出的那样:

接口匹配,但我认为 RX 背后的语义不匹配:

  • 异常 (OnError) 会终止流,而中断器则不是这种情况
  • 当它很热时你不能订阅中断器:必须在“启动”中断器之前设置观察者,这对于像重试这样的操作员来说效果不佳,例如在出错时会重新订阅
  • 许多运营商对破坏者没有意义,或者根本无法工作

话虽如此,他(至少有一次)正在考虑Disruptor.Net、TPL Dataflow 和 Rx 之间的集成

这是另一个页面,有人问同样的问题,该页面的结尾是:

在我看来,Disruptor 实际上更像 TPL DataFlow。

于 2012-05-04T12:22:39.360 回答
1

在不了解 Rx 框架的情况下,您可能是对的。然而,Disruptor.Net 被设计为 Java 版本的一个端口,因此它会尽可能地相似。鉴于原始版本不使用 Rx,使用不同的库会增加大量返工和可能的性能问题。

于 2012-05-01T10:00:57.223 回答