1.2. protobuf 缓存编码
协议缓冲(Protobuf)是结构化数据的轻量级二进制介质类型。作为缓存编码,Protobuf 为您提供了面向 Hot Rod 和 REST 端点的不同编程语言之间的客户端应用程序之间的互操作性。
Data Grid 使用 ProtoStream 库,使用 application/x-protostream 介质类型将缓存编码为 Protobuf。
以下示例显示了描述 Person 对象的 Protobuf 信息:
互操作性
由于它是不受信任的语言,Protobuf 编码的意味着 Data Grid 可以处理来自使用 Java、C++、C++、Python、Go 等编写的客户端应用程序的请求。
protobuf 还使不同远程端点(Hot Rod 或 REST)上的客户端能够在同一数据上运行。由于它使用 REST API,您可以通过 Data Grid 控制台访问和使用 Protobuf 编码的缓存。
您不能将 Data Grid 控制台与 application/x-protostream 以外的任何二进制编码一起使用。
您应该始终将 Protobuf 缓存编码与 application/x-protostream 介质类型集成,以与任何红帽技术集成,因为它允许应用程序和服务之间的通信。
查询
Data Grid 需要缓存中数据的结构化表示,以便快速可靠的查询。要使用 Ickle 查询语言搜索缓存,您需要注册描述您的对象的 Protobuf 模式。
自定义类型
Data Grid 包括 ProtoStream API 的实现,它支持经常使用的类型,包括 String 和 Integer。如果要在缓存中存储自定义类型,请使用 ProtoStream marshalling 生成并注册带有 Data Grid 的序列化上下文,以便它可以在所有对象中使用。
1.2.1. 将缓存编码为 ProtoStream 复制链接链接已复制到粘贴板!
将 Data Grid 配置为使用 ProtoStream 库将缓存条目存储为协议缓冲(Protobuf)。
流程
-
为键和值指定
application/x-protostream介质类型。
声明
programmatic
//Create cache configuration that encodes keys and values as ProtoStream
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC)
.encoding().key().mediaType("application/x-protostream")
.encoding().value().mediaType("application/x-protostream");
//Create cache configuration that encodes keys and values as ProtoStream
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC)
.encoding().key().mediaType("application/x-protostream")
.encoding().value().mediaType("application/x-protostream");
或者,您也可以对键和值使用相同的编码:
声明
<encoding media-type="application/x-protostream"/>
<encoding media-type="application/x-protostream"/>
programmatic
.encoding().mediaType("application/x-protostream");
.encoding().mediaType("application/x-protostream");