1.2. protobuf 缓存编码
协议缓冲器(Protobuf)是结构化数据的轻量级二进制介质类型。作为缓存编码,Protobuf 为您提供了 Hot Rod 和 REST 端点的不同编程语言中客户端应用之间的互操作性。
Data Grid 使用 ProtoStream 库将缓存编码为 Protobuf,使用 application/x-protostream 介质类型。
以下示例显示了描述 Person 对象的 Protobuf 消息:
protobuf 不支持循环对象。使用 Java 序列化或 JBoss Marshalling 进行 marshall 环形对象。
互操作性
由于它是语言中立,Protobuf 编码意味着,Data Grid 可以处理 Java、C++、Clo、Python、Go 等编写的客户端应用程序的请求。
protobuf 还使不同远程端点(Hot Rod 或 REST 上的客户端)能够在同一数据上运行。由于它使用 REST API,因此您可以通过 Data Grid 控制台访问和使用 Protobuf-encoded 缓存。
您不能将 Data Grid 控制台与 application/x-protostream 以外的任何二进制编码一起使用。
您应该始终使用带有 application/x-protostream 介质类型的 Protobuf 缓存编码来与任何红帽技术集成,因为它允许应用程序和服务之间的通信。
queries
Data Grid 需要缓存中的结构化数据表示,以实现快速可靠的查询。要使用 Ickle 查询语言搜索缓存,您可以注册描述对象的 Protobuf 模式。
自定义类型
网格包括 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");