<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>More RPC Extension Protocol Implementations Provided by Dubbo on Apache Dubbo</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/</link><description>Recent content in More RPC Extension Protocol Implementations Provided by Dubbo on Apache Dubbo</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/index.xml" rel="self" type="application/rss+xml"/><item><title>Redis Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/redis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/redis/</guid><description>&lt;p>RPC protocol implemented based on Redis &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>

 Supports versions above &lt;code>2.3.0&lt;/code>

&lt;/div>

&lt;h2 id="register-redis-service-address">Register Redis Service Address&lt;/h2>
&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>RegistryFactory registryFactory &lt;span style="color:#719e07">=&lt;/span> ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Registry registry &lt;span style="color:#719e07">=&lt;/span> registryFactory.getRegistry(URL.valueOf(&lt;span style="color:#2aa198">&amp;#34;zookeeper://10.20.153.10:2181&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>registry.register(URL.valueOf(&lt;span style="color:#2aa198">&amp;#34;redis://10.20.153.11/com.foo.BarService?category=providers&amp;amp;dynamic=false&amp;amp;application=foo&amp;amp;group=member&amp;amp;loadbalance=consistenthash&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="referencing-on-the-client-side">Referencing on the Client Side&lt;/h2>
&lt;p>Use on the client side &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>:&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;dubbo:reference&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;store&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;java.util.Map&amp;#34;&lt;/span> group=&lt;span style="color:#2aa198">&amp;#34;member&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Alternatively, point-to-point direct connection:&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;dubbo:reference&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;store&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;java.util.Map&amp;#34;&lt;/span> url=&lt;span style="color:#2aa198">&amp;#34;redis://10.20.153.10:6379&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can also use a custom interface:&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;dubbo:reference&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;store&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;com.foo.StoreService&amp;#34;&lt;/span> url=&lt;span style="color:#2aa198">&amp;#34;redis://10.20.153.10:6379&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It is recommended that the method names match the standard Redis method names, namely: get(key), set(key, value), delete(key).&lt;/p></description></item><item><title>Thrift Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/thrift/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/thrift/</guid><description>&lt;p>The Thrift protocol currently supported by Dubbo is an extension of the native Thrift protocol &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, adding some extra header information on top of the base protocol, such as service name, magic number, etc.&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Version &lt;code>2.3.0&lt;/code> and above supported

&lt;/div>

&lt;p>Using the Dubbo Thrift protocol also requires the Thrift IDL compiler to compile and generate the corresponding Java code. Future versions will enhance this aspect.&lt;/p>
&lt;h2 id="dependencies">Dependencies&lt;/h2>
&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;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>org.apache.thrift&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>libthrift&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>0.8.0&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;/code>&lt;/pre>&lt;/div>&lt;h2 id="configuration">Configuration&lt;/h2>
&lt;p>All services share a common port &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>:&lt;/p></description></item><item><title>Memcached Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/memcached/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/memcached/</guid><description>&lt;p>RPC protocol based on memcached &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>.&lt;/p>


&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Tip&lt;/h4>

 Support for version &lt;code>2.3.0&lt;/code> and above

&lt;/div>

&lt;h2 id="registering-the-memcached-service-address">Registering the memcached service address&lt;/h2>
&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>RegistryFactory registryFactory &lt;span style="color:#719e07">=&lt;/span> ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Registry registry &lt;span style="color:#719e07">=&lt;/span> registryFactory.getRegistry(URL.valueOf(&lt;span style="color:#2aa198">&amp;#34;zookeeper://10.20.153.10:2181&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>registry.register(URL.valueOf(&lt;span style="color:#2aa198">&amp;#34;memcached://10.20.153.11/com.foo.BarService?category=providers&amp;amp;dynamic=false&amp;amp;application=foo&amp;amp;group=member&amp;amp;loadbalance=consistenthash&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="referencing-on-the-client-side">Referencing on the client side&lt;/h2>
&lt;p>Use on the client side &lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>:&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;dubbo:reference&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;cache&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;java.util.Map&amp;#34;&lt;/span> group=&lt;span style="color:#2aa198">&amp;#34;member&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Or, connect directly point-to-point:&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;dubbo:reference&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;cache&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;java.util.Map&amp;#34;&lt;/span> url=&lt;span style="color:#2aa198">&amp;#34;memcached://10.20.153.10:11211&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Custom interfaces can also be used:&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;dubbo:reference&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;cache&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;com.foo.CacheService&amp;#34;&lt;/span> url=&lt;span style="color:#2aa198">&amp;#34;memcached://10.20.153.10:11211&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It is recommended that method names match the standard method names of memcached, namely: get(key), set(key, value), delete(key).&lt;/p></description></item><item><title>Rest Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/v3.2_rest_protocol_design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/v3.2_rest_protocol_design/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Starting from Dubbo version 3.3, the Rest protocol has been moved to the Extensions library, and the Triple protocol provides more comprehensive support for Rest. For more details, see the &lt;a href="../../tripe-rest-manual/">Triple Rest User Manual&lt;/a>.
If you wish to continue using the original Rest protocol, you can introduce the corresponding &lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-rpc-extensions/dubbo-rpc-rest">dubbo-spi-extensions&lt;/a> library dependency.

&lt;/div>

&lt;p>A lighter, Dubbo-style Rest protocol for interoperation within microservices (Spring Cloud Alibaba).&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Annotation Parsing&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Message Encoding and Decoding&lt;/p></description></item><item><title>Rmi Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/rmi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/rmi/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>The RMI protocol uses the JDK standard &lt;code>java.rmi.*&lt;/code> implementation, employing a blocking short connection and JDK standard serialization.&lt;/p>
&lt;ul>
&lt;li>Number of connections: Multiple connections&lt;/li>
&lt;li>Connection type: Short connection&lt;/li>
&lt;li>Transport protocol: TCP&lt;/li>
&lt;li>Transport method: Synchronous transmission&lt;/li>
&lt;li>Serialization: Java standard binary serialization&lt;/li>
&lt;li>Applicable scope: Mixed sizes of incoming and outgoing parameter data packets, with a number of consumers and providers roughly the same, can transfer files.&lt;/li>
&lt;li>Applicable scenarios: Routine remote service method calls, interoperable with native RMI services.&lt;/li>
&lt;/ul>
&lt;h4 id="constraints">Constraints&lt;/h4>
&lt;ul>
&lt;li>Parameters and return values must implement the &lt;code>Serializable&lt;/code> interface.&lt;/li>
&lt;li>The timeout configured in Dubbo is ineffective for RMI and must be set using Java startup parameters: &lt;code>-Dsun.rmi.transport.tcp.responseTimeout=3000&lt;/code>, refer to the RMI configuration below.&lt;/li>
&lt;/ul>
&lt;h2 id="usage-scenarios">Usage Scenarios&lt;/h2>
&lt;p>It is a set of APIs in Java that support the development of distributed applications, achieving method calls between programs on different operating systems.&lt;/p></description></item><item><title>Hessian Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/hessian/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/hessian/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>The Hessian protocol is used for integrating services that utilize Hessian. It is based on HTTP communication and uses Servlet to expose services, with Dubbo embedding Jetty as the server implementation by default.&lt;/p>
&lt;p>&lt;a href="http://hessian.caucho.com">Hessian&lt;/a> is an open-source RPC framework from Caucho, whose communication efficiency is higher than that of WebService and Java&amp;rsquo;s built-in serialization.&lt;/p>
&lt;ul>
&lt;li>Number of connections: multiple connections&lt;/li>
&lt;li>Connection method: short connection&lt;/li>
&lt;li>Transport protocol: HTTP&lt;/li>
&lt;li>Transport method: synchronous transmission&lt;/li>
&lt;li>Serialization: Hessian binary serialization&lt;/li>
&lt;li>Applicable scope: larger incoming and outgoing parameter data packets, more providers than consumers, higher pressure on providers, allows file transfer.&lt;/li>
&lt;li>Applicable scenarios: page transfer, file transfer, or interoperability with native Hessian services.&lt;/li>
&lt;/ul>
&lt;p>Dubbo&amp;rsquo;s Hessian protocol can interoperate with native Hessian services, which means:&lt;/p></description></item><item><title>Webservice Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/webservice/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/others/webservice/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>WebService-based remote call protocol, implemented based on &lt;a href="http://cxf.apache.org">Apache CXF&lt;/a> &lt;code>frontend-simple&lt;/code> and &lt;code>transports-http&lt;/code>. Supported in versions &lt;code>2.3.0&lt;/code> and above.&lt;/p>
&lt;p>CXF is an Apache open-source RPC framework formed by the merger of Xfire and Celtix.&lt;/p>
&lt;ul>
&lt;li>Number of connections: Multiple connections&lt;/li>
&lt;li>Connection method: Short connections&lt;/li>
&lt;li>Transport protocol: HTTP&lt;/li>
&lt;li>Transport method: Synchronous transmission&lt;/li>
&lt;li>Serialization: SOAP text serialization&lt;/li>
&lt;li>Applicable scenarios: System integration, cross-language calls&lt;/li>
&lt;/ul>
&lt;p>It can interoperate with native WebService services, meaning:&lt;/p>
&lt;ul>
&lt;li>The provider exposes the service via Dubbo&amp;rsquo;s WebService protocol, and the consumer directly calls using the standard WebService interface,&lt;/li>
&lt;li>Or the provider uses standard WebService to expose services, and the consumer calls using Dubbo&amp;rsquo;s WebService protocol.&lt;/li>
&lt;/ul>
&lt;h4 id="constraints">Constraints&lt;/h4>
&lt;ul>
&lt;li>Parameters and return values must implement the &lt;code>Serializable&lt;/code> interface&lt;/li>
&lt;li>Parameters should preferably use basic types and POJOs&lt;/li>
&lt;/ul>
&lt;h2 id="usage-scenarios">Usage Scenarios&lt;/h2>
&lt;p>Publishing a service (internally/externally), regardless of client type or performance, it is recommended to use webservice. If the server has determined to use webservice, the client has no choice and must use webservice.&lt;/p></description></item></channel></rss>