2.4. 分散缓存


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

这就具有单一远程过程调用(RPC)的优势,用于任何写入(分布式缓存需要一或两个 RPC),但读取必须始终以主所有者为目标。这样可加快写入速度,但可能速度较慢,因此这个模式更适合写密集型应用程序。

存储多个备份副本也会带来稍高的内存消耗。要删除过时的备份副本,无效的消息会在集群中广播,这会产生一些开销。这可降低具有大量节点的集群中分散缓存的性能。

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

因为数据的写入程序也是备份,即使集群在传输级别上指定 machine/rack/site ID 无法在同一台机器/rack/site 上处理多个故障。

注意

您不能将分散的缓存用于事务或异步复制。

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

<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.