使用 IgniteSet 作为 Ignite 连续查询的动态远程筛选器的一部分



是否有人尝试过使用IgniteSet或类似的数据结构来设置连续查询的远程筛选器?没有太多关于IgniteSet如何工作的文档,因此也没有这个问题。基本上我的用例如下:

我有一个使用Ignite实现的分布式缓存。用户对基于某些条件的缓存中的实时更新感兴趣。我将有多个用户订阅这些更新。我不打算运行n个连续查询,而是打算用一些分布式数据结构支持的远程过滤器为n个用户运行一个连续查询。

我认为IgniteSet可以为我工作。但我不确定这将如何影响我的应用服务器在生产中的性能,因为我不完全确定IgniteSet将如何工作(由于有关该主题的文档很少(。基本上,如果我需要更新点火集数据结构,它是否也会为所有远程节点动态更新?这是否意味着我将开始接收可能在这些远程节点上评估(为true(的过滤器的更新?

qry.setRemoteFilterFactory(new Factory<CacheEntryEventFilter<PersonKey, Person>>() {
@Override public CacheEntryEventFilter<PersonKey, Person> create() {
return new CacheEntryEventFilter<PersonKey, Person>() {
@Override public boolean evaluate(CacheEntryEvent<? extends PersonKey, ? extends Person> e) {
//IgniteSet maintained outside of filter
return igniteSet.contains(e.getKey().getCity());
}
};
}
});

如果我遗漏了一些显而易见的东西,我很抱歉。

如有任何帮助,我们将不胜感激!

IgniteSet由缓存支持,与所有Ignite缓存一样,其设计允许所有节点在可用时立即查看更新
请参阅:https://ignite.apache.org/docs/latest/data-structures/queue-and-set用于配置设置

你提出的设计要根据比赛条件而定。在合适的编写器有机会更新给定的IgniteSet之前,连续查询的使用者可能会进来。

使用适当的同步机制来计算出所有边缘条件。此处的示例/说明:https://ignite.apache.org/features/datastructures.html

最新更新