LMax Disruptor和Rx Framework概念之间的并行?

时间:2012-05-01 08:06:08

标签: java .net architecture concurrency reactive-programming

我在这里阅读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可以帮助实现类似的软件吗?

2 个答案:

答案 0 :(得分:4)

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

然而,我并不是很有资格给出明确的答案:

它们旨在划伤不同的痒。

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

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

语义差异

Disruptor.Net的发起人指出here

  

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

     
      
  • 异常(OnError)终止流,这与disruptor
  • 的情况不同   
  • 你不能在炎热的时候订阅破坏者:在“启动”破坏者之前必须设置观察者,这不是   与重试等运营商合作非常好   订阅时出现错误
  •   
  • 许多运营商对破坏者没有意义,或者只是不行。
  •   

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

这是另一个page,其中有人问相同的问题,页面以:

结束
  

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

答案 1 :(得分:1)

不知道Rx框架,你可能是对的。但是,Disruptor.Net被设计为Java版本的端口,因此它将尽可能相似。鉴于原始版本不使用Rx,它会增加大量的返工和可能的性能问题以使用不同的库。