<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>triple 协议支持的序列化 on Apache Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/</link><description>Recent content in triple 协议支持的序列化 on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/index.xml" rel="self" type="application/rss+xml"/><item><title>如何在 triple 协议场景下使用 protobuf、json 序列化</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/protobuf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/protobuf/</guid><description>&lt;h2 id="1-介绍">1 介绍&lt;/h2>
&lt;p>Protobuf（Protocol Buffers） 是由 Google 开发的一种轻量级、高效的数据交换格式，它被用于结构化数据的序列化、反序列化和传输。 相比于XML 和JSON 等文本格式，Protobuf 具有更小的数据体积、更快的解析速度和更强的可扩展性。&lt;/p>
&lt;h2 id="2-使用方式">2 使用方式&lt;/h2>
&lt;p>&lt;strong>在使用 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Protobuf(IDL) 开发 triple 通信服务&lt;/a> 的时候，dubbo server 将自动启用 protobuf、protobuf-json 序列化模式支持。&lt;/strong>&lt;/p>
&lt;h3 id="21-添加依赖">2.1 添加依赖&lt;/h3>
&lt;p>使用 triple + protobuf 模式，必须添加以下依赖：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dependencies&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;groupId&amp;gt;&lt;/span>com.google.protobuf&lt;span style="color:#268bd2">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;artifactId&amp;gt;&lt;/span>protobuf-java&lt;span style="color:#268bd2">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;version&amp;gt;&lt;/span>3.19.6&lt;span style="color:#268bd2">&amp;lt;/version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">&amp;lt;!-- 提供 protobuf-json 格式请求支持 --&amp;gt;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;groupId&amp;gt;&lt;/span>com.google.protobuf&lt;span style="color:#268bd2">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;artifactId&amp;gt;&lt;/span>protobuf-java-util&lt;span style="color:#268bd2">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;version&amp;gt;&lt;/span>3.19.6&lt;span style="color:#268bd2">&amp;lt;/version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/dependencies&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="22-配置启用">2.2 配置启用&lt;/h3>
&lt;p>只要是基于 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Protobuf(IDL) 开发模式进行 triple 协议通信&lt;/a> ，就会使用 protobuf 序列化，只要定义 protobuf 文件并启用 triple 协议即可。&lt;/p>
&lt;p>当使用 cURL 访问 triple 服务时，是会启用 protobuf-json 序列化模式&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>curl &lt;span style="color:#cb4b16">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#cb4b16">&lt;/span> --header &lt;span style="color:#2aa198">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span> &lt;span style="color:#cb4b16">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#cb4b16">&lt;/span> --data &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;name&amp;#34;:&amp;#34;Dubbo&amp;#34;}&amp;#39;&lt;/span> &lt;span style="color:#cb4b16">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#cb4b16">&lt;/span> http://localhost:50052/org.apache.dubbo.samples.tri.unary.Greeter/greet/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>protobuf 服务定义示例：&lt;/p></description></item><item><title>基于 Java 接口模式开发 triple 服务时，底层的序列化机制实现</title><link>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/wrapper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/serialization/triple/wrapper/</guid><description>&lt;h2 id="1-介绍">1 介绍&lt;/h2>
&lt;p>Dubbo 实现的 triple 协议易用性更好（不绑定 Protobuf），开发者可以继续使用 Java 接口 直接定义服务。对于期望平滑升级、没有多语言业务或者不熟悉 Protobuf 的用户而言，Java 接口方式是最简单的使用 triple 的方式。&lt;/p>
&lt;p>以下介绍这种协议模式下的底层序列化细节：框架会用一个内置的 protobuf 对象将 request 和 response 进行包装（wrapper），&lt;strong>也就是对象会被序列化两次，第一次是使用如 &lt;code>serialization=hessian&lt;/code> 指定的方式进行序列化，第二次是用 protobuf wrapper 对第一步中序列化后的 byte[] 进行包装后传输&lt;/strong>。&lt;/p>
&lt;h2 id="2-使用方式">2 使用方式&lt;/h2>
&lt;p>&lt;strong>在使用 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Java 接口方式开发 triple 通信服务&lt;/a> 的时候，dubbo server 将自动启用 protobuf、protobuf-json 序列化模式支持。&lt;/strong>&lt;/p>
&lt;h3 id="21-添加依赖">2.1 添加依赖&lt;/h3>
&lt;p>使用 triple 协议，必须先添加如下依赖：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dependencies&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;groupId&amp;gt;&lt;/span>com.google.protobuf&lt;span style="color:#268bd2">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;artifactId&amp;gt;&lt;/span>protobuf-java&lt;span style="color:#268bd2">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;version&amp;gt;&lt;/span>3.19.6&lt;span style="color:#268bd2">&amp;lt;/version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">&amp;lt;!-- 提供 protobuf-json 格式请求支持 --&amp;gt;&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;groupId&amp;gt;&lt;/span>com.google.protobuf&lt;span style="color:#268bd2">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;artifactId&amp;gt;&lt;/span>protobuf-java-util&lt;span style="color:#268bd2">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#268bd2">&amp;lt;version&amp;gt;&lt;/span>3.19.6&lt;span style="color:#268bd2">&amp;lt;/version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">&amp;lt;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/dependencies&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="22-配置启用">2.2 配置启用&lt;/h3>
&lt;p>只要是基于 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Java 接口方式模式使用 triple 协议&lt;/a> ，就会使用 protobuf wrapper 序列化，只要定义 Java 接口并启用 triple 协议即可：&lt;/p></description></item></channel></rss>