第 6 章 配置持久性存储


网格使用缓存存储和加载程序与持久性存储交互。

持久性
通过添加缓存存储,您可以将数据持久化到非易失性存储中,以便在重启后保留。
直写缓存
将 Data Grid 配置为持久性存储前面的缓存层简化了应用程序的数据访问,因为 Data Grid 处理与外部存储的所有交互。
数据溢出
使用驱除和传递技术可确保 Data Grid 只保留频繁使用的数据在内存中,并将旧的条目写入持久性存储。

6.1. passivation

传递配置 Data Grid,以便在从内存中驱除这些条目时将条目写入缓存存储。这样,传递可以防止不必要的,可能昂贵的写入持久性存储。

当尝试访问传递的条目时,激活是从缓存存储恢复到内存的过程。因此,当启用传递时,您必须配置实现 CacheWriterCacheLoader 接口的缓存存储,以便它们可以从持久性存储写入和加载条目。

当 Data Grid 从缓存中驱除条目时,它会通知缓存监听程序,该条目被传递,然后将条目存储在缓存存储中。当 Data Grid 获得对被驱除条目的访问请求时,它会很快地将缓存存储中的条目加载到内存中,然后通知缓存监听程序,使条目在存储中保持仍然在存储中。

注意
  • passivation 使用 Data Grid 配置中的第一个缓存加载程序,并忽略所有其他缓存。
  • 不支持 passivation:

    • 事务性存储.传递写入并从实际 Data Grid 提交边界范围以外的存储中删除条目。
    • 共享存储。共享缓存存储需要条目始终存在于其他所有者的存储中。因此,不支持 passivation,因为无法删除条目。

如果您启用对事务存储或共享存储的 passivation,Data Grid 会抛出异常。

6.1.1. 传递是如何工作的

禁用传递

写入内存中的数据会导致写入持久性存储。

如果 Data Grid 从内存中驱除数据,则持久性存储中的数据包括从内存中驱除的条目。这样,持久性存储是内存缓存的超集。当您需要最高一致性时,建议您这样做,因为存储可以在崩溃后再次读取。

如果没有配置驱除,则持久性存储中的数据会在内存中提供数据副本。

启用 passivation

网格仅在从内存驱除数据时将数据添加到持久性存储中,条目会被删除或关闭该节点。

当 Data Grid 激活条目时,它会在内存中恢复数据,但仍然保留存储中的数据。这样,写入可以在没有存储的情况下尽快进行,并且仍然保持一致性。当只创建或更新一个条目时,将更新内存中的,因此存储将已过时。

注意

当存储也配置为共享时,不支持 passivation。这是因为当写入被驱除与读相比,条目可能会在节点间不同步。

为了提高数据一致性,任何不是共享的存储都应启用 purgeOnStartup。对于启用或禁用 passivation,因此这是正确的,因为存储可能会保存一个过时的条目,同时停止它,并在以后被忽略。

下表显示了在一系列操作后内存和持久性存储中的数据:

操作禁用传递启用 passivation

插入 k1。

memory: k1
Disk: k1

内存: k1
磁盘: -

插入 k2.

memory: k1, k2
Disk: k1, k2

memory: k1, k2
Disk: -

驱除线程运行和驱除 k1。

memory: k2
Disk: k1, k2

memory: k2
磁盘: k1

读取 k1。

memory: k1, k2
Disk: k1, k2

memory: k1, k2
Disk: k1

驱除线程运行和驱除 k2。

memory: k1
Disk: k1, k2

memory: k1
Disk: k1, k2

删除 k2。

memory: k1
Disk: k1

memory: k1
Disk: k1

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.