2.7. 持久性存储
配置数据仓库以与持久数据源交互可严重影响性能。这个性能损失来自于,传统数据源比内存缓存要慢得多。当调用超出 JVM 时,读取和写入操作总是需要更长的时间。但是,根据您使用缓存存储的方式,数据网格性能降低会降低性能降低,从而提高了内存数据在访问持久性存储中的数据。
使用持久性存储配置 Data Grid 部署也提供了其他好处,例如允许您为安全集群关闭保留状态。您还可以将缓存中的数据溢出到持久性存储,并获得超过内存中可用容量。例如,您可以总有十千个条目,同时只在内存中保留 200万个条目。
Data Grid 添加键/值对,以便以 write-through 模式或 write-behind 模式缓存和持久性存储。由于这些写入模式对性能有不同影响,所以您必须在规划 Data Grid 部署时考虑它们。
编写模式 | 影响性能 |
---|---|
write-through | Data Grid 同时将数据写入缓存和持久性存储,这会提高一致性并避免可能导致节点故障的数据丢失。
直写模式外,同步写入会增加延迟并降低吞吐量。 |
write-behind | Data Grid 同步将数据写入缓存,然后将修改添加到队列中,以便异步对持久性存储的写入进行,这可以降低一致性,但降低了写入操作的延迟。 当缓存存储无法处理写入操作数量时,Data Grid 会延迟新的写入操作,直到待处理的写入操作的数量低于配置的修改队列大小,方式与直写队列大小类似。如果存储通常足够快,但在缓存写入突发过程中发生延迟,您可以增加修改队列大小,使其包含突发并缩短延迟。 |
passivation
启用传递配置 Data Grid 仅在从内存中驱除条目时将条目写入持久性存储。传递也意味着激活。对键执行读取或写入会导致该密钥回到内存中,并将它从持久性存储中删除。在激活过程中从持久性存储中删除密钥不会阻止读取或写入操作,但它会增加外部存储的负载。
传递和激活可能会导致数据平面为缓存中给定条目执行多个持久性存储调用。例如,如果内存中没有可用条目,Data Grid 会将它回到内存中,这是一个读取操作,以及将其从持久性存储中删除的 delete 操作。另外,如果缓存达到大小限制,Data Grid 会执行另一个写入操作来传递新被驱除的条目。
使用数据预加载缓存
可能会影响 Data Grid 集群性能的持久性存储的另一个方面是预加载缓存。当 Data Grid 集群启动时,此功能填充您的缓存,以便它们是"warm",并可直接处理读取和写入。预加载缓存可能会减慢 Data Grid 集群启动速度,如果持久性存储中的数据量大于可用 RAM 量,则会导致内存不足异常。