当前位置: 首页 > 知识库问答 >
问题:

使用多个LMAX中断器

魏凡
2023-03-14

我是LMAX Disruptor的新手,我正在探索将其用于需要处理巨大流量的多层异步项目。

请求被传递到平台以发送SMS,请求被清理/检查简单错误并被记录。

获取并分析与发送SMS的客户端相关的各种其他信息,并将其他参数添加到SMS信息中。

分析并选择正确的路由。然后从SMS信息中设置特定于平台的协议参数并提交给路由器。

像这样,将有接收和处理短信传递到日志、账单、重试和许多其他的流程。在每个阶段,程序流中都会有并发或顺序执行。如果这是项目的高级视图,是否应使用LMAX干扰器框架在各个模块之间进行通信(sms信息)?

如果是这样的话,需要创建多少破坏者的righbuffer?

如果我的理解是对的,在不同的每个层/功能之间创建新的环缓冲区是分开的吗?

能否将POJO对象写入ringbuffer?如何将其应用于集群环境?虽然我阅读了一些文档并观看了一些关于此框架的视频,但我无法想象使用此框架的解决方案。

任何指导方针/示例/可视化图表/文档或您在这方面的想法都会对我有很大帮助。

共有1个答案

羊舌庆
2023-03-14

我们已经玩了一点颠覆者,并将其用作支持高性能、可配置、并行执行流的库。

在给定的场景中,我可以看到两个环形缓冲区配置。一个用于发送短信,另一个用于接收短信。

如果需要更复杂的配置,您还可以在发送端或接收端级联环形缓冲区。

关于你关于POJO的问题。环形缓冲区具有事件桶的概念,其中POJO可以作为有效负载进行处理,事件转换器可以用来填充事件桶。

 类似资料:
  • 是否已经有了Python3的实现(或至少绑定到Python3)? 我可以看到Github上有一个原始的Java实现,但我没有看到Python3的任何内容。

  • 我有一个环形缓冲区和一个事件处理程序。这用作消息传递服务器的入站缓冲区。 在偶处理程序中,它执行一些AMQP服务调用,有时由于调用没有超时而等待(下划线协议库中调用AMQP服务的错误)。对于2000tps,这使我的4096大小的环形缓冲区在一瞬间就满了。因为由于上述事实,onEvent调用线程似乎没有从该方法返回,并且在onEvent()内无限等待。 目前,不可能为该调用创建超时。 问题是: 当d

  • 我想使用Lmax Disruptor进行性能测试: 配置DURUPTOR 以某种方式“暂停”处理 向RingBuffer添加多条消息 “取消暂停”处理 这样,我可以清楚地测量缓冲区清空的速度。如果我“混合”添加了许多消息(这会带来一些延迟)并进行处理,那么在处理速度方面可能会有不太确定的结果。 然而,我似乎没有在LMAX Disruptor(https://lmax-exchange.github

  • 在使用disruptor时,可能会有一个(多个)消费者落后,并且由于这个缓慢的消费者,整个应用程序都会受到影响。 请记住,每个生产者(发布者)和消费者(EventProcessor)都在一个线程上运行,如何解决消费者速度慢的问题? 我们可以在单个消费者上使用多个线程吗?如果没有,有什么更好的选择?

  • 我们有一个使用Disruptor框架的系统,它有五个注册阶段来实现EvenetHandler。 阶段按顺序工作,因此请求只能在第一阶段完成时移动到第二阶段,该移动由Disruptor内部维护。 我们对第三阶段有问题,这是瓶颈,需要大量时间,因为它进行不同的HTTP调用并将响应存储在请求对象中。 因此,我们希望在第三阶段花了一段时间之后,将请求(无论有什么响应)提前到第四和第五阶段。 如何超时任何特

  • 我想要一个选项卡布局,其中,在每个选项卡上有两个片段,一个在上面显示任务的进度,通过在3个选项卡中提供从开始到结束的输入来完成,和另一个在进度片段下面的主片段将接受输入。 我试了两天所有的方法:( 我的解决方案我尝试了一个包含两个framelayout的布局,用于将主片段添加到ViewPager的两个选项卡中,如下所示: 在活动开始时,我执行此操作,请参见在主片段中用于加载不同标签位置的详细片段的