apache Ignite 优先级队列的实现

问题描述 投票:0回答:1

我需要一个分布式优先级队列,并查看 Apache Ignite 提供的不同数据结构,我找不到任何类似于优先级队列的内容。无论如何,是否要创建一个 Ignite 优先级队列,还是我要从 Ignite 数据结构中获取数据并自己进行优先级排序?

java queue ignite distributed
1个回答
0
投票

这样怎么样:您要确定优先级的缓存中的数据有一个并行的 Java 代码部署,该部署维护与您希望缓存优先级相同的字段的优先级队列。然后按照以下过程进行 get 操作: 1.) 从 Java 代码中调用 get,该代码返回并删除其队列中优先级最高的元素。 2.) 使用该元素对缓存执行获取。对于放置操作,请遵循以下过程: 1.) 将对象放入缓存中,并记下优先级字段。 2.) 将相同的优先级字段值放入您的 Java 实现中。虽然上述内容可能并不在所有情况下都是完美的,但它应该表现良好。注意到的潜在问题/假设: 1.) 假设优先级值始终不同 2.) 在将优先级项添加到缓存和出现在 Java 优先级队列中之间存在一个又小又短的窗口。如果它在被添加到缓存时恰好是下一个最高优先级,那么在它实际被添加到 Java 代码优先级之前可能还有几毫秒的时间。 3.) 如果从缓存获取失败,那么您的进程应该将优先级元素添加回 Java 队列实现中。想法?如果 Java 进程失败,则必须扫描缓存数据以在启动时设置适当的优先级。

© www.soinside.com 2019 - 2024. All rights reserved.