【问题标题】:Partition aware hazelcast queue分区感知hazelcast队列
【发布时间】:2015-01-27 07:19:28
【问题描述】:

我们是否可以在 Hazelcast 分布式队列上执行分区感知操作?

例如,我将在一个队列中有多个消费者节点,并且希望每次都由同一个节点处理“相似”类型的消息。类似的类型是指消息的一些业务密钥。

目前,我们拥有一个分布式流数据处理生态系统,通过在 IMap 上使用来自本地入口侦听器的消息。一个特定的对象模型属性被设置为键,所以我们知道模型分布在分区中。因此,处理逻辑可以在本地执行,而无需使用分布式锁(或根据设计合同根本不使用任何锁)。我希望使用分布式阻塞队列来实现类似的行为。

这可行吗?使用 Hazelcast 3.3.3

【问题讨论】:

    标签: java queue hazelcast


    【解决方案1】:

    您知道队列(当前)不是分区数据结构吗?因此,集群中有一个成员负责存储该队列中的所有数据(另一个成员负责备份)。

    您可以控制队列的存储位置,例如如果您有 2 个队列并希望它们存储在同一个分区中,请使用

    foo@somekey bar@somekey

    在这种情况下,两个队列都存储在“somekey”分区中。

    【讨论】:

    • 不,我不知道队列不是分区数据结构。那么,我们如何实现“分布式”呢?查看 QueueStore 接口,不知何故,我推断出一个队列是建立在 IMap 之上的,其键是一些唯一的 id 和提供对象的值。您能否详细说明这是如何实现的?对不起我的无知
    • 路线图上有分区队列,但不会在下一个 Hazelcast 版本中添加(3.5.. 预计在 2015 年 4 月/3 月的某个地方)。所以也许是 2015 年 9 月。在 Hazelcast 2.x 中,IQueue 是基于 IMap 的,而 Hazelcast 3.5 则不是。你看过 ITopic 吗?您可以创建发布/订阅解决方案,并将其用于流式传输。您还可以查看我们的 SPI;底层基础设施。创建自己的分布式数据结构并不复杂。 github.com/hazelcast/hazelcast-code-samples/tree/master/spi
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多