3.4. scattered Caches


分散模式与分发模式非常相似,因为它允许线性扩展集群。它通过维护两个数据副本(使用 numOwners=2 作为分发模式)来允许单节点故障。与分布式不同,数据的位置不是固定的;虽然我们使用相同的 Consistent Hash 算法来查找主要所有者,但备份副本存储在上次写入数据的节点上。当写入源自主所有者时,备份副本将存储在任何其他节点上(此副本的确切位置不重要)。

这对任何写入(Distribution Mode)具有单一远程过程调用(RPC)的优势,但读取必须始终以主所有者为目标。这会提高写入速度,但读速度可能较慢,因此这个模式更适合于写入密集型应用程序。

存储多个备份副本也会降低内存消耗。要删除过时的备份副本,invalidation 消息会在集群中广播,这会产生一些开销。这使得在非常大的集群中分散模式性能较低(这种情况将来可能会优化)。

当节点崩溃时,主副本可能会丢失。因此,集群必须协调备份,并找出最后写入的备份副本。这个过程会在状态传输过程中生成更多网络流量。

由于数据写入器也是备份,因此即使我们在传输级别上指定了 machine/rack/site ids,集群也无法对同一机器/rack/site 上的多个故障具有弹性。

目前无法在事务缓存中使用 scattered 模式。不支持异步复制;改为使用异步缓存 API。功能命令不会被实施,但预计会很快添加它们。

缓存被配置为与其他缓存模式类似,以下是声明性配置示例:

<scattered-cache name="scatteredCache" />

这是如何以编程方式配置它:

Configuration c = new ConfigurationBuilder()
   .clustering().cacheMode(CacheMode.SCATTERED_SYNC)
   .build();

分散模式不在服务器配置中公开,因为服务器通常通过 Hot Rod 协议访问。该协议会自动为写入选择主要所有者,因此写入(具有两个所有者的分布式模式中)还需要集群中的单个 RPC。因此,分散的缓存不会带来性能优势。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.