首页 > 解决方案 > 使用 Apache Ignite 队列进行分布式处理

问题描述

考虑以下场景。我有一个 Apache Ignite 节点集群。在每个节点上,可以出现需要异步处理的工作单元(例如基于最终用户的输入)。执行的顺序不是很重要,即在时间较早发生的工作单元应该在后面的工作单元之前执行,但只是大致执行。

经过一番阅读,我的第一个想法是使用分布式队列(并置,因为它可能很大)。每个节点都会有一个工作线程来监听队列并在它们到达后处理工作单元。但是,据我了解,队列项目随后被分发到所有集群节点。

所以我的第二个想法是:有没有办法让工作单元在该节点上的一个节点上产生并主要在该节点上进行处理?我的意思是,当节点本地工作单元全部被处理时,来自其他节点的工作单元被采用等等。

您是否遇到过类似的问题,您是如何解决的?

编辑:就我而言,工作单位需要坚持不懈。这意味着,如果一个节点在执行工作单元期间关闭,则该工作单元必须由其他节点处理或在节点重新启动时重新处理。

标签: javadistributed-computingignite

解决方案


这听起来像是 Compute Grid 功能的用例:https ://apacheignite.readme.io/docs/compute-grid

具体来说,您可能对工作窃取感兴趣:https ://apacheignite.readme.io/docs/load-balancing#job-stealing


推荐阅读