【问题标题】:Parallel between LMax Disruptor and Rx Framework concept?LMax Disruptor 和 Rx 框架概念之间的平行关系?
【发布时间】:2012-05-10 19:52:46
【问题描述】:

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

“对于每个单独的项目,消费者只需说“当您获得的数量超过此数量时让我知道”,并被告知它可以获取多少条目作为回报。”

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

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

【问题讨论】:

  • 你的意思是,你能做这样的事情吗? github.com/odeheurles/Disruptor-net
  • 您有 200 多个问题没有公认的答案,也许从这么多的数字中可以学到一些东西。 ;)
  • 真的吗?我通常会尝试至少接受一个问题,但有时我的问题太难了,也许人们花了很多时间来回答,所以我忘了:)
  • 关于 Disruptor.net 感谢它值得一看。至于我的问题,这只是一个愚蠢的概念问题:这两个东西有关系吗?因为对我来说是,但 LMax 的创建者从不提及反应性概念,所以我有一些疑问。
  • 我会假设他们没有提到它,因为它不是基于其他解决方案,这并不意味着它没有很多共同点。 ;)

标签: java .net architecture concurrency reactive-programming


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    它们的设计目的是用来抓不同的痒。

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

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

    语义差异

    正如 Disruptor.Net 创始人指出的here

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

    • 异常 (OnError) 终止了流,而中断器则不是这种情况
    • 当它很热时,你不能订阅它:观察者必须在“启动”破坏器之前设置,这不会 与诸如重试之类的运算符一起工作得很好,例如,它将重新 如有错误请订阅
    • 许多操作员对破坏者没有意义,或者根本无法工作

    话虽如此,他(至少有一次)在想integration between Disruptor.Net, TPL Dataflow and Rx

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 2013-11-23
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      相关资源
      最近更新 更多