第 3 章 集群缓存


集群缓存使用 JGroups 技术作为传输层将数据在整个网络间存储数据。

3.1. Invalidation 模式

您可以使用 Data Grid invalidation 模式来优化执行大量读操作的系统。一个很好的例子是使用失效的,以防止在状态更改时进行大量数据库写入。

只有在为数据库(如数据库)具有另一个永久存储,且仅在读密集型系统中优化时,此缓存模式才有意义,以防止每次读取时达到数据库。如果缓存被配置为无效,则每次数据在缓存中都会更改,集群中的其他缓存都会收到一条信息通知它们的数据现在过时,应该从内存和任何本地存储中删除。

图 3.1. Invalidation 模式

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

Invalidation 模式可用于共享缓存存储。写入操作同时更新共享存储,它会从其他节点的内存中删除过时的值。这样做的好处是两倍:与复制整个值相比,网络流量被最小化,因为与复制整个值相比,网络流量会很小,集群中的其他缓存也会以 lazy 方式查找修改的数据,只在需要时才需要。

注意

切勿将 invalidation 模式用于 本地存储。Invalidation 消息不会删除本地存储中的条目,有些节点将保持过时的值。

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

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

事务可用于批量处理无效消息。事务在主所有者上获取密钥锁定。要了解有关如何分配主要所有者的更多信息,请阅读 主要所有者部分

  • 使用 pessimistic 锁定时,每个写入都会触发锁定消息,该消息广播到所有节点。在事务提交过程中,原始器会广播一阶段准备消息(可选)使所有受影响的密钥无效,并释放锁定。
  • 使用最佳锁定时,原始器会广播准备消息、提交消息和解锁消息(可选)。一个阶段准备或解锁消息是 fire-and-forget,最后一个消息始终释放锁定。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.