9.11. 基于密钥的重新哈希了解操作符


迭代器分割 器和每个 终端运算符都与重新哈希感知器不同的是,必须跟踪每个网段处理了哪些键,而不是仅段段。这是为了保证一次(迭代器和分割器)或至少一次行为(对于每个),即使在集群成员资格发生变化下也是如此。

在远程节点上调用时,迭代 器和 分割 器运算符将返回条目的回滚批处理,其中下一个批处理仅在最后一个完全被完全使用后发回。完成此批处理是为了限制给定时间在内存中有多少条目。用户节点将保存在其处理哪些密钥以及给定片段完成时,将从内存中释放这些密钥。这就是为什么在迭代器方法中使用顺序处理的原因,因此仅在内存中保存片段密钥的子集,而不是来自所有节点。

per () 方法也会返回批处理,但在处理至少批处理后,它会返回批处理密钥。这样,原始节点可以知道已经处理了哪些密钥,以减少再次处理同一条目的几率。不幸的是,这意味着当节点意外停机时,至少有一次行为。在这种情况下,节点可能已经处理批处理,而还没有完成其中一个和这些条目,但还没有在完成的批处理中会在重新哈希失败时再次运行。请注意,在收到所有响应前,添加节点不会导致这个问题,因为重新哈希故障转移不会发生。

这些操作批处理的大小都由相同的值控制,这可以通过调用 CacheStream 上的 distributedBatchSize 方法进行配置。这个值将默认为在状态传输中配置的 chunkSize。不幸的是,这个值会权衡内存用量与性能,至少一次,您的鼠标可能会有所不同。

迭代器 与复制和分布式缓存一起使用

当节点是分布式流的所有请求片段的主要或备份所有者时,Data Grid 在本地执行 迭代分割 器终端操作,这会优化性能,因为远程迭代更为资源密集型。

此优化适用于复制和分布式缓存。但是,在使用 共享 并启用了 write-behind 的缓存存储时,Data Grid 会远程执行迭代。在这种情况下,远程执行迭代可确保一致性。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat