干扰物:实施例日记(Disruptor: journaling Example)

2019-07-31 09:50发布

我对于有关日记步干扰物中最常见的(或推荐)的实现很好奇。 和我的最常见的问题有:

  • 它是如何切实执行(举例)?
  • 它是明智的使用JPA?
  • 什么DB(由已与干扰物实施项目的社区)是常用的?
  • 难道是明智的,在中间处理器(EventProcessors)的使用,这样每个消息的国家应被保存,而不是之前和业务逻辑处理后?

顺便说(我很抱歉,我知道这是不是与轴颈步有关),什么是在一个事件处理过程中删除从RingBuffer消息的正确方法(假设该消息是死了/过期,应由被删除整个过程)。 我想知道的类似死信通道模式。

干杯!

Answer 1:

该干扰器通常用于低等待时间,高通量处理。 例如百万在几百微秒的典型延迟的消息。 由于很少有数据库可以处理这类具有相当有限延迟的更新率,日志往往是做一个原始文件,复制到第二(或第三)系统。

为报告的目的,系统读取该文件或听消息,并以最快的速度,因为它可以更新数据库但这取出关键路径。

当每一个事件处理器已经处理一个条目是在环形缓冲器死。


直到每个事件处理器已经处理它和它之前的所有消息的消息使用时隙是不可用的。 删除邮件过于昂贵,无论是在设计上的表现和影响来看

每个事件处理器看到每封邮件。 由于这种情况的同时,还有在做这个顺水,但相当正常的事件处理器忽略的消息作为一个结果。 (可能是最消息)



文章来源: Disruptor: journaling Example