第 1 章 配置缓存编码
了解如何使用不同介质类型配置 Data Grid 缓存,以及编码如何影响您可以使用 Data Grid 的方法。
1.1. 缓存编码
编码是由介质类型标识的格式,Data Grid 用于将条目(键/值对)存储在缓存中。
远程缓存
Data Grid Server 使用在缓存配置中设置的编码将条目存储在远程缓存中。
hot Rod 和 REST 客户端包括一个介质类型,其中包含他们向 Data Grid 服务器发出的每个请求。为了处理使用不同介质类型的多个客户端,Data Grid 服务器会将数据按需转换为缓存配置中设置的介质类型。
如果远程缓存没有任何编码配置,Data Grid 服务器会在没有任何介质类型信息的情况下将键和值存储为通用 byte[]
,这可能会在为客户端请求不同格式转换数据时造成意外的结果。
使用 ProtoStream 编码
当客户端请求包含无法转换为或从缓存配置中设置的介质类型时,数据网格服务器会返回错误。
如果要使用多个客户端,如 Data Grid Console 或 CLI、Hot Rod 或 REST,建议使用 application/x-protostream
介质类型配置缓存编码。ProtoStream 编码还允许您使用服务器端任务,并对远程缓存执行索引查询。
嵌入式缓存
默认情况下,数据仓库将条目存储在嵌入式缓存中,存为旧 Java 对象(POJO)。
对于集群嵌入式缓存,Data Grid 需要将所有 POJO 回一个字节阵列,该数组可以在节点间复制,然后取消合并回 POJO。这意味着,如果您没有配置另一个 marshaller,则必须确保数据仓库可以使用 ProtoStream marshaller 序列化您的 POJO。
如果您将 mutable POJO 存储在嵌入式缓存中,则应始终使用新的 POJO 实例更新值。例如,如果您将 HashMap
存储为键/值对,Data Grid 集群的其他成员不会看到对映射的任何本地修改。另外,如果在 Data Grid 编译对象的同时更新 Map 实例,则可能会出现 ConcurrentModificationException
。