java - 使用 Apache Ignite 队列进行分布式处理
问题描述
考虑以下场景。我有一个 Apache Ignite 节点集群。在每个节点上,可以出现需要异步处理的工作单元(例如基于最终用户的输入)。执行的顺序不是很重要,即在时间较早发生的工作单元应该在后面的工作单元之前执行,但只是大致执行。
经过一番阅读,我的第一个想法是使用分布式队列(并置,因为它可能很大)。每个节点都会有一个工作线程来监听队列并在它们到达后处理工作单元。但是,据我了解,队列项目随后被分发到所有集群节点。
所以我的第二个想法是:有没有办法让工作单元在该节点上的一个节点上产生并主要在该节点上进行处理?我的意思是,当节点本地工作单元全部被处理时,来自其他节点的工作单元被采用等等。
您是否遇到过类似的问题,您是如何解决的?
编辑:就我而言,工作单位需要坚持不懈。这意味着,如果一个节点在执行工作单元期间关闭,则该工作单元必须由其他节点处理或在节点重新启动时重新处理。
解决方案
这听起来像是 Compute Grid 功能的用例:https ://apacheignite.readme.io/docs/compute-grid
具体来说,您可能对工作窃取感兴趣:https ://apacheignite.readme.io/docs/load-balancing#job-stealing
推荐阅读
- visual-studio-code - 如何在 VSCode 的资源管理器侧栏中隐藏窗格?
- html - 我可以控制换行的高度吗?
- r - R - 用于循环的 lmer 函数
- python - 如何在二进制图像中获取 4 个角白色像素的像素位置
- embedded-linux - 无法将 systemd-analyze 添加到 Buildroot 映像
- abap - 使用动态字段名称循环进入循环
- r - 自动匹配和替换单词和位置
- formula - 使用带大小写的 Google Studio 公式时出错
- javascript - 使用 react native JS 获取数组(即使使用 stringify)
- angular - Angular:错误 NG8001:'mat-select' 不是已知元素: