2.3. 失效缓存


您可以在validation 模式中使用数据网格来优化执行读操作卷的系统。一个好的示例是使用 invalidation 以防止在状态更改时进行大量数据库写入。

只有当您拥有另一个数据库等数据永久存储时,这种缓存模式才有意义,并且仅在读写系统中使用数据网格作为优化,以防止每个读取的数据库出现。如果为无效配置缓存,则每个数据在缓存中都会有变化,集群中的其他缓存都会收到一条信息,告知它们的数据已经过期,并应该从内存中删除,并应该从任何本地存储中删除。

图 2.5. 失效缓存

在validation 缓存 rhdg 中

有时,应用程序会从外部存储中读取值并希望将其写入本地缓存中,而不将其从其他节点中删除。要做到这一点,它必须调用 Cache.putForExternalRead (key, value) 而不是 Cache.put (key, value)

Invalidation 模式可以与共享缓存存储一起使用。写入操作都会更新共享存储,它将从其他节点的内存中删除过时的值。这样做的好处是两倍:网络流量尽可能减少,与复制整个值相比,网络流量尽可能小,而且集群中的其他缓存会以极快的方式查找修改的数据,这仅在需要时才会显示修改的数据。

重要

不会在本地、非共享、缓存存储中使用无效模式。invalidation 消息不会删除本地存储中的条目,有些节点会看到过时的值。

也可以使用特殊的缓存加载程序( ClusterLoader )配置失效的缓存。启用 ClusterLoader 时,读取找不到本地节点上的密钥的操作将首先从所有其他节点请求,并在本地将其保存在内存中。在某些情况下,它将存储陈旧的值,因此只有在对过时值有较高的容错能力时才使用它。

同步或异步复制

同步时,写入块直到集群中的所有节点都被驱除掉过时的值。异步时,原始器会广播无效的消息,但不会等待响应。这意味着,当在原始器上写入完成后,其他节点仍然可以看到过时的值。

Transactions

事务可用于批量无效消息。事务获取主所有者上的密钥锁定。

由于具有保守的锁定,每个写入都会触发锁定信息,该消息被广播到所有节点。在事务提交过程中,originator 广播一个单阶段准备消息(可选 fire-and-forget),它会导致所有受影响的键并释放锁。

通过光驱锁定,原始器将广播准备消息、提交消息和解锁信息(可选)。单阶段准备或解锁信息为 fire-and-forget,最后一条消息会释放锁定。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.