<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/</link><description>Recent content on Apache Dubbo</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-3202--dubbo.netlify.app/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Alibaba Upgrades Dubbo3 to Fully Replace HSF2</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/16/alibaba-upgrades-dubbo3-to-fully-replace-hsf2/</link><pubDate>Mon, 16 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/16/alibaba-upgrades-dubbo3-to-fully-replace-hsf2/</guid><description>&lt;p>Following a comprehensive cloud migration, Alibaba&amp;rsquo;s microservice technology stack fully transitioned to a cloud-native open-source middleware system represented by Dubbo3 during the 2022 Double Eleven. In terms of business, Dubbo3 achieved a significant enhancement in user experience by maintaining continuous promotion without degradation. Technically, it greatly improved R&amp;amp;D and operational efficiency while increasing key resources&amp;rsquo; utilization rate, such as address pushing, by over 40%. The integration of Dubbo3&amp;rsquo;s open-source middleware system created Alibaba&amp;rsquo;s best practices and unified standards in the cloud, contributing scalable practical experience and technological innovation to the open-source community, becoming the core source and driving force for the development of open-source microservices technology and standards.&lt;/p></description></item><item><title>0-1 - Thread Pool Resource Exhaustion</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/1/</guid><description>&lt;p>The server&amp;rsquo;s thread resources have been exhausted.&lt;br>
By default, there are 200 business threads on the Dubbo server. If the number of concurrent requests exceeds 200, new requests will be rejected, and this error will be thrown.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The consumer&amp;rsquo;s concurrent request volume is too high, causing the number of threads created on the provider side to exceed the limit.&lt;/li>
&lt;li>The provider side may have blocking threads due to business calls to external application interfaces while executing the business.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ul>
&lt;li>Enable Dubbo&amp;rsquo;s access log feature to check for a large number of RPC service calls in a short period.&lt;/li>
&lt;li>Use &lt;code>jps&lt;/code> and &lt;code>jstack&lt;/code> commands to check the status of various threads in the thread pool to see if there are blocking issues caused by business calls to external application interfaces.&lt;/li>
&lt;li>If the consumer&amp;rsquo;s concurrent request volume is too high, adjust the provider side&amp;rsquo;s &lt;code>dubbo.provider.threads&lt;/code> parameter to increase the number of Dubbo&amp;rsquo;s thread pool.&lt;/li>
&lt;li>If the QPS of the provider&amp;rsquo;s business is indeed too high and the current number of servers cannot handle it, increase the number of provider servers to share the load.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>This error code FAQ page references Kongming&amp;rsquo;s &lt;a href="https://github.com/StabilityMan/StabilityGuide/blob/master/docs/diagnosis/plugin/rpc/%E7%B3%BB%E7%BB%9F%E7%A8%B3%E5%AE%9A%E6%80%A7%E2%80%94%E2%80%94Dubbo%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95.md">“Common Dubbo Errors and Solutions”&lt;/a>.&lt;br>
The cited article is licensed under &lt;a href="http://creativecommons.org/licenses/by/4.0/">CC-BY-4.0&lt;/a>, granting rights for compilation. Special thanks to the original author.&lt;/p></description></item><item><title>1-1 - Invalid Address</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/1/</guid><description>&lt;p>This log can be ignored; the service version or group does not match. It only appears in the Zookeeper registry and this check has been removed in version 3.1.7.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The &lt;code>service.group&lt;/code> configured on the Provider side does not match the &lt;code>reference.group&lt;/code> configured on the Consumer side (i.e., the service group configuration).&lt;/li>
&lt;li>The &lt;code>service.version&lt;/code> configured on the Provider side does not match the &lt;code>reference.version&lt;/code> configured on the Consumer side (i.e., the service version configuration).&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Can be ignored; this check has been removed in version 3.1.7.&lt;/p></description></item><item><title>2-1 - Routing selection execution failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/1/</guid><description>&lt;h2 id="routing-selection-execution-failed">Routing selection execution failed&lt;/h2></description></item><item><title>3-1 - Failed to convert the address into Invoker</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/1/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The protocol configured on the client does not match the protocol configured on the server. (For example, if the protocol configured on the client is Dubbo, but the server can only provide Rest protocol services.)&lt;/li>
&lt;li>The registry center (or configuration center) is unreliable and has pushed invalid data.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the protocol configuration on both the provider and consumer sides.&lt;/li>
&lt;li>Update the version of the registry center.&lt;/li>
&lt;/ol></description></item><item><title>4-1 - Unsupported Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/1/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>This situation may occur in scenarios with a custom Protocol. Dubbo&amp;rsquo;s SPI mechanism cannot find the Protocol specified in the URL.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Ensure that the Consumer has the dependencies for the Protocol used by the server.&lt;/li>
&lt;li>Confirm that the name of the SPI configuration file for the Protocol&amp;rsquo;s dependency package is correct.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>See also&lt;br>
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/overview/">Overview of Dubbo SPI&lt;/a>&lt;br>
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/protocol/">Protocol Extension Description&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>5-1 - Configuration Center Connection Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/1/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The server where the configuration center is located is shut down or crashed.&lt;/li>
&lt;li>The IP address or port number is incorrect.&lt;/li>
&lt;li>A firewall is incorrectly blocking the port used by the configuration center.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the configuration of the configuration center&amp;rsquo;s IP address and port.&lt;/li>
&lt;li>Verify whether the server is powered on and functioning properly.&lt;/li>
&lt;li>Check if the firewall is allowing the port used by the configuration center.&lt;/li>
&lt;/ol></description></item><item><title>6-1 - Server Connection Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/1/</guid><description>&lt;p>Network communication layer, failure to connect to the service provider&amp;rsquo;s service.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The service provider&amp;rsquo;s network is unexpectedly disconnected or intercepted by firewalls and third-party tools, unable to provide external services.&lt;/p>
&lt;h3 id="troubleshooting-and-solution-steps">Troubleshooting and Solution Steps&lt;/h3>
&lt;ol>
&lt;li>If it&amp;rsquo;s a REST connection, check if the server configuration for the request is correct.&lt;/li>
&lt;li>Check if the network communication is normal; you can use some simple CMD commands for detection, such as &lt;code>ping&lt;/code>, etc.&lt;/li>
&lt;/ol></description></item><item><title>7-1 - QOS is Closed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/1/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>QOS is Closed&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Please refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/">QOS Operation Manual&lt;/a>.&lt;/p>
&lt;/blockquote></description></item><item><title>81-1 - ZK Startup Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/1/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>There is a compatibility issue between the server version of ZK and the client version, preventing connection.&lt;/li>
&lt;li>The ZK service is not started properly, or it cannot provide services externally due to firewall or other reasons.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Confirm that the client version matches the server version.&lt;/li>
&lt;li>Ensure that ZK can start normally and provide services externally.&lt;/li>
&lt;/ol>
&lt;p>You can analyze stack information using third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for the diagnosis.&lt;/p></description></item><item><title>99-0 - Internal Unknown Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/99/0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/99/0/</guid><description>&lt;p>An internal unknown error in Dubbo.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Unknown error&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Preserve the scene. Save the log files and try to record the situation at the time of the failure as much as possible. (You can analyze the stack information using some third-party tools or by using &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code>.)&lt;/li>
&lt;li>If there are logs of other error codes before this error code, check the records of that error code first.&lt;/li>
&lt;li>Check if there are any errors in the configuration files.&lt;/li>
&lt;li>If the error was introduced by modifying the code, try rolling back to the previous version.&lt;/li>
&lt;li>If none of the above steps resolved the issue, create a minimal Demo to reproduce the problem, then report the issue on the &lt;a href="https://github.com/apache/dubbo/issues">GitHub Issue Tracker&lt;/a>.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Also see
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Manual&lt;/a>&lt;/p></description></item><item><title>Access Dubbo Services via Web Browser</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/web-sdk/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/web-sdk/quick-start/</guid><description>&lt;p>Based on the Triple protocol defined by Dubbo3, you can easily write browser and gRPC compatible RPC services that run on both HTTP/1 and HTTP/2. The &lt;a href="https://github.com/apache/dubbo-js/">Dubbo TypeScript SDK&lt;/a> supports defining services using IDL or language-specific methods, and provides a lightweight API set to publish or invoke these services.&lt;/p>
&lt;p>Dubbo-js released its first alpha version supporting the Dubbo3 protocol in September, which can fundamentally change the architecture and communication patterns of microservices&amp;rsquo; front and back end, allowing you to directly access backend Dubbo RPC services from a browser page or web server.&lt;/p></description></item><item><title>Access Ingress Traffic</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/gateway/http_triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/gateway/http_triple/</guid><description>&lt;h2 id="1-preparation">1. Preparation&lt;/h2>
&lt;ul>
&lt;li>kubectl&lt;/li>
&lt;li>A k8s cluster, with kubeconfig configured&lt;/li>
&lt;/ul>
&lt;h2 id="2-calling-triple-application-via-gateway-using-http-protocol">2. Calling Triple Application via Gateway using HTTP Protocol&lt;/h2>
&lt;p>The Dubbo-go-pixiu gateway supports calling Dubbo clusters in GO/Java. In the Dubbo-go 3.0 scenario, we can request the pixiu gateway via HTTP protocol from outside the cluster, allowing protocol conversion at the gateway layer to further call Dubbo-go services inside the cluster.&lt;/p>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/golang-sdk/tasks/pixiu/http_triple/triple-pixiu.png">&lt;/p>
&lt;p>The path for users to call Dubbo-go services is http://$(app_name)/$(service_name)/$(method).&lt;/p></description></item><item><title>Address Synchronization</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/migration/dubbo-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/migration/dubbo-mesh/</guid><description>&lt;p>By following these steps, you can easily master how to develop Dubbo services that comply with the Service Mesh architecture and deploy them to Kubernetes while integrating with Istio&amp;rsquo;s traffic management system. Here you can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-mesh-k8s">complete example source code&lt;/a>.&lt;/p>
&lt;h2 id="1-overall-goal">1 Overall Goal&lt;/h2>
&lt;ul>
&lt;li>Deploy Dubbo applications to Kubernetes&lt;/li>
&lt;li>Istio automatically injects Envoy and implements traffic interception&lt;/li>
&lt;li>Implement traffic governance based on Istio rules&lt;/li>
&lt;/ul>
&lt;h2 id="2-basic-process-and-working-principle">2 Basic Process and Working Principle&lt;/h2>
&lt;p>This example demonstrates how to deploy applications developed with Dubbo under the Istio framework to achieve automatic proxying of Dubbo services by Envoy. The overall architecture of the example is shown in the figure below.&lt;/p></description></item><item><title>Advantage</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/why/advantage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/why/advantage/</guid><description/></item><item><title>Advantages and Goals of the Triple Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>The Triple protocol is an HTTP-based RPC communication protocol specification designed for Dubbo3, fully compatible with the gRPC protocol, supporting communication models like Request-Response and Streaming, and can run on both HTTP/1 and HTTP/2.&lt;/p>
&lt;p>The Dubbo framework provides various language implementations of the Triple protocol, helping you build browser- and gRPC-compatible HTTP API interfaces: you only need to define a standard Protocol Buffer format service and implement business logic. Dubbo takes care of generating language-related Server Stub, Client Stub, and seamlessly integrates the entire invocation process with routing, service discovery, and other Dubbo systems. The Triple protocol implementations in languages like Go and Java natively support HTTP/1 transport layer communication. Compared to the official gRPC implementation, Dubbo&amp;rsquo;s protocol implementation is simpler and more stable, making it easier for you to develop and manage microservice applications.&lt;/p></description></item><item><title>Affinity Router</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/affinity_router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/affinity_router/</guid><description/></item><item><title>Application Start Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/start-failed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/start-failed/</guid><description>&lt;p>During the development and production deployment stages, applications may fail to start due to various unexpected changes. For Dubbo, startup failures usually present error messages similar to the following.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>Caused by: java.lang.IllegalStateException: Dubbo Module&lt;span style="color:#719e07">[&lt;/span>1.1.1&lt;span style="color:#719e07">]&lt;/span> is stopping or stopped, can not start again
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">[&lt;/span>DUBBO&lt;span style="color:#719e07">]&lt;/span> Dubbo Application&lt;span style="color:#719e07">[&lt;/span>1.1&lt;span style="color:#719e07">](&lt;/span>first-dubbo-consumer&lt;span style="color:#719e07">)&lt;/span> start failure
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="summary">Summary&lt;/h2>
&lt;p>Correctly configure log output, go back to the first error location and handle it.&lt;/p>
&lt;h2 id="troubleshooting-methods">Troubleshooting Methods&lt;/h2>
&lt;h3 id="1-configure-log-output">1 Configure Log Output&lt;/h3>
&lt;p>Dubbo currently supports multiple log frameworks. If multiple log frameworks (such as log4j and logback) are supported in the environment, Dubbo will output log frameworks in the order of (log4j &amp;gt; slf4j &amp;gt; log4j2 &amp;gt; jcl).&lt;/p></description></item><item><title>Application-Level Service Discovery Benchmark Testing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/performance/benchmarking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/performance/benchmarking/</guid><description>&lt;h2 id="1-benchmark-conclusions">1 Benchmark Conclusions&lt;/h2>
&lt;p>Compared to version 2.x, Dubbo 3 version&lt;/p>
&lt;ul>
&lt;li>Resource utilization for service discovery has significantly improved.
&lt;ul>
&lt;li>Compared to interface-level service discovery, the resident memory on a single machine decreased by 50%, and the GC consumption during address changes decreased an order of magnitude (hundreds -&amp;gt; tens).&lt;/li>
&lt;li>Compared to application-level service discovery, the resident memory on a single machine decreased by 75%, and the number of GCs approached zero.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Here are the detailed pressure test processes and data&lt;/p></description></item><item><title>Admin Overall Architecture and Installation Steps</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/architecture/</guid><description>&lt;p>Reviewing the &lt;a href="../../../what/overview/">overall architecture of the Dubbo service governance system&lt;/a>, Admin is a core component in the service governance control plane, responsible for service governance and visualization display for microservice clusters.&lt;/p>
&lt;h2 id="admin-deployment-architecture">Admin Deployment Architecture&lt;/h2>
&lt;p>&lt;img alt="admin-core-components.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/reference/admin/admin-core-components.png">&lt;/p>
&lt;p>Overall, the Admin deployment architecture is divided into the following parts:&lt;/p>
&lt;ul>
&lt;li>The Admin main process, including service discovery metadata management, a visualization console, security authentication policy control, and other customized service governance capabilities.&lt;/li>
&lt;li>Strong dependency components, including Mysql database, registration/configuration/metadata centers (which can be Kubernetes, Nacos, Zookeeper, etc.)&lt;/li>
&lt;li>Optional dependency components, including Prometheus, Grafana, Zipkin, etc.&lt;/li>
&lt;/ul>
&lt;h2 id="install-admin">Install Admin&lt;/h2>
&lt;h3 id="dubboctl-installation">Dubboctl Installation&lt;/h3>
&lt;h4 id="download">Download&lt;/h4>
&lt;p>Currently, Dubboctl is not formally released and can be tried as follows.
Pull Dubbo Admin and compile Dubboctl&lt;/p></description></item><item><title>The Infrastructure of Front-end HTTP Traffic Access to Dubbo Back-end Microservice System</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/architecture/</guid><description>&lt;p>Regardless of the type of product you are developing (e-commerce, management systems, mobile apps, etc.), the vast majority of traffic entry points will be HTTP, as users may access the product through browsers, mobile devices, or desktop software. In this case, connecting the Dubbo microservice cluster developed by the back-end to the front-end access devices becomes a problem to solve, which is essentially the problem of conversion and connection between HTTP and RPC.&lt;/p></description></item><item><title>How to Become a Dubbo Committer</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/become-a-committer_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/become-a-committer_dev/</guid><description>&lt;p>Anyone can become a contributor to an Apache project. Being a contributor simply means you are interested in the project and contribute in some way, from asking reasonable questions (which document the project and provide feedback to the developers) to providing new features as patches.&lt;/p>
&lt;p>If you become a valuable contributor to a project, you may be invited to become a Committer. A Committer is a term used by the ASF (Apache Software Foundation) to refer to individuals who commit to a specific project. It grants you write access to the project&amp;rsquo;s repository and resources.&lt;/p></description></item><item><title>RPC Communication Protocols Supported by Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/protocol/</guid><description>&lt;p>As an RPC framework, Dubbo comes with efficient RPC communication protocols to solve encoding and communication issues between services. The currently supported protocols include:&lt;/p>
&lt;ul>
&lt;li>triple, a high-performance communication protocol based on HTTP/1 and HTTP/2, 100% compatible with gRPC, supporting Unary, Streaming, and other communication patterns; supports publishing REST-style HTTP services.&lt;/li>
&lt;li>dubbo, a high-performance private communication protocol based on TCP, with the drawback of poor universality, more suitable for use between Dubbo SDKs;&lt;/li>
&lt;li>Any protocol extension, supports any RPC protocol through extended protocol, with official ecosystem libraries providing support for JsonRPC, thrift, etc.&lt;/li>
&lt;/ul>
&lt;h2 id="protocol-overview">Protocol Overview&lt;/h2>
&lt;h3 id="which-protocol-to-use">Which protocol to use?&lt;/h3>
&lt;p>&lt;strong>How should developers determine which protocol to use?&lt;/strong> Below is a comparative analysis of several mainstream protocols from the perspectives of usage scenarios, performance, ease of programming, and multi-language interoperability:&lt;/p></description></item><item><title>Class Check Mechanism</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/class-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/class-check/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>This mechanism ensures compatibility and security between service providers and consumers.&lt;/p>
&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>To prevent potential issues due to class version mismatches, incompatible method signatures, or missing classes.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Supported Versions
Dubbo &amp;gt;= 3.1.6&lt;/p>
&lt;p>Applicable Scope
Currently, serialization checks support Hessian2, Fastjson2 serialization, and generic calls. Other serialization methods are not supported.&lt;/p>
&lt;h3 id="check-modes">Check Modes&lt;/h3>
&lt;p>The check mode has three levels: &lt;code>STRICT&lt;/code>, &lt;code>WARN&lt;/code>, &lt;code>DISABLE&lt;/code>.
&lt;code>STRICT&lt;/code>: Disallows deserialization of all classes not in the allowed serialization list (whitelist).
&lt;code>WARN&lt;/code>: Only disallows serialization of classes in the disallowed serialization list (blacklist) and logs a warning when deserializing classes not in the allowed serialization list (whitelist).
&lt;code>DISABLE&lt;/code>: No checks at all.&lt;/p></description></item><item><title>Understanding Dubbo Core Concepts and Architecture</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/overview/</guid><description>&lt;p>&lt;img alt="architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/concepts/architecture-2.png">&lt;/p>
&lt;p>The above is a diagram of Dubbo&amp;rsquo;s working principle, which is divided into two layers from an abstract architecture perspective: &lt;strong>Service Governance Abstract Control Plane&lt;/strong> and &lt;strong>Dubbo Data Plane&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Service Governance Control Plane&lt;/strong>. The service governance control plane does not specifically refer to a single component like a registry but is an abstract expression of the Dubbo governance system. The control plane includes the registry that coordinates service discovery, traffic control strategies, Dubbo Admin console, etc. If the Service Mesh architecture is adopted, it also includes service mesh control planes like Istio.&lt;/li>
&lt;li>&lt;strong>Dubbo Data Plane&lt;/strong>. The data plane represents all Dubbo processes deployed in the cluster. These processes exchange data through the RPC protocol. Dubbo defines the development and invocation specifications for microservice applications and is responsible for the encoding and decoding of data transmission.
&lt;ul>
&lt;li>Service Consumer (Dubbo Consumer), the Dubbo process that initiates business calls or RPC communication&lt;/li>
&lt;li>Service Provider (Dubbo Provider), the Dubbo process that receives business calls or RPC communication&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="dubbo-data-plane">Dubbo Data Plane&lt;/h2>
&lt;p>From the data plane perspective, Dubbo helps solve the following problems in microservice practices:&lt;/p></description></item><item><title>Condition Router</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/condition_router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/condition_router/</guid><description>&lt;h2 id="how-to-use">How to use&lt;/h2>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>Docker and Docker Compose environment to deploy Nacos registry.&lt;/li>
&lt;li>Nacos Version 2.x+&lt;/li>
&lt;li>Go 1.23+&lt;/li>
&lt;/ul>
&lt;h4 id="run-nacos">Run Nacos&lt;/h4>
&lt;p>Follow this instruction
to &lt;a href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/">install and start Nacos server&lt;/a>.&lt;/p>
&lt;h3 id="condition-router">Condition router&lt;/h3>
&lt;p>Similar to the Tag Router, the condition router offers more advanced traffic control capabilities.
It uses &lt;code>consumer =&amp;gt; provider&lt;/code> expressions to manage traffic for both providers and consumers.&lt;/p>
&lt;p>Expression example:&lt;/p>
&lt;p>&lt;code>host = 127.0.0.1 =&amp;gt; host = 127.0.0.1, 192.168.1.1&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>You can use = and != symbols for matching, and use commas for multiple choice matching.&lt;/p></description></item><item><title>Condition Routing Rules</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/condition-rule/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/condition-rule/</guid><description>&lt;p>Condition routing rules forward requests that meet specific conditions to a subset of specific address instances. The rules first match the request parameters that initiate the traffic, and requests that meet the matching conditions will be forwarded to a subset containing a specific list of instance addresses.&lt;/p>
&lt;p>Below is an example of a condition routing rule.&lt;/p>
&lt;p>Based on the following example rule, all calls to the &lt;code>getComment&lt;/code> method of the &lt;code>org.apache.dubbo.samples.CommentService&lt;/code> service will be forwarded to the subset of addresses marked with &lt;code>region=Hangzhou&lt;/code>.&lt;/p></description></item><item><title>Observability</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/console/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/console/</guid><description>&lt;p>The most direct way to manage Dubbo is through the visual interface provided by the Dubbo control plane (dubbo-control-plane). In the previous article on &lt;code>Quick Start - Deploying Dubbo Applications&lt;/code> we also used it to check the status after the service was started.&lt;/p>
&lt;p>&lt;strong>&lt;code>dubbo-control-plane&lt;/code> supports visual displays, monitoring cluster status, and real-time delivery of traffic control rules.&lt;/strong>&lt;/p>
&lt;h2 id="installing-the-console">Installing the Console&lt;/h2>
&lt;p>To experience the effects, we first need to install dubbo-control-plane. Here are the specific steps to install dubbo-control-plane in a Linux environment:&lt;/p></description></item><item><title>Deploying Istio Environment</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/istio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/istio/</guid><description>&lt;h2 id="1-preparation">1. Preparation&lt;/h2>
&lt;ul>
&lt;li>Docker, Helm, and kubectl environments are installed.&lt;/li>
&lt;li>Dubbo-go CLI tools and dependencies are installed.&lt;/li>
&lt;/ul>
&lt;h2 id="2-deploy-istio-environment">2. Deploy Istio Environment&lt;/h2>
&lt;ol>
&lt;li>Install the Istio base CRD and istiod components using Helm. You can also refer to the &lt;a href="https://istio.io/">Istio Documentation&lt;/a> for installation using istioctl.&lt;/li>
&lt;/ol>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ helm repo add istio https://istio-release.storage.googleapis.com/charts
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ kubectl create namespace istio-system
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ helm install istio-base istio/base -n istio-system
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ helm install istiod istio/istiod --namespace istio-system
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>
&lt;p>Delete the Istio horizontal pod autoscaler resources&lt;/p></description></item><item><title>Develop RPC Server &amp; RPC Client</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/quickstart/rpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/quickstart/rpc/</guid><description>&lt;p>Based on the Triple protocol defined by Dubbo, you can easily write browser and gRPC compatible RPC services that run on both HTTP/1 and HTTP/2 simultaneously. The Dubbo Go SDK supports defining services using IDL or programming language-specific methods and provides a lightweight API for publishing or invoking these services.&lt;/p>
&lt;p>This example demonstrates the RPC communication pattern based on the Triple protocol. The example uses Protocol Buffer to define the RPC service and demonstrates the processes of code generation, service publishing, and service access.&lt;/p></description></item><item><title>Ecosystem Components</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/ecology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/ecology/</guid><description>&lt;h3 id="dubbo-go">Dubbo-go&lt;/h3>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go">github.com/apache/dubbo-go&lt;/a>&lt;/p>
&lt;p>The main repository for Apache Dubbo Go language implementation&lt;/p>
&lt;h3 id="dubbo-go-samples">Dubbo-go-samples&lt;/h3>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-samples">github.com/apache/dubbo-go-samples&lt;/a>&lt;/p>
&lt;p>Usage examples of dubbo-go:&lt;/p>
&lt;ul>
&lt;li>config-api: Configuration initialization using APIs&lt;/li>
&lt;li>configcenter: Using different configuration centers, currently supporting three: zookeeper, apollo, and nacos&lt;/li>
&lt;li>context: How to use context to pass attachment&lt;/li>
&lt;li>direct: Direct connection mode&lt;/li>
&lt;li>game: Game service example&lt;/li>
&lt;li>generic: Generic invocation&lt;/li>
&lt;li>rpc: RPC invocation examples, including Triple, Dubbo, and cross-language/gRPC communication examples&lt;/li>
&lt;li>helloworld: Introduction to RPC invocation example&lt;/li>
&lt;li>logger: Logging example&lt;/li>
&lt;li>registry: Demonstrates integration with different registration centers, including zk, nacos, etcd&lt;/li>
&lt;li>metrics: Data reporting&lt;/li>
&lt;li>filter: Examples using provided filters and custom filters&lt;/li>
&lt;li>registry/servicediscovery: Application-level service discovery example&lt;/li>
&lt;li>router: Routing example&lt;/li>
&lt;li>tracing: Link tracing example&lt;/li>
&lt;/ul>
&lt;h3 id="dubbo-go-pixiu">Dubbo-go-pixiu&lt;/h3>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-pixiu">github.com/apache/dubbo-go-pixiu&lt;/a>&lt;/p></description></item><item><title>Filter Overview</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/filter/</guid><description>&lt;h1 id="filter">Filter&lt;/h1>
&lt;p>Filter provides request handle abstraction. User can combinate many filters together into filter-chain.&lt;/p>
&lt;p>When receiving request from the listener, filter will handle it one by one at its pre or post phase.&lt;/p>
&lt;p>Because pixiu want to provide network protocol transform function, so the filter contains network filter and the filter below network filter such as http filter.&lt;/p>
&lt;p>the request processing order is as follows.&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>client -&amp;gt; listner -&amp;gt; network filter such as httpconnectionmanager -&amp;gt; http filter chain
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="http-filter-list">Http Filter List&lt;/h3>
&lt;p>You can find out all filters in &lt;code>pkg/filter&lt;/code>. Just list some filters as the following.&lt;/p></description></item><item><title>Framework Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/introduction/</guid><description>&lt;h2 id="what-is-dubbo-go">What is dubbo-go&lt;/h2>
&lt;p>Dubbo-go is the Go language implementation of Apache Dubbo, fully adhering to Apache Dubbo&amp;rsquo;s design principles and goals, and serves as an excellent microservices development framework in the Go language domain. Dubbo-go offers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>API and RPC Protocols&lt;/strong>: Solves RPC communication problems between components, providing HTTP/1/2 based communication protocols and streaming communication models.&lt;/li>
&lt;li>&lt;strong>Rich Microservice Governance Capability&lt;/strong>: Addresses service discovery, traffic control, observability, full-link tracing, logging, and other overall solutions for microservices.&lt;/li>
&lt;/ul>
&lt;h2 id="concepts-and-architecture">Concepts and Architecture&lt;/h2>
&lt;p>Below is the overall architecture diagram of dubbo-go:
&lt;img alt="dubbo-go architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/golang/architecture/arc.png">&lt;/p></description></item><item><title>Configure and Manage Framework Logs</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/observability/logger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/observability/logger/</guid><description>&lt;p>This example demonstrates how to configure the dubbo-go framework log component to save the framework&amp;rsquo;s runtime logs to a specified location. You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/logger/level" target="_blank">complete example source code here&lt;/a>.&lt;/p>


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

 The configuration here only affects the log component behavior of the dubbo-go framework itself, which is the internal logging used by the framework and does not affect the use of business logging frameworks!

&lt;/div>

&lt;h2 id="1-log-configuration">1. Log Configuration&lt;/h2>
&lt;p>As shown below, you can set the dubbo framework log behavior using &lt;code>log.WithZap()&lt;/code> and &lt;code>log.WithLevel(&amp;quot;warn&amp;quot;)&lt;/code>:&lt;/p></description></item><item><title>General Release Process</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/release-guide/common/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/release-guide/common/</guid><description>&lt;h2 id="understanding-the-content-and-process-of-apache-releases">Understanding the Content and Process of Apache Releases&lt;/h2>
&lt;p>In general, Source Release is the primary focus of Apache and a necessary element of the release; Binary Release is optional, and Dubbo can choose whether to release binary packages to the Apache repository or publish to the Maven Central Repository.&lt;/p>
&lt;p>Please refer to the following links for more information about the ASF release guidelines:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.apache.org/dev/release-publishing">Apache Release Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/release.html">Apache Release Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="release-process">Release Process&lt;/h2>
&lt;h3 id="1-prepare-a-branch">1. Prepare a Branch&lt;/h3>
&lt;p>Create a new branch from the trunk as a release branch. For example, to release version &lt;code>${release_version}&lt;/code>, create a new branch &lt;code>${release_version}-release&lt;/code> from the development branch. All modifications and tagging related to &lt;code>${release_version}&lt;/code> Release Candidates will then occur in the &lt;code>${release_version}-release&lt;/code> branch, merging back to the trunk after the final release is complete.&lt;/p></description></item><item><title>Generic Implementation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/generic-impl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/generic-impl/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Please distinguish between the previous document on &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/generic/">Generic Invocation&lt;/a>, which is for consumers, and Generic Implementation, which is for providers.

&lt;/div>

&lt;p>The generic interface implementation method is mainly used in scenarios where the server side does not have API interfaces and model class metadata. All POJOs in parameters and return values are represented using Map, usually for framework integration. For example, to implement a generic remote service Mock framework, you can handle all service requests by implementing the GenericService interface.&lt;/p></description></item><item><title>Basic Steps to Customize SPI Extensions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/spi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/spi/</guid><description>&lt;p>Taking the &lt;code>RPC Protocol Plugin&lt;/code> as an example, this section demonstrates how to use the SPI plugin provided by Dubbo to provide a custom RPC protocol implementation. If you want to understand how the SPI mechanism works and the list of built-in SPI extension points in the framework, please refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/overview">Reference Manual - SPI Extension&lt;/a>.&lt;/p>
&lt;h2 id="1-provide-spi-plugin-implementation-class">1. Provide SPI Plugin Implementation Class&lt;/h2>
&lt;p>Provide a Java class that implements the &lt;code>org.apache.dubbo.rpc.Protocol&lt;/code> interface.&lt;/p></description></item><item><title>Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/what/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/what/overview/</guid><description/></item><item><title>Introduction to Dubbo Routing (router) Mechanism and How It Implements Traffic Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/introduction/</guid><description>&lt;p>Dubbo provides a rich set of traffic control strategies:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Address discovery and load balancing&lt;/strong>: Address discovery supports dynamic service instance registration and deregistration, and load balancing ensures that traffic is evenly distributed across each instance.&lt;/li>
&lt;li>&lt;strong>Traffic control based on routing rules&lt;/strong>: Routing rules match each request based on conditions and route matching requests to a specific subset of addresses.&lt;/li>
&lt;/ul>
&lt;p>Service discovery ensures that the caller sees the latest provider instance addresses. The service discovery mechanism relies on the registry (Zookeeper, Nacos, Istio, etc.). On the consumer side, Dubbo provides various load balancing strategies, such as random load balancing, consistent hash load balancing, weight-based round-robin, least active priority, P2C, etc.&lt;/p></description></item><item><title>Introduction to the Pixiu Filter System</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/filter-extension/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/filter-extension/</guid><description>&lt;h2 id="how-to-write-a-filter">&lt;strong>How to Write a Filter&lt;/strong>&lt;/h2>
&lt;p>&lt;code>For more detailed information, please refer to the Blog &amp;quot;Talking About Pixiu's Filter&amp;quot;&lt;/code>&lt;/p>
&lt;p>Let&amp;rsquo;s try writing a simple Filter that will have a basic configuration, log the request Body during the Decode phase, and return the reversed string as a Mock response. Finally, in the Encode phase, it will log the return value based on the configuration.&lt;/p>
&lt;ol>
&lt;li>First, create a Filter&lt;/li>
&lt;/ol>
&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> DemoFilter &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> logPrefix &lt;span style="color:#dc322f">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// Decode phase, occurs before calling Upstream
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">func&lt;/span> (f &lt;span style="color:#719e07">*&lt;/span>DemoFilter) &lt;span style="color:#268bd2">Decode&lt;/span>(ctx &lt;span style="color:#719e07">*&lt;/span>contexthttp.HttpContext) filter.FilterStatus {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> body, _ &lt;span style="color:#719e07">:=&lt;/span> ioutil.&lt;span style="color:#268bd2">ReadAll&lt;/span>(ctx.Request.Body)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> logger.&lt;span style="color:#268bd2">Infof&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;request body: %s&amp;#34;&lt;/span>, body)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">//reverse res str
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> runes &lt;span style="color:#719e07">:=&lt;/span> []&lt;span style="color:#b58900">rune&lt;/span>(&lt;span style="color:#b58900">string&lt;/span>(body))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">for&lt;/span> i &lt;span style="color:#719e07">:=&lt;/span> &lt;span style="color:#2aa198">0&lt;/span>; i &amp;lt; &lt;span style="color:#b58900">len&lt;/span>(runes)&lt;span style="color:#719e07">/&lt;/span>&lt;span style="color:#2aa198">2&lt;/span>; i &lt;span style="color:#719e07">+=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> runes[i], runes[&lt;span style="color:#b58900">len&lt;/span>(runes)&lt;span style="color:#719e07">-&lt;/span>&lt;span style="color:#2aa198">1&lt;/span>&lt;span style="color:#719e07">-&lt;/span>i] = runes[&lt;span style="color:#b58900">len&lt;/span>(runes)&lt;span style="color:#719e07">-&lt;/span>&lt;span style="color:#2aa198">1&lt;/span>&lt;span style="color:#719e07">-&lt;/span>i], runes[i]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> reverse &lt;span style="color:#719e07">:=&lt;/span> &lt;span style="color:#b58900">string&lt;/span>(runes)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">//mock response
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> ctx.&lt;span style="color:#268bd2">SendLocalReply&lt;/span>(&lt;span style="color:#2aa198">200&lt;/span>, []&lt;span style="color:#b58900">byte&lt;/span>(reverse))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> filter.Stop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// Encode phase, at this point the Upstream Response can be accessed
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">func&lt;/span> (f &lt;span style="color:#719e07">*&lt;/span>DemoFilter) &lt;span style="color:#268bd2">Encode&lt;/span>(ctx &lt;span style="color:#719e07">*&lt;/span>contexthttp.HttpContext) filter.FilterStatus {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> res &lt;span style="color:#719e07">:=&lt;/span> ctx.SourceResp.(&lt;span style="color:#dc322f">string&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> logger.&lt;span style="color:#268bd2">Infof&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;%s: %s&amp;#34;&lt;/span>, f.logPrefix, res)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> filter.Continue
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Create a Filter Factory&lt;/li>
&lt;/ol>
&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> (
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	DemoFilterFactory &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		conf &lt;span style="color:#719e07">*&lt;/span>Config
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// Config describe the config of Filter
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	Config &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		LogPrefix &lt;span style="color:#dc322f">string&lt;/span> &lt;span style="color:#2aa198">`yaml:&amp;#34;logPrefix,omitempty&amp;#34;`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (f &lt;span style="color:#719e07">*&lt;/span>DemoFilterFactory) &lt;span style="color:#268bd2">PrepareFilterChain&lt;/span>(ctx &lt;span style="color:#719e07">*&lt;/span>contexthttp.HttpContext, chain filter.FilterChain) &lt;span style="color:#dc322f">error&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> demo &lt;span style="color:#719e07">:=&lt;/span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>DemoFilter{logPrefix: f.conf.LogPrefix}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> chain.&lt;span style="color:#268bd2">AppendDecodeFilters&lt;/span>(demo)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> chain.&lt;span style="color:#268bd2">AppendEncodeFilters&lt;/span>(demo)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#cb4b16">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (f &lt;span style="color:#719e07">*&lt;/span>DemoFilterFactory) &lt;span style="color:#268bd2">Config&lt;/span>() &lt;span style="color:#268bd2">interface&lt;/span>{} {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> f.conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (f &lt;span style="color:#719e07">*&lt;/span>DemoFilterFactory) &lt;span style="color:#268bd2">Apply&lt;/span>() &lt;span style="color:#dc322f">error&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#cb4b16">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>Create a Filter Plugin and register it&lt;/li>
&lt;/ol>
&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//important
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">func&lt;/span> &lt;span style="color:#268bd2">init&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> filter.&lt;span style="color:#268bd2">RegisterHttpFilter&lt;/span>(&lt;span style="color:#719e07">&amp;amp;&lt;/span>Plugin{})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> Plugin &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (p &lt;span style="color:#719e07">*&lt;/span>Plugin) &lt;span style="color:#268bd2">Kind&lt;/span>() &lt;span style="color:#dc322f">string&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#2aa198">&amp;#34;dgp.filters.demo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (p &lt;span style="color:#719e07">*&lt;/span>Plugin) &lt;span style="color:#268bd2">CreateFilterFactory&lt;/span>() (filter.HttpFilterFactory, &lt;span style="color:#dc322f">error&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>DemoFilterFactory{conf: &lt;span style="color:#719e07">&amp;amp;&lt;/span>Config{}}, &lt;span style="color:#cb4b16">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="4">
&lt;li>Configure this Filter in the configuration file and start Pixiu&lt;/li>
&lt;/ol>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;net/http&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8888&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filters.demo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="5">
&lt;li>Access and check the logs and results&lt;/li>
&lt;/ol>
&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 localhost:8888/demo -d &lt;span style="color:#2aa198">&amp;#34;eiv al tse’c&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>c’est la vie% 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Logs&lt;/p></description></item><item><title>Developing triple communication services using Java interfaces</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/interface/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/interface/</guid><description>&lt;p>&lt;strong>Unlike the official Google gRPC implementation, the Dubbo implementation of the triple protocol offers better usability (not bound to Protobuf), allowing you to define services directly using &lt;code>Java interfaces&lt;/code>. For users looking for smooth upgrades, having no multi-language business, or unfamiliar with Protobuf, the &lt;code>Java interface&lt;/code> method is the simplest way to use triple.&lt;/strong>&lt;/p>
&lt;p>Below is a basic example of developing a Dubbo service using the &lt;code>Java interface&lt;/code>, which uses triple protocol communication. You can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api">full code for this example&lt;/a>.&lt;/p></description></item><item><title>End-to-End Tracing Usage and Implementation Instructions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/tracing/</guid><description>&lt;p>Dubbo has built-in end-to-end tracing capabilities. You can enable link tracing by introducing spring-boot-starter or related dependencies. By exporting trace data to mainstream implementations such as Zipkin, Skywalking, Jaeger, etc., you can achieve analysis and visualization of end-to-end tracing data.&lt;/p>
&lt;p>Currently, Dubbo completes all tracing embedding through Micrometer Observation, relying on various Bridge adaptations provided by Micrometer, allowing us to import tracing into various back-end systems. The specific working principle is as follows.&lt;/p></description></item><item><title>Load Balancing Strategies and Configuration Details</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/load-balance/loadbalance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/load-balance/loadbalance/</guid><description>&lt;p>Dubbo-go has a built-in client-based load balancing mechanism. Below are the currently supported load balancing algorithms. Combined with the automatic service discovery mechanism mentioned above, the consumer side will automatically use the &lt;code>Weighted Random LoadBalance&lt;/code> strategy for invocation.&lt;/p>
&lt;p>If you want to adjust the load balancing algorithm, here are the built-in load balancing strategies in the Dubbo framework:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Algorithm&lt;/th>
 &lt;th style="text-align: left">Features&lt;/th>
 &lt;th style="text-align: left">Remarks&lt;/th>
 &lt;th style="text-align: left">Configuration Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Weighted Random LoadBalance&lt;/td>
 &lt;td style="text-align: left">Weighted Random&lt;/td>
 &lt;td style="text-align: left">Default algorithm, same default weight&lt;/td>
 &lt;td style="text-align: left">random (default)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">RoundRobin LoadBalance&lt;/td>
 &lt;td style="text-align: left">Weighted Round Robin&lt;/td>
 &lt;td style="text-align: left">Inspired by Nginx&amp;rsquo;s smooth weighted round robin algorithm, same default weight&lt;/td>
 &lt;td style="text-align: left">roundrobin&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">LeastActive LoadBalance&lt;/td>
 &lt;td style="text-align: left">Least Active First + Weighted Random&lt;/td>
 &lt;td style="text-align: left">Based on the idea that those who can do more should work more&lt;/td>
 &lt;td style="text-align: left">leastactive&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Consistent Hash LoadBalance&lt;/td>
 &lt;td style="text-align: left">Consistent Hash&lt;/td>
 &lt;td style="text-align: left">Deterministic input, deterministic providers, suitable for stateful requests&lt;/td>
 &lt;td style="text-align: left">consistenthashing&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">P2C LoadBalance&lt;/td>
 &lt;td style="text-align: left">Power of Two Choices&lt;/td>
 &lt;td style="text-align: left">Randomly selects two nodes and continues to select the one with fewer &amp;ldquo;connections.&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">p2c&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Interleaved Weighted Round Robin&lt;/td>
 &lt;td style="text-align: left">A weighted round robin algorithm&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://en.wikipedia.org/wiki/Weighted_round_robin#Interleaved_WRR">https://en.wikipedia.org/wiki/Weighted_round_robin#Interleaved_WRR&lt;/a>&lt;/td>
 &lt;td style="text-align: left">interleavedweightedroundrobin&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Alias Method Round Robin&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://en.wikipedia.org/wiki/Alias_method">https://en.wikipedia.org/wiki/Alias_method&lt;/a>&lt;/td>
 &lt;td style="text-align: left">aliasmethod&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="global-configuration">Global Configuration&lt;/h2>
&lt;p>The default strategy of the Dubbo framework is &lt;code>random&lt;/code> weighted random load balancing. To adjust the strategy, simply set the corresponding value for &lt;code>loadbalance&lt;/code>. Refer to the table at the top of the document for different load balancing strategy values.&lt;/p></description></item><item><title>Load Balancing Strategies and Configuration Details</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/loadbalance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/loadbalance/</guid><description>&lt;p>Dubbo has a built-in client-based load balancing mechanism. Below are the currently supported load balancing algorithms. With the automatic service discovery mechanism mentioned earlier, the consumer will automatically use the &lt;code>Weighted Random LoadBalance&lt;/code> strategy for service calls.&lt;/p>
&lt;p>If you want to adjust the load balancing algorithm, the following are built-in load balancing strategies in the Dubbo framework:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Algorithm&lt;/th>
 &lt;th style="text-align: left">Features&lt;/th>
 &lt;th style="text-align: left">Remarks&lt;/th>
 &lt;th style="text-align: left">Configuration Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Weighted Random LoadBalance&lt;/td>
 &lt;td style="text-align: left">Weighted Random&lt;/td>
 &lt;td style="text-align: left">Default algorithm, same default weight&lt;/td>
 &lt;td style="text-align: left">random (default)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">RoundRobin LoadBalance&lt;/td>
 &lt;td style="text-align: left">Weighted Round Robin&lt;/td>
 &lt;td style="text-align: left">Based on Nginx&amp;rsquo;s smooth weighted round-robin algorithm, same default weight&lt;/td>
 &lt;td style="text-align: left">roundrobin&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">LeastActive LoadBalance&lt;/td>
 &lt;td style="text-align: left">Least Active + Weighted Random&lt;/td>
 &lt;td style="text-align: left">Based on the &amp;ldquo;to each according to their ability&amp;rdquo; concept&lt;/td>
 &lt;td style="text-align: left">leastactive&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Shortest-Response LoadBalance&lt;/td>
 &lt;td style="text-align: left">Shortest Response + Weighted Random&lt;/td>
 &lt;td style="text-align: left">More focused on response speed&lt;/td>
 &lt;td style="text-align: left">shortestresponse&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ConsistentHash LoadBalance&lt;/td>
 &lt;td style="text-align: left">Consistent Hash&lt;/td>
 &lt;td style="text-align: left">Deterministic input, deterministic provider, suitable for stateful requests&lt;/td>
 &lt;td style="text-align: left">consistenthash&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">P2C LoadBalance&lt;/td>
 &lt;td style="text-align: left">Power of Two Choice&lt;/td>
 &lt;td style="text-align: left">Randomly selects two nodes and then chooses the one with fewer connections.&lt;/td>
 &lt;td style="text-align: left">p2c&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Adaptive LoadBalance&lt;/td>
 &lt;td style="text-align: left">Adaptive Load Balancing&lt;/td>
 &lt;td style="text-align: left">Based on P2C algorithm, chooses the node with the least load among the two&lt;/td>
 &lt;td style="text-align: left">adaptive&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="global-configuration">Global Configuration&lt;/h2>
&lt;p>The default strategy of the Dubbo framework is &lt;code>random&lt;/code> weighted random load balancing. To adjust the strategy, simply set the corresponding &lt;code>loadbalance&lt;/code> value. For each load balancing strategy value, refer to the table at the top of this document.&lt;/p></description></item><item><title>Use the dubbogo.yml Configuration File to Develop Applications</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/configuration/file/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/configuration/file/</guid><description>&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;p>This document demonstrates how to use a &lt;code>yaml&lt;/code> configuration file in the framework for microservice development, which is an alternative development model compared to &lt;code>API&lt;/code>. You can fully develop using a &lt;code>yml&lt;/code> configuration file or put some global configurations in the configuration file, while defining services only in the API.&lt;/p>
&lt;p>In this mode, you must specify the configuration file path through &lt;code>DUBBO_GO_CONFIG_PATH&lt;/code>:&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>&lt;span style="color:#b58900">export&lt;/span> &lt;span style="color:#268bd2">DUBBO_GO_CONFIG_PATH&lt;/span>&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;../conf/dubbogo.yml&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="2-usage-instructions">2. Usage Instructions&lt;/h2>
&lt;p>You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/config_yaml" target="_blank">complete example source code&lt;/a> here.&lt;/p></description></item><item><title>Metrics</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/merics/meter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/merics/meter/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>For the overall design of Dubbo Metrics, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/metrics/">Observability Metrics Proposal&lt;/a> .&lt;/p>
&lt;p>The following explains the specific implementation and usage related to Dubbo Java.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>To enable metric collection for the Dubbo process, you need to introduce relevant dependencies and add configurations in your project. For example, in a Spring Boot project, add the following spring-boot-starter dependency to automatically enable metric collection.&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:#586e75">&amp;lt;!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-metrics-prometheus --&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>org.apache.dubbo&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>dubbo-spring-boot-observability-starter&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.2.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;ul>
&lt;li>For a complete example, please refer to &lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-metrics-spring-boot" target="_blank">dubbo-samples-metrics-spring-boot&lt;/a>&lt;/li>
&lt;li>For complete configuration parameters, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties//">Metrics Configuration Manual&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="implementation-principle-analysis">Implementation Principle Analysis&lt;/h2>
&lt;h3 id="code-structure-and-workflow">Code Structure and Workflow&lt;/h3>
&lt;ul>
&lt;li>Remove the original classes related to Metrics.&lt;/li>
&lt;li>Create new modules dubbo-metrics/dubbo-metrics-api, dubbo-metrics/dubbo-metrics-prometheus, with MetricsConfig as the configuration class for these modules.&lt;/li>
&lt;li>Use Micrometer, representing metrics with primitive types like Long, Double, etc., and introduce Micrometer in dubbo-metrics-api, letting Micrometer convert internal metrics.&lt;/li>
&lt;/ul>
&lt;p>The following are the key components and data flow in the Dubbo implementation:&lt;/p></description></item><item><title>Microservices Development</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/service-definition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/service-definition/</guid><description>&lt;p>Dubbo addresses a series of challenges from development, deployment to governance and operation of enterprise microservices. Dubbo provides developers with a full set of services from project creation, development testing, to deployment, visual monitoring, traffic governance, and ecosystem integration.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Development&lt;/strong>: Dubbo offers implementations in Java, Go, Rust, Node.js, and defines a microservices development paradigm. The accompanying scaffolding can be used to quickly create microservice project skeletons.&lt;/li>
&lt;li>&lt;strong>Deployment&lt;/strong>: Dubbo applications support deployment on virtual machines, Docker containers, Kubernetes, and service mesh architectures.&lt;/li>
&lt;li>&lt;strong>Service Governance&lt;/strong>: Dubbo provides governance capabilities such as address discovery, load balancing, and traffic control. The official Admin visual console and rich microservice ecosystem integration are also provided.&lt;/li>
&lt;/ul>
&lt;h2 id="development">Development&lt;/h2>
&lt;p>Next, we will explain the basic steps of Dubbo application development using a Java-based Spring Boot project as an example. The entire process is very intuitive and simple, and the development process for other languages is similar.&lt;/p></description></item><item><title>Design Concept for Multi-instance Deployment</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/multi-instance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/multi-instance/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Java&amp;rsquo;s static variable capability allows binding behaviors holding object references to classes, providing significant convenience to developers. Implementation solutions for design patterns like Singleton and Factory rely on static variables. By using static variables, developers can easily access needed object information anytime, anywhere.&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">Test&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">static&lt;/span> Object obj;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Test.obj &lt;span style="color:#719e07">=&lt;/span> xxx;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In the long-standing development of the Dubbo framework, static variables have been widely used, such as using a globally shared ConfigManager to store global configuration information, and ServiceRepository to store service information. This design is optimal from the perspective of centralized management of configuration or parameter acquisition. In all versions before Dubbo 2.7, runtime configuration information needed by Dubbo was accessed through global static variables, uniquely identified via the RPC service triplet (interface + version + group).&lt;/p></description></item><item><title>Network Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/protocol/</guid><description>&lt;p>For the Dubbogo microservice framework, the network protocol is the module responsible for network communication in remote procedure calls, handling functions such as data serialization, packaging, request initiation, and network port listening from the application layer to the network layer. Dubbogo abstracts a set of interfaces for protocols as follows:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> Protocol &lt;span style="color:#268bd2">interface&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// Export service for remote invocation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">Export&lt;/span>(invoker Invoker) Exporter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// Refer a remote service
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">Refer&lt;/span>(url &lt;span style="color:#719e07">*&lt;/span>common.URL) Invoker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// Destroy will destroy all invoker and exporter, so it only is called once.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">Destroy&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This interface includes three methods. The Export method is responsible for the service exposure process. The input parameter invoker is a concept of dubbo, encapsulating a callable instance. In the specific Export method implementation for a protocol (e.g., Triple), the callable instance Invoker with certain logic is exposed to external services in the form of network port listening. Requests targeting that network port will be captured by the listening coroutine initiated by the Export method, which will then deconstruct and deserialize the data according to the network protocol to retrieve the parsed request data.&lt;/p></description></item><item><title>Config Center</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/introduction/</guid><description>&lt;p>The Config Center in Dubbo has two main responsibilities:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/principle#33-external-configuration">Externalized Configuration&lt;/a>: Centralized storage for startup configurations (simplified as external storage of dubbo.properties).&lt;/li>
&lt;li>Storage of traffic governance rules.&lt;/li>
&lt;/ol>
&lt;p>Please refer to specific extension implementations to learn how to enable the Config Center.&lt;/p>
&lt;p>It is worth noting that the Dubbo dynamic configuration center defines two different levels of isolation options, namely namespace and group.&lt;/p>
&lt;ul>
&lt;li>namespace - Configuration namespace, default value &lt;code>dubbo&lt;/code>. The namespace is usually used for multi-tenant isolation, logically isolating different users, different environments, or completely unrelated sets of configurations, as opposed to physical isolation, where different namespaces still use the same physical cluster.&lt;/li>
&lt;li>group - Configuration group, default value &lt;code>dubbo&lt;/code>. The &lt;code>group&lt;/code> is typically used to classify a set of configuration items of the same type/purpose, providing further isolation of configuration items under the &lt;code>namespace&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties#config-center">Configuration Instructions - Configuration Item Manual&lt;/a> for more configuration items available in the config-center beyond namespace and group.&lt;/p></description></item><item><title>Overview of the Metadata Center</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/overview/</guid><description>&lt;p>The Metadata Center provides access to two types of metadata in Dubbo:&lt;/p>
&lt;ul>
&lt;li>
&lt;ol>
&lt;li>Address discovery metadata, used for application-level service discovery.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;ol start="2">
&lt;li>Service operation and maintenance metadata, used for peripheral operation and maintenance systems such as visualization consoles for service queries, testing, etc.&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;h2 id="1-address-discovery-metadata">1 Address Discovery Metadata&lt;/h2>
&lt;p>Dubbo3 introduces the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/core-features/service-discovery/">application-level service discovery mechanism&lt;/a> to address performance issues in heterogeneous microservice systems and large-scale cluster practices. Application-level service discovery will fully replace the interface-level service discovery of version 2.x. To maintain Dubbo&amp;rsquo;s usability oriented towards services/interfaces and flexibility in service governance, Dubbo has built a metadata mechanism around application-level service discovery, specifically &lt;code>interface-application mapping relations&lt;/code> and &lt;code>interface configuration metadata&lt;/code>.&lt;/p></description></item><item><title>Overview of the Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/overview/</guid><description>&lt;p>The registry is the core component of Dubbo service governance. Dubbo relies on the registry for coordinating service (address) discovery, where automated service discovery is foundational for dynamic scaling, load balancing, and traffic management in microservices. Dubbo&amp;rsquo;s service discovery mechanism has evolved from interface-level service discovery in Dubbo 2 to application-level service discovery in Dubbo 3. For specific evolution details, refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/concepts-and-architecture/service-discovery/">Service Discovery Mechanism&lt;/a>.&lt;/p>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/feature/service-discovery/arc.png">&lt;/p>
&lt;h2 id="basic-usage">Basic Usage&lt;/h2>
&lt;p>When developing applications, you can specify the Dubbo registry component. Configuration is straightforward; you only need to specify the cluster address of the registry:&lt;/p></description></item><item><title>Prometheus</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/prometheus/</guid><description>&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>You can quickly install Prometheus using the example configuration provided by the Dubbo community.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-kubernetes/master/deploy/kubernetes/prometheus.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>This installation is only suitable for testing or experience purposes. For production-grade installation, please refer to the official Prometheus installation documentation.&lt;/p>
&lt;/blockquote>
&lt;p>Execute the port mapping &lt;code>kubectl -n dubbo-system port-forward svc/prometheus-server 9090:9090&lt;/code>, and access the page at &lt;code>http://localhost:9090&lt;/code>, then switch to the graph view.&lt;/p>
&lt;p>&lt;img alt="Prometheus" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/reference/integrations/prometheus.jpg">&lt;/p>
&lt;h2 id="scrape-configuration">Scrape Configuration&lt;/h2>
&lt;p>Each instance of Dubbo exposes an HTTP port for Metrics collection, and Prometheus collects statistics by scraping the HTTP interface of each instance. The specific scraping path can be adjusted via the Prometheus configuration file, which controls the port, path, TLS settings, etc., for scraping instances.&lt;/p></description></item><item><title>How to Use Protobuf and JSON Serialization in the Context of the Triple Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/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/en/overview/mannual/java-sdk/reference-manual/serialization/triple/protobuf/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>&lt;a href="https://developers.google.com/protocol-buffers">Protobuf (Protocol Buffers)&lt;/a> is a lightweight and efficient data interchange format developed by Google, used for the serialization, deserialization, and transmission of structured data. Compared to text formats like XML and JSON, Protobuf has smaller data sizes, faster parsing speeds, and better scalability.&lt;/p>
&lt;h2 id="2-usage">2 Usage&lt;/h2>
&lt;p>&lt;strong>When using &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Protobuf (IDL) to develop triple communication services&lt;/a>, the Dubbo server will automatically enable support for protobuf and protobuf-json serialization modes.&lt;/strong>&lt;/p>
&lt;h3 id="21-add-dependencies">2.1 Add Dependencies&lt;/h3>
&lt;p>To use the triple + protobuf mode, the following dependencies must be added:&lt;/p></description></item><item><title>Protocol Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/protocol/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>RPC protocol extension, encapsulating remote call details.&lt;/p>
&lt;p>Contract:&lt;/p>
&lt;ul>
&lt;li>When the user calls the &lt;code>invoke()&lt;/code> method of the &lt;code>Invoker&lt;/code> object returned by &lt;code>refer()&lt;/code>, the protocol should execute the &lt;code>invoke()&lt;/code> method of the &lt;code>Invoker&lt;/code> object passed in by remote &lt;code>export()&lt;/code> with the same URL.&lt;/li>
&lt;li>The &lt;code>Invoker&lt;/code> returned by &lt;code>refer()&lt;/code> is implemented by the protocol, which usually sends a remote request within this &lt;code>Invoker&lt;/code>. The &lt;code>Invoker&lt;/code> passed in by &lt;code>export()&lt;/code> is implemented and provided by the framework, which the protocol does not need to be concerned about.&lt;/li>
&lt;/ul>


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

 &lt;ul>
&lt;li>The protocol does not concern itself with the transparent proxying of business interfaces; it is &lt;code>Invoker&lt;/code> centric, with the outer layer converting &lt;code>Invoker&lt;/code> to the business interface.&lt;/li>
&lt;li>The protocol does not necessarily have to be TCP network communication, such as through shared files, IPC inter-process communication, etc.&lt;/li>
&lt;/ul>


&lt;/div>

&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.Protocol&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.Exporter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.Invoker&lt;/code>&lt;/li>
&lt;/ul>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">Protocol&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * Expose remote service:&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 1. The protocol, upon receiving requests, should record the request source address information: RpcContext.getContext().setRemoteAddress();&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 2. export() must be idempotent, meaning exposing the same URL&amp;#39;s Invoker twice is the same as exposing it once.&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 3. The Invoker passed to export() is provided by the framework, and the protocol does not need to be concerned.&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @param &amp;lt;T&amp;gt; Service type
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @param invoker Service execution body
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @return exporter Reference to exposed service for cancellation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @throws RpcException Thrown when an error occurs in exposing the service, such as port occupied.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> Exporter&lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> &lt;span style="color:#268bd2">export&lt;/span>(Invoker&lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> invoker) &lt;span style="color:#268bd2">throws&lt;/span> RpcException;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * Reference a remote service:&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 1. When the user calls invoke() on the Invoker object returned by refer(), the protocol should execute the invoke() method of the Invoker object passed in by remote export() with the same URL.&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 2. The Invoker returned by refer() is implemented by the protocol, typically sending the remote request within this Invoker.&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 3. When check=false is set in the URL, connection failures should not throw exceptions but should automatically recover internally.&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @param &amp;lt;T&amp;gt; Service type
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @param type Service type
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @param url Remote service&amp;#39;s URL
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @return invoker Local proxy of the service
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * @throws RpcException Thrown when connection to the service provider fails.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> Invoker&lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> &lt;span style="color:#268bd2">refer&lt;/span>(Class&lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> type, URL url) &lt;span style="color:#268bd2">throws&lt;/span> RpcException;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Declare protocol, if no id is configured, name will be used as id --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;xxx1&amp;#34;&lt;/span> name=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Reference protocol, if no protocol attribute is configured, it will automatically scan protocol configuration in ApplicationContext --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:service&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;xxx1&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value for referenced protocol, used when &amp;lt;dubbo:service&amp;gt; does not configure protocol attribute --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;xxx1&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.protocol.rmi.RmiProtocol&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.protocol.http.HttpProtocol&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.protocol.http.hessian.HessianProtocol&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.support.MockProtocol&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&lt;/p></description></item><item><title>Protocol Overview</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/overview/</guid><description>&lt;p>As an RPC framework, Dubbo has an efficient built-in RPC communication protocol that helps solve coding and communication issues between services. The currently supported protocols include:&lt;/p>
&lt;ul>
&lt;li>triple, a high-performance communication protocol based on HTTP/1 and HTTP/2, 100% compatible with gRPC, supporting Unary, Streaming, and other communication modes; allows publishing REST-style HTTP services.&lt;/li>
&lt;li>dubbo, a high-performance private communication protocol based on TCP, with the drawback of lower general applicability, more suitable for use between Dubbo SDKs;&lt;/li>
&lt;li>Any protocol extension, by extending protocol, any RPC protocol can be supported, with official ecosystem libraries providing support for JsonRPC, thrift, etc.&lt;/li>
&lt;/ul>
&lt;h2 id="protocol-selection">Protocol Selection&lt;/h2>
&lt;p>&lt;strong>How should developers decide which protocol to use?&lt;/strong> The following is our comparative analysis of multiple mainstream protocols from aspects like use cases, performance, ease of programming, and multilingual interoperability:&lt;/p></description></item><item><title>QOS Overview</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/overview/</guid><description>&lt;h2 id="how-to-use">How to Use&lt;/h2>
&lt;p>QoS provides some startup parameters for configuration, mainly including:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Parameter&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;th style="text-align: left">Default Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">qos-enable&lt;/td>
 &lt;td style="text-align: left">Whether to enable QoS&lt;/td>
 &lt;td style="text-align: left">true&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">qos-port&lt;/td>
 &lt;td style="text-align: left">The port that QoS binds to&lt;/td>
 &lt;td style="text-align: left">22222&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">qos-accept-foreign-ip&lt;/td>
 &lt;td style="text-align: left">Whether to allow remote access&lt;/td>
 &lt;td style="text-align: left">false&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">qos-accept-foreign-ip-whitelist&lt;/td>
 &lt;td style="text-align: left">Supported remote host IP addresses (segments)&lt;/td>
 &lt;td style="text-align: left">(none)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">qos-anonymous-access-permission-level&lt;/td>
 &lt;td style="text-align: left">Supported permission level for anonymous access&lt;/td>
 &lt;td style="text-align: left">PUBLIC(1)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>Note: Starting from 2.6.4/2.7.0, the default configuration of qos-accept-foreign-ip is changed to false. If qos-accept-foreign-ip is set to true, it may pose security risks; please evaluate carefully before enabling.&lt;/p></description></item><item><title>Quick and Easy to Use</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/usability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/usability/</guid><description>&lt;p>Whether you are planning to adopt a microservices architecture to develop a new business system or preparing to migrate an existing business from a monolithic architecture to a microservices architecture, the Dubbo framework can help you. Dubbo makes microservices development very easy, allowing you to choose multiple programming languages, use any communication protocol, and it also provides a series of development and testing tools for microservices scenarios to help improve development efficiency.&lt;/p></description></item><item><title>Quick Start</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/quick-start/</guid><description>&lt;p>It is recommended to first define the interface jar using Java, and use the &lt;a href="https://github.com/apache/dubbo-erlang/tree/master/tools/erlanalysis">erlanalysis&lt;/a> tool to parse Java interfaces into Erlang lib.&lt;/p>
&lt;h2 id="import-dependency-libraries">Import Dependency Libraries&lt;/h2>
&lt;h3 id="using-the-rebar-build-tool">Using the Rebar Build Tool.&lt;/h3>
&lt;p>Add dubblerl to your project&amp;rsquo;s &lt;code>rebar.config&lt;/code>&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-erlang" data-lang="erlang">&lt;span style="display:flex;">&lt;span>{deps, [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {dubboerl, {git, &lt;span style="color:#2aa198">&amp;#34;https://github.com/apache/dubbo-erlang.git&amp;#34;&lt;/span>, {branch, &lt;span style="color:#2aa198">&amp;#34;master&amp;#34;&lt;/span>}}}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]}.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="using-the-erlangmk-build-tool">Using the &lt;code>erlang.mk&lt;/code> Build Tool&lt;/h3>
&lt;p>&lt;code>To be added&lt;/code>&lt;/p>
&lt;h2 id="import-interface-libraries">Import Interface Libraries&lt;/h2>
&lt;p>Suppose the interface lib you exported is called &lt;code>dubbo_service&lt;/code>.&lt;/p>
&lt;ul>
&lt;li>If you didn&amp;rsquo;t upload your lib to your git repository, it is recommended that you copy the &lt;code>dubbo_service&lt;/code> lib
into the project&amp;rsquo;s &lt;code>apps&lt;/code> directory.&lt;/li>
&lt;li>If it is uploaded to your git repository, you can import it like this:&lt;/li>
&lt;/ul>
&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-erlang" data-lang="erlang">&lt;span style="display:flex;">&lt;span>{deps, [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {dubboerl, {git, &lt;span style="color:#2aa198">&amp;#34;https://github.com/apache/dubbo-erlang.git&amp;#34;&lt;/span>, {branch, &lt;span style="color:#2aa198">&amp;#34;master&amp;#34;&lt;/span>}}},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {dubbo_service,{git,&lt;span style="color:#2aa198">&amp;#34;${INTERFACE_LIB_URL}&amp;#34;&lt;/span>,{branch,&lt;span style="color:#2aa198">&amp;#34;master&amp;#34;&lt;/span>}}} &lt;span style="color:#586e75">%% replace ${INTERFACE_LIB_URL} with your lib git repo URL
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>]}.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="consumer-configuration">Consumer Configuration&lt;/h2>
&lt;p>Please reference &lt;a href="../reference/">Reference Config&lt;/a>&lt;/p></description></item><item><title>Quick Start</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/nodejs-sdk/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/nodejs-sdk/quick-start/</guid><description>&lt;p>Based on the Triple protocol defined by Dubbo, you can easily write browser and gRPC compatible RPC services that run simultaneously on HTTP/1 and HTTP/2. The Dubbo Node.js SDK supports defining services using IDL or language-specific methods and provides a lightweight API for publishing or invoking these services.&lt;/p>
&lt;p>This example demonstrates the RPC communication model based on the Triple protocol, using Protocol Buffers to define RPC services, and illustrating processes such as code generation, service publishing, and service access.&lt;/p></description></item><item><title>Quick Start</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/quick-start/</guid><description>&lt;p>This guide will help you get started with Dubbo in Python with a simple working example. See the full &lt;a href="https://github.com/apache/dubbo-python/tree/main/samples/helloworld">example here&lt;/a>.&lt;/p>
&lt;h2 id="1-prerequisites">1. Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Python 3.11 or higher&lt;/li>
&lt;li>Compatible &lt;code>pip&lt;/code> version&lt;/li>
&lt;/ul>
&lt;h2 id="2-install-dubbo-python">2. Install Dubbo-Python&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Install Directly&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>pip install apache-dubbo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Install from source&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>git clone https://github.com/apache/dubbo-python.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> dubbo-python &lt;span style="color:#719e07">&amp;amp;&amp;amp;&lt;/span> pip install .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h2 id="3-build-a-dubbo-service">3. Build a Dubbo Service&lt;/h2>
&lt;h3 id="building-the-dubbo-server">Building the Dubbo Server&lt;/h3>
&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-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">from&lt;/span> dubbo.configs &lt;span style="color:#719e07">import&lt;/span> ServiceConfig
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">from&lt;/span> dubbo.proxy.handlers &lt;span style="color:#719e07">import&lt;/span> RpcMethodHandler, RpcServiceHandler
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">class&lt;/span> &lt;span style="color:#268bd2">UnaryServiceServicer&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">def&lt;/span> &lt;span style="color:#268bd2">say_hello&lt;/span>(&lt;span style="color:#268bd2">self&lt;/span>, message: &lt;span style="color:#b58900">bytes&lt;/span>) &lt;span style="color:#719e07">-&amp;gt;&lt;/span> &lt;span style="color:#b58900">bytes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">print&lt;/span>(&lt;span style="color:#2aa198">f&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Received message from client: &lt;/span>&lt;span style="color:#2aa198">{&lt;/span>message&lt;span style="color:#2aa198">}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#2aa198">b&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Hello from server&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">def&lt;/span> &lt;span style="color:#268bd2">build_service_handler&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># build a method handler&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> method_handler &lt;span style="color:#719e07">=&lt;/span> RpcMethodHandler&lt;span style="color:#719e07">.&lt;/span>unary(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> method&lt;span style="color:#719e07">=&lt;/span>UnaryServiceServicer()&lt;span style="color:#719e07">.&lt;/span>say_hello, method_name&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;unary&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># build a service handler&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> service_handler &lt;span style="color:#719e07">=&lt;/span> RpcServiceHandler(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> service_name&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.samples.HelloWorld&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> method_handlers&lt;span style="color:#719e07">=&lt;/span>[method_handler],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> service_handler
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">if&lt;/span> __name__ &lt;span style="color:#719e07">==&lt;/span> &lt;span style="color:#2aa198">&amp;#34;__main__&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># build service config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> service_handler &lt;span style="color:#719e07">=&lt;/span> build_service_handler()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> service_config &lt;span style="color:#719e07">=&lt;/span> ServiceConfig(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> service_handler&lt;span style="color:#719e07">=&lt;/span>service_handler, host&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;127.0.0.1&amp;#34;&lt;/span>, port&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">50051&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># start the server&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> server &lt;span style="color:#719e07">=&lt;/span> dubbo&lt;span style="color:#719e07">.&lt;/span>Server(service_config)&lt;span style="color:#719e07">.&lt;/span>start()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">input&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;Press Enter to stop the server...&lt;/span>&lt;span style="color:#cb4b16">\n&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="building-the-dubbo-client">Building the Dubbo Client&lt;/h3>
&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-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">from&lt;/span> dubbo.configs &lt;span style="color:#719e07">import&lt;/span> ReferenceConfig
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">class&lt;/span> &lt;span style="color:#268bd2">UnaryServiceStub&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">def&lt;/span> __init__(&lt;span style="color:#268bd2">self&lt;/span>, client: dubbo&lt;span style="color:#719e07">.&lt;/span>Client):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">self&lt;/span>&lt;span style="color:#719e07">.&lt;/span>unary &lt;span style="color:#719e07">=&lt;/span> client&lt;span style="color:#719e07">.&lt;/span>unary(method_name&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;unary&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">def&lt;/span> &lt;span style="color:#268bd2">say_hello&lt;/span>(&lt;span style="color:#268bd2">self&lt;/span>, message: &lt;span style="color:#b58900">bytes&lt;/span>) &lt;span style="color:#719e07">-&amp;gt;&lt;/span> &lt;span style="color:#b58900">bytes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#268bd2">self&lt;/span>&lt;span style="color:#719e07">.&lt;/span>unary(message)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">if&lt;/span> __name__ &lt;span style="color:#719e07">==&lt;/span> &lt;span style="color:#2aa198">&amp;#34;__main__&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># Create a client&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> reference_config &lt;span style="color:#719e07">=&lt;/span> ReferenceConfig&lt;span style="color:#719e07">.&lt;/span>from_url(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;tri://127.0.0.1:50051/org.apache.dubbo.samples.HelloWorld&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dubbo_client &lt;span style="color:#719e07">=&lt;/span> dubbo&lt;span style="color:#719e07">.&lt;/span>Client(reference_config)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> unary_service_stub &lt;span style="color:#719e07">=&lt;/span> UnaryServiceStub(dubbo_client)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># Call the remote method&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> result &lt;span style="color:#719e07">=&lt;/span> unary_service_stub&lt;span style="color:#719e07">.&lt;/span>say_hello(&lt;span style="color:#2aa198">b&lt;/span>&lt;span style="color:#2aa198">&amp;#34;Hello from client&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">print&lt;/span>(result)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="4-run-the-dubbo-service">4. Run the Dubbo Service&lt;/h2>
&lt;p>Navigate to the Quick Start example directory:&lt;/p></description></item><item><title>Quick Start</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/quick-start/</guid><description>&lt;p>View the complete &lt;a href="https://github.com/apache/dubbo-rust/tree/main/examples/greeter">example&lt;/a> here.&lt;/p>
&lt;h2 id="1-prerequisites">1 Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Install the &lt;a href="https://rustup.rs/">Rust&lt;/a> development environment&lt;/li>
&lt;li>Install the &lt;a href="https://grpc.io/docs/protoc-installation/">protoc&lt;/a> tool&lt;/li>
&lt;/ul>
&lt;h2 id="2-define-dubbo-services-using-idl">2 Define Dubbo Services Using IDL&lt;/h2>
&lt;p>The Greeter service is defined as follows, including a Dubbo service with a Unary (request-response) model.&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-protobuf" data-lang="protobuf">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// ./proto/greeter.proto
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>syntax &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">&amp;#34;proto3&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">option&lt;/span> java_multiple_files &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#cb4b16">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org&lt;span style="color:#719e07">.&lt;/span>apache.dubbo.sample.tri;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// The request message containing the user&amp;#39;s name.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">GreeterRequest&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> name &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// The response message containing the greetings
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">GreeterReply&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> &lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">service&lt;/span> Greeter{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// unary
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">rpc&lt;/span> greet(GreeterRequest) &lt;span style="color:#719e07">returns&lt;/span> (GreeterReply);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-add-dubbo-rust-and-related-dependencies-to-the-project">3 Add Dubbo-rust and Related Dependencies to the Project&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-toml" data-lang="toml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># ./Cargo.toml&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[package]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>name = &lt;span style="color:#2aa198">&amp;#34;example-greeter&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>version = &lt;span style="color:#2aa198">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>edition = &lt;span style="color:#2aa198">&amp;#34;2021&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[bin]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>name = &lt;span style="color:#2aa198">&amp;#34;greeter-server&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>path = &lt;span style="color:#2aa198">&amp;#34;src/greeter/server.rs&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[bin]]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>name = &lt;span style="color:#2aa198">&amp;#34;greeter-client&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>path = &lt;span style="color:#2aa198">&amp;#34;src/greeter/client.rs&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[dependencies]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>http = &lt;span style="color:#2aa198">&amp;#34;0.2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>http-body = &lt;span style="color:#2aa198">&amp;#34;0.4.4&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>futures-util = {version = &lt;span style="color:#2aa198">&amp;#34;0.3&amp;#34;&lt;/span>, default-features = &lt;span style="color:#cb4b16">false&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tokio = { version = &lt;span style="color:#2aa198">&amp;#34;1.0&amp;#34;&lt;/span>, features = [ &lt;span style="color:#2aa198">&amp;#34;rt-multi-thread&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">&amp;#34;time&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">&amp;#34;fs&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">&amp;#34;macros&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">&amp;#34;net&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">&amp;#34;signal&amp;#34;&lt;/span>] }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>prost-derive = {version = &lt;span style="color:#2aa198">&amp;#34;0.10&amp;#34;&lt;/span>, optional = &lt;span style="color:#cb4b16">true&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>prost = &lt;span style="color:#2aa198">&amp;#34;0.10.4&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>async-trait = &lt;span style="color:#2aa198">&amp;#34;0.1.56&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tokio-stream = &lt;span style="color:#2aa198">&amp;#34;0.1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo = &lt;span style="color:#2aa198">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo-config = &lt;span style="color:#2aa198">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[build-dependencies]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo-build = &lt;span style="color:#2aa198">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="4-configure-dubbo-build-to-compile-idl">4 Configure dubbo-build to Compile IDL&lt;/h2>
&lt;p>Create a &lt;code>build.rs&lt;/code> file in the project root directory (not /src) and add the following content:&lt;/p></description></item><item><title>Apache Committer Registration Process</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/new-committer-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/new-committer-guide_dev/</guid><description>&lt;h2 id="i-generation-of-apache-committers">I. Generation of Apache Committers&lt;/h2>
&lt;h3 id="initial-committers-during-project-incubation">Initial Committers during Project Incubation&lt;/h3>
&lt;p>During the project incubation phase, there will be an option for the initial committers list in the incubation project proposal. Confirm that you are one of the initial committers. Once the project is voted through by the Apache Incubator community, committers can begin preparing to register their accounts. Refer to the &lt;a href="https://cwiki.apache.org/confluence/display/incubator">incubator wiki&lt;/a>.&lt;/p>
&lt;h3 id="active-contributors-elected-as-committers">Active Contributors Elected as Committers&lt;/h3>
&lt;p>During later stages of development, active contributors can be elected as committers. See &lt;a href="https://www.apache.org/dev/new-committers-guide.html#becoming-a-committer">How to Become a Committer&lt;/a>.&lt;/p></description></item><item><title>Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/registry/</guid><description>&lt;p>Dubbogo abstracts a set of interfaces for the registry as follows:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// Registry Extension - Registry
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">type&lt;/span> Registry &lt;span style="color:#268bd2">interface&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	common.Node
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// Register is used for service provider calling, register services
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// to registry. And it is also used for service consumer calling, register
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// services cared about, for dubbo&amp;#39;s admin monitoring.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">Register&lt;/span>(url &lt;span style="color:#719e07">*&lt;/span>common.URL) &lt;span style="color:#dc322f">error&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// UnRegister is required to support the contract:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// 1. If it is the persistent stored data of dynamic=false, the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// registration data can not be found, then the IllegalStateException
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// is thrown, otherwise it is ignored.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// 2. Unregister according to the full url match.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// url Registration information, is not allowed to be empty, e.g:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// dubbo://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&amp;amp;application=kylin
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">UnRegister&lt;/span>(url &lt;span style="color:#719e07">*&lt;/span>common.URL) &lt;span style="color:#dc322f">error&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// Subscribe is required to support the contract:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// When creating new registry extension, pls select one of the
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// following modes.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// Will remove in dubbogo version v1.1.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// mode1: return Listener with Next function which can return
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// subscribe service event from registry
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// Deprecated!
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// subscribe(event.URL) (Listener, error)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// Will replace mode1 in dubbogo version v1.1.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// mode2: callback mode, subscribe with notify(notify listener).
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">Subscribe&lt;/span>(&lt;span style="color:#719e07">*&lt;/span>common.URL, NotifyListener) &lt;span style="color:#dc322f">error&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">// UnSubscribe is required to support the contract:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// 1. If don&amp;#39;t subscribe, ignore it directly.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// 2. Unsubscribe by full URL match.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// url Subscription condition, not allowed to be empty, e.g.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// consumer://10.20.153.10/org.apache.dubbo.foo.BarService?version=1.0.0&amp;amp;application=kylin
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#586e75">// listener A listener of the change event, not allowed to be empty
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	&lt;span style="color:#268bd2">UnSubscribe&lt;/span>(&lt;span style="color:#719e07">*&lt;/span>common.URL, NotifyListener) &lt;span style="color:#dc322f">error&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This interface mainly includes four methods: register, unregister, subscribe, and unsubscribe. As the names suggest, it summarizes the actions for client and server interactions with the registry. For general interface-level service registration scenarios, when the Provider service starts, it abstracts its service interface information into a URL, which contains all the information needed for the client to initiate a call (IP, port, protocol, etc.). The server&amp;rsquo;s registry component writes this URL to the registry (e.g., Zookeeper). After the client starts, it will subscribe to the required service information through the registry component during the service reference step, and the obtained service information will be written to the client cache in the form of asynchronous event updates. Thus, upon successful service discovery, it can initiate calls to the corresponding service provider based on the retrieved service URL parameters.&lt;/p></description></item><item><title>Request Routing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-proxyless/security/request-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-proxyless/security/request-routing/</guid><description>&lt;p>Before you begin
Setup Istio by following the instructions in the Installation guide.&lt;/p>
&lt;p>Deploy the Bookinfo sample application.&lt;/p>
&lt;p>Review the Traffic Management concepts doc.&lt;/p>
&lt;p>About this task
The Istio Bookinfo sample consists of four separate microservices, each with multiple versions. Three different versions of one of the microservices, reviews, have been deployed and are running concurrently. To illustrate the problem this causes, access the Bookinfo app’s /productpage in a browser and refresh several times. The URL is http://$GATEWAY_URL/productpage, where $GATEWAY_URL is the External IP address of the ingress, as explained in the Bookinfo doc.&lt;/p></description></item><item><title>Request Routing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-proxyless/traffic/request-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-proxyless/traffic/request-routing/</guid><description>&lt;p>Before you begin
Setup Istio by following the instructions in the Installation guide.&lt;/p>
&lt;p>Deploy the Bookinfo sample application.&lt;/p>
&lt;p>Review the Traffic Management concepts doc.&lt;/p>
&lt;p>About this task
The Istio Bookinfo sample consists of four separate microservices, each with multiple versions. Three different versions of one of the microservices, reviews, have been deployed and are running concurrently. To illustrate the problem this causes, access the Bookinfo app’s /productpage in a browser and refresh several times. The URL is http://$GATEWAY_URL/productpage, where $GATEWAY_URL is the External IP address of the ingress, as explained in the Bookinfo doc.&lt;/p></description></item><item><title>Request Routing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-sidecar/security/request-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-sidecar/security/request-routing/</guid><description>&lt;p>Before you begin
Setup Istio by following the instructions in the Installation guide.&lt;/p>
&lt;p>Deploy the Bookinfo sample application.&lt;/p>
&lt;p>Review the Traffic Management concepts doc.&lt;/p>
&lt;p>About this task
The Istio Bookinfo sample consists of four separate microservices, each with multiple versions. Three different versions of one of the microservices, reviews, have been deployed and are running concurrently. To illustrate the problem this causes, access the Bookinfo app’s /productpage in a browser and refresh several times. The URL is http://$GATEWAY_URL/productpage, where $GATEWAY_URL is the External IP address of the ingress, as explained in the Bookinfo doc.&lt;/p></description></item><item><title>Request Routing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-sidecar/traffic/request-routing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/bookinfo-sidecar/traffic/request-routing/</guid><description>&lt;p>Before you begin
Setup Istio by following the instructions in the Installation guide.&lt;/p>
&lt;p>Deploy the Bookinfo sample application.&lt;/p>
&lt;p>Review the Traffic Management concepts doc.&lt;/p>
&lt;p>About this task
The Istio Bookinfo sample consists of four separate microservices, each with multiple versions. Three different versions of one of the microservices, reviews, have been deployed and are running concurrently. To illustrate the problem this causes, access the Bookinfo app’s /productpage in a browser and refresh several times. The URL is http://$GATEWAY_URL/productpage, where $GATEWAY_URL is the External IP address of the ingress, as explained in the Bookinfo doc.&lt;/p></description></item><item><title>Request Timing Sampling</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/profiler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/profiler/</guid><description>&lt;p>The performance sampling feature can detect the time spent at various points in the Dubbo processing chain, logging the call duration when a timeout occurs &lt;code>( usageTime / timeout &amp;gt; profilerWarnPercent * 100 )&lt;/code>.&lt;/p>
&lt;p>This feature has two modes: &lt;code>simple profiler&lt;/code> and &lt;code>detail profiler&lt;/code>, where the &lt;code>simple profiler&lt;/code> mode is enabled by default and the &lt;code>detail profiler&lt;/code> mode is disabled by default. The &lt;code>detail profiler&lt;/code> collects more data, such as the processing time of each filter and specific protocol timing. If long processing times are detected in the Dubbo framework while in &lt;code>simple profiler&lt;/code> mode, you can enable &lt;code>detail profiler&lt;/code> mode to better troubleshoot issues.&lt;/p></description></item><item><title>Rest Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/protocol-http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/protocol-http/</guid><description>&lt;p>This article will introduce the REST/HTTP protocol design of Dubbo.&lt;/p>
&lt;h2 id="restprotocol-design">RestProtocol Design&lt;/h2>
&lt;h3 id="original-version-dubbo-rest">Original Version Dubbo Rest&lt;/h3>
&lt;p>&lt;strong>consumer&lt;/strong>&lt;/p>
&lt;p>restClient supports relying on resteasy and does not support spring mvc.&lt;/p>
&lt;p>&lt;strong>provider (heavier)&lt;/strong>&lt;/p>
&lt;p>Depends on web container (tomcat, jetty), servlet mode, jaxrs netty server.&lt;/p>
&lt;h3 id="new-version-dubbo-rest">New Version Dubbo Rest&lt;/h3>
&lt;p>Lighter, with a Dubbo-style REST that is interoperable in a microservices system (Springcloud Alibaba).&lt;/p>
&lt;p>&lt;strong>1. Annotation Parsing&lt;/strong>&lt;/p>
&lt;p>&lt;strong>2. Message Codec&lt;/strong>&lt;/p>
&lt;p>&lt;strong>3. RestClient&lt;/strong>&lt;/p>
&lt;p>&lt;strong>4. RestServer (netty)&lt;/strong>&lt;/p></description></item><item><title>RPC Protocol Triple&amp;Dubbo Benchmark Testing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/performance/rpc-benchmarking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/performance/rpc-benchmarking/</guid><description>&lt;ul>
&lt;li>The implementation of the &lt;em>Dubbo protocol&lt;/em> in Dubbo3 is basically on par with the Dubbo2 version in terms of performance.&lt;/li>
&lt;li>Since the Triple protocol is built on HTTP/2, RPC calls over a single link do not show an improvement compared to Dubbo2 based on TCP, and there is actually a certain decrease in some calling scenarios. However, the &lt;em>Triple protocol&lt;/em> has greater advantages in gateway penetration, universality, and overall throughput improvement brought by the Stream communication model.&lt;/li>
&lt;li>Triple is expected to perform better under gateway proxy scenarios, and benchmarks were not provided in the current stress test environment.&lt;/li>
&lt;/ul>
&lt;h2 id="11-environment">1.1 Environment&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>Machine&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">4C8G Linux JDK 1.8 (Provider) 4C8G Linux JDK 1.8 (Consumer)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>Stress Test Cases&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">RPC method types include: no-parameter no return value, ordinary pojo return value, pojo list return value&lt;br />&lt;br />Version 2.7 Dubbo protocol (Hessian2 serialization)&lt;br />Version 3.0 Dubbo protocol (Hessian2 serialization)&lt;br />Version 3.0 Dubbo protocol (Protobuf serialization)&lt;br />Version 3.0 Triple protocol (Protobuf serialization)&lt;br />Version 3.0 Triple protocol (Protobuf plus Hessian2 serialization)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>Stress Testing Method&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">In a single link scenario, the consumer starts 32 concurrent threads (the current machine configuration has a balanced qps rt concurrency), continuously collecting test data&lt;br /> Test data is obtained from &lt;a href="https://github.com/apache/dubbo-benchmark">https://github.com/apache/dubbo-benchmark&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;br />
&lt;h2 id="12-data-analysis">1.2 Data Analysis&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">&lt;/th>
 &lt;th style="text-align: left">&lt;strong>Dubbo + Hessian2&lt;br />2.7&lt;/strong>&lt;/th>
 &lt;th style="text-align: left">&lt;strong>Dubbo + Hessian2&lt;br />3.0&lt;/strong>&lt;/th>
 &lt;th style="text-align: left">&lt;strong>Dubbo + Protobuf&lt;br />3.0&lt;/strong>&lt;/th>
 &lt;th style="text-align: left">&lt;strong>Triple + Protobuf&lt;br />3.0&lt;/strong>&lt;/th>
 &lt;th style="text-align: left">&lt;strong>Triple + Protobuf(Hessian)&lt;br />3.0&lt;/strong>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>No-parameter Method&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">30333 ops/s&lt;br />2.5ms P99&lt;/td>
 &lt;td style="text-align: left">30414 ops/s&lt;br />2.4ms P99&lt;/td>
 &lt;td style="text-align: left">24123 ops/s&lt;br />3.2ms P99&lt;/td>
 &lt;td style="text-align: left">7016 ops/s&lt;br />8.7ms P99&lt;/td>
 &lt;td style="text-align: left">6635 ops/s&lt;br />9.1ms P99&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>Pojo Return Value&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">8984 ops/s&lt;br />6.1 ms P99&lt;/td>
 &lt;td style="text-align: left">12279 ops/s&lt;br />5.7 ms P99&lt;/td>
 &lt;td style="text-align: left">21479 ops/s&lt;br />3.0 ms P99&lt;/td>
 &lt;td style="text-align: left">6255 ops/s&lt;br />8.9 ms P99&lt;/td>
 &lt;td style="text-align: left">6491 ops/s&lt;br />10 ms P99&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>Pojo List Return Value&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">1916 ops/s&lt;br />34 ms P99&lt;/td>
 &lt;td style="text-align: left">2037 ops/s&lt;br />34 ms P99&lt;/td>
 &lt;td style="text-align: left">12722 ops/s&lt;br />7.7 ms P99&lt;/td>
 &lt;td style="text-align: left">6920 ops/s&lt;br />9.6 ms P99&lt;/td>
 &lt;td style="text-align: left">2833 ops/s&lt;br />27 ms P99&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="121-comparison-of-different-versions-of-dubbo-protocol-implementations">1.2.1 Comparison of Different Versions of Dubbo Protocol Implementations&lt;/h3>
&lt;p>&lt;img alt="//imgs/v3/performance/rpc-dubbo.svg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/performance/rpc-dubbo.svg">&lt;/p></description></item><item><title>RPC Benchmark Testing Console</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/performance/page-benchmarking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/performance/page-benchmarking/</guid><description>&lt;html lang="">
&lt;head>
 &lt;meta charset="utf-8">
 &lt;meta http-equiv="X-UA-Compatible" content="IE=edge">
 &lt;meta name="viewport" content="width=device-width,initial-scale=1">
 &lt;title>dubbo-benchmark&lt;/title>
 &lt;script defer="defer" src="https://deploy-preview-3202--dubbo.netlify.app/js/chunk-vendors.js">&lt;/script>
 &lt;script defer="defer" src="https://deploy-preview-3202--dubbo.netlify.app/js/app.js">&lt;/script>
 &lt;link href="https://deploy-preview-3202--dubbo.netlify.app/css/chunk-vendors.css" rel="stylesheet">
 &lt;link href="https://deploy-preview-3202--dubbo.netlify.app/css/app.css" rel="stylesheet">
&lt;/head>
&lt;body>
&lt;noscript>&lt;strong>We're sorry but dubbo-benchmark doesn't work properly without JavaScript enabled. Please enable it to
 continue.&lt;/strong>&lt;/noscript>
&lt;div id="app">&lt;/div>
&lt;/body>
&lt;/html></description></item><item><title>Sample Application Architecture</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/architecture/</guid><description>&lt;p>This task demonstrates the traffic control capabilities of Dubbo based on a simple online shopping mall microservice system.&lt;/p>


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

 All capabilities demonstrated in this example are implemented based on &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/introduction/">Dubbo Routing Rules&lt;/a>. For detailed information on how they work, please check the specifics.

&lt;/div>

&lt;p>The architecture diagram of the online mall is as follows:&lt;/p>
&lt;p>&lt;img alt="shop-arc" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/traffic/shop-arc.png">&lt;/p>
&lt;p>The system consists of 5 microservice applications:&lt;/p>
&lt;ul>
&lt;li>&lt;code>Frontend Shopping Mall Home&lt;/code>, which serves as the web interface interacting with users, calling &lt;code>User&lt;/code>, &lt;code>Detail&lt;/code>, &lt;code>Order&lt;/code>, etc., to provide user login, product display, and order management services.&lt;/li>
&lt;li>&lt;code>User Service&lt;/code>, responsible for user data management and identity verification.&lt;/li>
&lt;li>&lt;code>Order Service&lt;/code>, providing order creation and query services, relying on the &lt;code>Detail&lt;/code> service to validate product stock information.&lt;/li>
&lt;li>&lt;code>Detail Service&lt;/code>, displaying detailed product information and calling the &lt;code>Comment&lt;/code> service to show user comments on products.&lt;/li>
&lt;li>&lt;code>Comment Service&lt;/code>, managing user comments on products.&lt;/li>
&lt;/ul>
&lt;h2 id="deploying-the-mall-system">Deploying the Mall System&lt;/h2>
&lt;p>For convenience, we will deploy the entire system on a Kubernetes cluster. Execute the following command to complete the mall project deployment. The source code example is in &lt;a href="https://github.com/apache/dubbo-samples/tree/master/10-task/dubbo-samples-shop">dubbo-samples/task&lt;/a>.&lt;/p></description></item><item><title>Script Router</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/</guid><description>&lt;h2 id="how-to-use">How to use&lt;/h2>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>Docker and Docker Compose environment to deploy Nacos registry.&lt;/li>
&lt;li>Nacos Version 2.x+&lt;/li>
&lt;li>Go 1.23+&lt;/li>
&lt;/ul>
&lt;h4 id="run-nacos">Run Nacos&lt;/h4>
&lt;p>Follow this instruction
to &lt;a href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/">install and start Nacos server&lt;/a>.&lt;/p>
&lt;h3 id="script-router">Script router&lt;/h3>
&lt;p>Similar to the condition router, the script router enables traffic control using expressions. However,
while it offers more powerful matching capabilities, this comes at the cost of higher resource consumption.
Therefore, it should be used sparingly in production environments.&lt;/p>
&lt;p>The example code for the script router is similar to that of the condition router,
with slight differences in the Nacos configuration.
Therefore, only the Nacos configuration is provided here.&lt;/p></description></item><item><title>Seata Distributed Transactions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/transaction/seata/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/transaction/seata/</guid><description>&lt;ol>
&lt;li>
&lt;p>First, execute the following command to start the seata-server.&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>&lt;span style="color:#b58900">cd&lt;/span> ../dockercompose
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker-compose -f docker-compose.yml up -d seata-server
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Then, execute the main() method in the triple/client/cmd and triple/server/cmd directories.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Complete example source code &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/transcation/">address&lt;/a>&lt;/p></description></item><item><title>Use Sentinel to Handle Surging Traffic and Protect Your Application</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/rate-limit/sentinel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/rate-limit/sentinel/</guid><description>&lt;p>In complex production environments, thousands of Dubbo service instances may be deployed, with continuous incoming traffic and inter-service calls. However, distributed systems may experience unavailability of certain services due to a surge in traffic, high system load, network latency, etc. If appropriate controls are not in place, it can lead to cascading failures that impact service availability. Therefore, how to reasonably control traffic has become key to ensuring service stability.&lt;/p></description></item><item><title>Introduction to Dubbo Serialization Mechanism</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/serialization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/serialization/</guid><description>&lt;h2 id="supported-protocol-list">Supported Protocol List&lt;/h2>
&lt;p>The following is the list of serialization protocols supported by the Dubbo framework, classified by &lt;code>triple&lt;/code> and &lt;code>dubbo&lt;/code> RPC communication protocols.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:100px">RPC Protocol&lt;/span>&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:100px">Programming Mode&lt;/span>&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:100px">Serialization Protocol&lt;/span>&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:200px">Configuration Method&lt;/span>&lt;/th>
 &lt;th style="text-align: left">JDK Version&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>triple&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">IDL&lt;/td>
 &lt;td style="text-align: left">protobuf,&lt;br/>protobuf-json&lt;/td>
 &lt;td style="text-align: left">Default&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">Default serialization method when using IDL, clients can also choose protobuf-json for serialization communication without additional configuration&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">protobuf-wrapper&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;hessian&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">This mode adopts a double serialization mode, where data is first serialized by hessian and then by protobuf.&lt;br/>&lt;br/>Supports a calling model equivalent to IDL, which is easy to use but with slightly reduced performance&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;strong>dubbo&lt;/strong>&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">hessian&lt;/td>
 &lt;td style="text-align: left">Default, serialization=&amp;ldquo;hessian&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">The default serialization method for the dubbo protocol, featuring good compatibility, high performance, and cross-language advantages (java, go, c/c++, php, python, .net)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">protostuff&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;protostuff&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8&lt;/td>
 &lt;td style="text-align: left">A Java serialization library with built-in support for forward-backward compatibility (schema evolution) and validation.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">gson&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;gson&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">A JSON serialization library released by Google&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">avro&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;avro&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">A high-performance serialization library for Java&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">msgpack&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;msgpack&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">Offers good compatibility and multi-language implementations (Java, C/C++, Python, etc.)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">kryo&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;kryo&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">Kryo is a very mature serialization implementation, widely used in Twitter, Groupon, Yahoo, and many prominent open-source projects (like Hive, Storm).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">fastjson2&lt;/td>
 &lt;td style="text-align: left">serialization=&amp;ldquo;fastjson2&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">fastjson&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Java Interface&lt;/td>
 &lt;td style="text-align: left">More extensions&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-serialization-extensions">dubbo-spi-extensions&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="performance-comparison-report">Performance Comparison Report&lt;/h2>
&lt;p>Serialization plays a crucial role in response speed, throughput, and network bandwidth consumption for remote calls, making it one of the key factors in improving the performance of distributed systems.&lt;/p></description></item><item><title>Serialization Security</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/serialization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/serialization/</guid><description>&lt;h1 id="overview">Overview&lt;/h1>
&lt;p>Dubbo supports serialization protocol extensions, allowing users to enable any serialization protocol based on this mechanism theoretically. This brings great flexibility but also potential security risks. Data deserialization is the most susceptible to attacker exploitation, allowing them to execute RCE attacks, steal or damage server-side data. Before switching or implementing a serialization protocol, users should thoroughly research the security guarantees of the target protocol and its implementation and set up appropriate security measures (e.g., black/whitelists) in advance. Dubbo cannot directly ensure the security of the target serialization mechanism.&lt;/p></description></item><item><title>Develop RPC Server and Client with Lightweight Java SDK</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/lightweight-rpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/lightweight-rpc/</guid><description>&lt;p>This example demonstrates how to use the lightweight Dubbo SDK to develop RPC Server and Client. The example uses Java Interface to define, publish, and access RPC services, with Triple protocol communication at the core. For the complete code of this example, please refer to &lt;a href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api" target="_blank">dubbo-samples&lt;/a>.&lt;/p>
&lt;p>Based on the Triple protocol defined by Dubbo, you can easily write browser and gRPC-compatible RPC services that can run on both HTTP/1 and HTTP/2. The Dubbo Java SDK supports defining services using IDL or language-specific methods and provides a lightweight API for publishing or invoking these services.&lt;/p></description></item><item><title>How Service Discovery Works: Basic Usage and Configuration Details</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/registry/</guid><description>&lt;p>Dubbo supports an automatic instance discovery mechanism based on a registry center, where Dubbo providers register instance addresses to the registry center, and Dubbo consumers automatically obtain the latest instance changes by subscribing to changes in the registry center, ensuring that traffic is always forwarded to the correct nodes. Dubbo currently supports various registry centers such as Nacos, Zookeeper, and Kubernetes Service.&lt;/p>
&lt;h2 id="registry-center">Registry Center&lt;/h2>
&lt;p>The following are some mainstream registry center implementations for Dubbo service discovery. For more extended implementations and working principles, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/overview/">Registry Center Reference Manual&lt;/a>.&lt;/p></description></item><item><title>Analysis of Single-Port Multi-Protocol Implementation Principles</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-protocol/</guid><description>&lt;p>By configuring protocols, Dubbo 3 can support port protocol multiplexing. For instance, after enabling port reuse with the Triple protocol, you can add support for the Dubbo protocol and the Qos protocol on the same port. These protocols are identified by a unified port reuse server, which can facilitate service protocol migration, save ports and related resources, and reduce operational complexity.&lt;/p>
&lt;p>&lt;img alt="pu-server-image1" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/pu-server/pu-server-flow.png">&lt;/p>
&lt;ul>
&lt;li>
&lt;p>During the service creation phase, different Protocol objects are created for export by retrieving service export protocol configurations from the Config layer. If it&amp;rsquo;s not the first time creating a port-reusing Server, the Exchanger saves data passed from the Protocol layer to the Server for subsequent processing of that protocol type&amp;rsquo;s messages.&lt;/p></description></item><item><title>Dubbo SPI Overview</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/overview/</guid><description>&lt;p>Using IoC containers to help manage the lifecycle of components, dependency injection, etc., is a common design in many development frameworks. Dubbo has a lightweight version of an IoC container built in, used to manage plugins within the framework, achieving capabilities such as plugin instantiation, lifecycle management, and automatic dependency injection.&lt;/p>
&lt;p>Readers interested may learn about:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/">How the Dubbo SPI Extension System Works&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/spi/">Examples of Using Dubbo SPI Extensions&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Dubbo plugin system and IoC container have the following characteristics:&lt;/p></description></item><item><title>Spring Boot</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/develop/springboot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/develop/springboot/</guid><description>&lt;p>Dubbo provides full support for the Spring framework, and we recommend using the official &lt;code>dubbo-spring-boot-starter&lt;/code> for efficient development of Dubbo microservice applications.&lt;/p>
&lt;h2 id="creating-a-project">Creating a Project&lt;/h2>
&lt;p>The fastest way to create a Dubbo application is to use the official project scaffold tool - &lt;a href="https://start.dubbo.apache.org" target="_blank">start.dubbo.apache.org&lt;/a> online service. It helps developers create Spring Boot structured applications and automatically manage dependencies like &lt;code>dubbo-spring-boot-starter&lt;/code> along with necessary configurations.&lt;/p>
&lt;p>Additionally, Jetbrain also provides an Apache Dubbo project plugin for quickly creating Dubbo Spring Boot projects, which is on par with start.dubbo.apache.org. For specific installation and usage.&lt;/p></description></item><item><title>Dubbo Framework Standard Monitoring Metrics</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/metrics/standard_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/metrics/standard_metrics/</guid><description>&lt;h3 id="dubbo-metrics-definitions">Dubbo Metrics Definitions&lt;/h3>
&lt;h4 id="provider-metrics">Provider Metrics&lt;/h4>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Metrics Name&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;th style="text-align: left">Explanation&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_qps_total&lt;/td>
 &lt;td style="text-align: left">The number of requests received by the provider per second&lt;/td>
 &lt;td style="text-align: left">The number of requests received by the provider per second&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_total&lt;/td>
 &lt;td style="text-align: left">The total number of received requests by the provider&lt;/td>
 &lt;td style="text-align: left">The total number of received requests by the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_total_aggregate&lt;/td>
 &lt;td style="text-align: left">The total number of received requests by the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The total number of received requests by the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_processing&lt;/td>
 &lt;td style="text-align: left">The number of received requests being processed by the provider&lt;/td>
 &lt;td style="text-align: left">The number of received requests being processed by the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_succeed_total&lt;/td>
 &lt;td style="text-align: left">The number of requests successfully received by the provider&lt;/td>
 &lt;td style="text-align: left">The number of requests successfully received by the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_succeed_aggregate&lt;/td>
 &lt;td style="text-align: left">The number of successful requests received by the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The number of successful requests received by the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_min&lt;/td>
 &lt;td style="text-align: left">The minimum response time among all requests processed by the provider&lt;/td>
 &lt;td style="text-align: left">The minimum response time among all requests processed by the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_min_milliseconds_aggregate&lt;/td>
 &lt;td style="text-align: left">The minimum response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The minimum response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_avg&lt;/td>
 &lt;td style="text-align: left">The average response time of all requests processed by the provider&lt;/td>
 &lt;td style="text-align: left">The average response time of all requests processed by the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_avg_milliseconds_aggregate&lt;/td>
 &lt;td style="text-align: left">The average response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The average response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_sum&lt;/td>
 &lt;td style="text-align: left">The total time taken by the provider to process all requests&lt;/td>
 &lt;td style="text-align: left">The total time taken by the provider to process all requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_max&lt;/td>
 &lt;td style="text-align: left">The maximum response time among all requests from the provider&lt;/td>
 &lt;td style="text-align: left">The maximum response time among all requests from the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_max_milliseconds_aggregate&lt;/td>
 &lt;td style="text-align: left">The maximum response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The maximum response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_last&lt;/td>
 &lt;td style="text-align: left">The current response time in the provider&amp;rsquo;s processing of requests&lt;/td>
 &lt;td style="text-align: left">The current response time in the provider&amp;rsquo;s processing of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_p50&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 50% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 50% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_p90&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 90% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 90% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_p95&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 95% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 95% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_p99&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 99% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by providers processing 99% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_processing_total&lt;/td>
 &lt;td style="text-align: left">The number of received requests being processed by the provider&lt;/td>
 &lt;td style="text-align: left">The number of received requests being processed by the provider&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_histogram_seconds_bucket&lt;/td>
 &lt;td style="text-align: left">The histogram of response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The histogram of response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_histogram_seconds_count&lt;/td>
 &lt;td style="text-align: left">The count of histogram of response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The count of histogram of response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_histogram_seconds_max&lt;/td>
 &lt;td style="text-align: left">The max of histogram of response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The max of histogram of response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_rt_milliseconds_histogram_seconds_sum&lt;/td>
 &lt;td style="text-align: left">The sum of histogram of response time of the provider under the sliding window&lt;/td>
 &lt;td style="text-align: left">The sum of histogram of response time of the provider under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_business_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Failed Business Requests&lt;/td>
 &lt;td style="text-align: left">When the RPC request status code is RpcException.BIZ_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_timeout_total&lt;/td>
 &lt;td style="text-align: left">Total Timeout Failed Requests&lt;/td>
 &lt;td style="text-align: left">When the RPC request status code is RpcException.TIMEOUT_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_limit_total&lt;/td>
 &lt;td style="text-align: left">Total Limit Failed Requests&lt;/td>
 &lt;td style="text-align: left">RPC request status is RpcException.LIMIT_EXCEEDED_EXCEPTION or exception type is LimitExceededException&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_unknown_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Unknown Failed Requests&lt;/td>
 &lt;td style="text-align: left">Other types of exceptions not yet categorized, analyzing based on logs&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Failed Requests&lt;/td>
 &lt;td style="text-align: left">Total number of exceptions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_total_aggregate&lt;/td>
 &lt;td style="text-align: left">Total Failed Aggregate Requests&lt;/td>
 &lt;td style="text-align: left">Total number of failed aggregate requests, triggered when one of the requests in the aggregate request fails&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_network_total&lt;/td>
 &lt;td style="text-align: left">Total network Failed Requests&lt;/td>
 &lt;td style="text-align: left">Exceptions occurring during network connection failure or network communication, corresponding to Java exception RemotingException&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_service_unavailable_total&lt;/td>
 &lt;td style="text-align: left">Total Service Unavailable Failed Requests&lt;/td>
 &lt;td style="text-align: left">When there is no provider or the provider is forbidden to access, corresponding exception code FORBIDDEN_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_codec_total&lt;/td>
 &lt;td style="text-align: left">Total codec failed&lt;/td>
 &lt;td style="text-align: left">Serialization related exceptions, exception code SERIALIZATION_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Generally occurs during network connection failure or network communication issues, corresponding to Java exception RemotingException&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_service_unavailable_total&lt;/td>
 &lt;td style="text-align: left">Total Service Unavailable Failed Requests&lt;/td>
 &lt;td style="text-align: left">When there is no provider or the provider is forbidden, corresponding exception code FORBIDDEN_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_codec_total&lt;/td>
 &lt;td style="text-align: left">Total codec failed&lt;/td>
 &lt;td style="text-align: left">Serialization related exceptions, exception code SERIALIZATION_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_aggregate&lt;/td>
 &lt;td style="text-align: left">Total Failed Aggregate Requests&lt;/td>
 &lt;td style="text-align: left">Total number of failed aggregate requests, triggered when one of the requests in the aggregate request fails&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_timeout_total&lt;/td>
 &lt;td style="text-align: left">Total Timeout Failed Requests&lt;/td>
 &lt;td style="text-align: left">When the RPC request status code is RpcException.TIMEOUT_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_limit_total&lt;/td>
 &lt;td style="text-align: left">Total Limit Failed Requests&lt;/td>
 &lt;td style="text-align: left">RPC request status is RpcException.LIMIT_EXCEEDED_EXCEPTION or exception type is LimitExceededException; generally, this occurs when the concurrency limit exceeds max concurrent invoke or the system limit is exceeded.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_unknown_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Unknown Failed Requests&lt;/td>
 &lt;td style="text-align: left">Other types of exceptions not yet categorized, analyzing based on logs&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Failed Requests&lt;/td>
 &lt;td style="text-align: left">Total number of exceptions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_network_total&lt;/td>
 &lt;td style="text-align: left">Total network Failed Requests&lt;/td>
 &lt;td style="text-align: left">Generally occurs during network connection failure or network communication issues, corresponding to Java exception RemotingException&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_service_unavailable_total&lt;/td>
 &lt;td style="text-align: left">Total Service Unavailable Failed Requests&lt;/td>
 &lt;td style="text-align: left">When there is no provider or the provider is forbidden, corresponding exception code FORBIDDEN_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_provider_requests_failed_codec_total&lt;/td>
 &lt;td style="text-align: left">Total codec failed&lt;/td>
 &lt;td style="text-align: left">Serialization related exceptions, exception code SERIALIZATION_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h4 id="consumer-metrics">Consumer Metrics&lt;/h4>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Metrics Name&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;th style="text-align: left">Explanation&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_qps_total&lt;/td>
 &lt;td style="text-align: left">The number of requests sent by consumers per second&lt;/td>
 &lt;td style="text-align: left">The number of requests sent by consumers per second&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_total&lt;/td>
 &lt;td style="text-align: left">Total number of sent requests by consumers&lt;/td>
 &lt;td style="text-align: left">Total number of sent requests by consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_total_aggregate&lt;/td>
 &lt;td style="text-align: left">The total number of requests sent by consumers under the sliding window&lt;/td>
 &lt;td style="text-align: left">The total number of requests sent by consumers under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_processing&lt;/td>
 &lt;td style="text-align: left">The number of sent requests that consumers are currently processing&lt;/td>
 &lt;td style="text-align: left">The number of sent requests that consumers are currently processing&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_succeed_total&lt;/td>
 &lt;td style="text-align: left">The number of successful requests sent by consumers&lt;/td>
 &lt;td style="text-align: left">The number of successful requests sent by consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_succeed_aggregate&lt;/td>
 &lt;td style="text-align: left">The number of successful requests sent by consumers under the sliding window&lt;/td>
 &lt;td style="text-align: left">The number of successful requests sent by consumers under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_min&lt;/td>
 &lt;td style="text-align: left">Minimum response time among all consumer requests&lt;/td>
 &lt;td style="text-align: left">Minimum response time among all consumer requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_min_milliseconds_aggregate&lt;/td>
 &lt;td style="text-align: left">The minimum response time of the consumer under the sliding window&lt;/td>
 &lt;td style="text-align: left">The minimum response time of the consumer under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_avg&lt;/td>
 &lt;td style="text-align: left">Average response time of all requests from consumers&lt;/td>
 &lt;td style="text-align: left">Average response time of all requests from consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_avg_milliseconds_aggregate&lt;/td>
 &lt;td style="text-align: left">The average response time of the consumer under the sliding window&lt;/td>
 &lt;td style="text-align: left">The average response time of the consumer under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_sum&lt;/td>
 &lt;td style="text-align: left">The total time of all consumer requests&lt;/td>
 &lt;td style="text-align: left">The total time of all consumer requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_max&lt;/td>
 &lt;td style="text-align: left">Maximum response time among all requests from consumers&lt;/td>
 &lt;td style="text-align: left">Maximum response time among all requests from consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_max_milliseconds_aggregate&lt;/td>
 &lt;td style="text-align: left">The maximum response time of the consumer under the sliding window&lt;/td>
 &lt;td style="text-align: left">The maximum response time of the consumer under the sliding window&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_last&lt;/td>
 &lt;td style="text-align: left">The current response time in consumer processing requests&lt;/td>
 &lt;td style="text-align: left">The current response time in consumer processing requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_p50&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 50% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 50% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_p90&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 90% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 90% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_p95&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 95% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 95% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_p99&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 99% of requests&lt;/td>
 &lt;td style="text-align: left">The total response time spent by consumers processing 99% of requests&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_histogram_seconds_bucket&lt;/td>
 &lt;td style="text-align: left">Histogram of response time of all requests from consumers&lt;/td>
 &lt;td style="text-align: left">Histogram of response time of all requests from consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_histogram_seconds_count&lt;/td>
 &lt;td style="text-align: left">count of Histogram of all requests from consumers&lt;/td>
 &lt;td style="text-align: left">Count of histogram of all requests from consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_histogram_seconds_sum&lt;/td>
 &lt;td style="text-align: left">sum of Histogram of all requests from consumers&lt;/td>
 &lt;td style="text-align: left">Sum of histogram of all requests from consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_rt_milliseconds_histogram_seconds_max&lt;/td>
 &lt;td style="text-align: left">max of Histogram of all requests from consumers&lt;/td>
 &lt;td style="text-align: left">Max of histogram of all requests from consumers&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_business_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Failed Business Requests&lt;/td>
 &lt;td style="text-align: left">When the RPC request status code is RpcException.BIZ_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_timeout_total&lt;/td>
 &lt;td style="text-align: left">Total Timeout Failed Requests&lt;/td>
 &lt;td style="text-align: left">When the RPC request status code is RpcException.TIMEOUT_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_timeout_failed_aggregate&lt;/td>
 &lt;td style="text-align: left">Total Timeout Failed Requests&lt;/td>
 &lt;td style="text-align: left">Aggregate metrics within the sliding window; when the RPC request status code is RpcException.TIMEOUT_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_limit_total&lt;/td>
 &lt;td style="text-align: left">Total Limit Failed Requests&lt;/td>
 &lt;td style="text-align: left">RPC request status is RpcException.LIMIT_EXCEEDED_EXCEPTION or exception type is LimitExceededException; generally, this occurs when the concurrency limit exceeds max concurrent invoke or the system limit is exceeded.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_unknown_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Unknown Failed Requests&lt;/td>
 &lt;td style="text-align: left">Other types of exceptions not yet categorized, analyzing based on logs&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_failed_total&lt;/td>
 &lt;td style="text-align: left">Total Failed Requests&lt;/td>
 &lt;td style="text-align: left">Total number of exceptions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_failed_total_aggregate&lt;/td>
 &lt;td style="text-align: left">Total Failed Requests&lt;/td>
 &lt;td style="text-align: left">Aggregate metrics within the sliding window; total number of exceptions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_failed_network_total&lt;/td>
 &lt;td style="text-align: left">Total network Failed Requests&lt;/td>
 &lt;td style="text-align: left">Generally occurs during network connection failure or network communication issues, corresponding to Java exception RemotingException&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_failed_network_total_aggregate&lt;/td>
 &lt;td style="text-align: left">Total network Failed Requests&lt;/td>
 &lt;td style="text-align: left">Aggregate metrics within the sliding window; generally occurs during network connection failure or network communication issues, corresponding to Java exception RemotingException&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_failed_service_unavailable_total&lt;/td>
 &lt;td style="text-align: left">Total Service Unavailable Failed Requests&lt;/td>
 &lt;td style="text-align: left">When there is no provider or the provider is forbidden, corresponding exception code FORBIDDEN_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo_consumer_requests_failed_codec_total&lt;/td>
 &lt;td style="text-align: left">Total codec failed&lt;/td>
 &lt;td style="text-align: left">Serialization related exceptions, exception code SERIALIZATION_EXCEPTION&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>Streaming Communication</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/streaming/</guid><description>&lt;p>Streaming communication is a new RPC data transfer mode offered by Dubbo3, suitable for the following scenarios:&lt;/p>
&lt;ul>
&lt;li>Interfaces that need to send large amounts of data that cannot be placed in a single RPC request or response, requiring batch sending. However, traditional multiple RPC calls cannot resolve issues of order and performance, and if order is to be guaranteed, they must be sent serially.&lt;/li>
&lt;li>Streaming scenarios where data needs to be processed in the order sent, and the data itself has no definite boundaries.&lt;/li>
&lt;li>Push scenarios where multiple messages are sent and processed within the same call context.&lt;/li>
&lt;/ul>
&lt;p>There are three types of Streaming communication:&lt;/p></description></item><item><title>Tag Router</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/tag_router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/tag_router/</guid><description>&lt;h2 id="how-to-use">How to use&lt;/h2>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>Docker and Docker Compose environment to deploy Nacos registry.&lt;/li>
&lt;li>Nacos Version 2.x+&lt;/li>
&lt;li>Go 1.23+&lt;/li>
&lt;/ul>
&lt;h4 id="run-nacos">Run Nacos&lt;/h4>
&lt;p>Follow this instruction
to &lt;a href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/">install and start Nacos server&lt;/a>.&lt;/p>
&lt;h3 id="tag-router">Tag router&lt;/h3>
&lt;p>The tag router enables traffic control based on tags. The following is the example code.&lt;/p>
&lt;p>Server side:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>ins, err &lt;span style="color:#719e07">:=&lt;/span> dubbo.&lt;span style="color:#268bd2">NewInstance&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		dubbo.&lt;span style="color:#268bd2">WithName&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;tag-server&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		dubbo.&lt;span style="color:#268bd2">WithTag&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;test-Tag&amp;#34;&lt;/span>), &lt;span style="color:#586e75">// set application&amp;#39;s tag
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>		dubbo.&lt;span style="color:#268bd2">WithRegistry&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>			registry.&lt;span style="color:#268bd2">WithNacos&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>			registry.&lt;span style="color:#268bd2">WithAddress&lt;/span>(RegistryAddress),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		dubbo.&lt;span style="color:#268bd2">WithProtocol&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>			protocol.&lt;span style="color:#268bd2">WithTriple&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>			protocol.&lt;span style="color:#268bd2">WithPort&lt;/span>(&lt;span style="color:#2aa198">20000&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Parameters:&lt;/p></description></item><item><title>Traditional deployment architecture based on Zookeeper and Nacos for deploying Dubbo applications in a virtual machine environment</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/deploy/deploy-on-vm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/deploy/deploy-on-vm/</guid><description>&lt;p>The following diagram illustrates a typical Dubbo microservice deployment architecture using Nacos and Zookeeper as the registration center.&lt;/p>
&lt;img src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes.png" style="max-width:650px;height:auto;" />
&lt;h2 id="install-nacos">Install Nacos&lt;/h2>
&lt;p>Please refer to the following documentation for how to &lt;code>install Nacos&lt;/code> locally.&lt;/p>
&lt;h2 id="deploy-application">Deploy Application&lt;/h2>
&lt;p>We will continue to use the project in &lt;code>Quick Start&lt;/code> as an example to demonstrate the detailed steps for application packaging and deployment.&lt;/p>
&lt;p>Clone the sample project locally:&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>$ git clone -b master --depth &lt;span style="color:#2aa198">1&lt;/span> https://github.com/apache/dubbo-samples
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Switch to the sample directory:&lt;/p></description></item><item><title>Triple Protocol Design Philosophy and Specification</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple-spec/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple-spec/</guid><description>&lt;h2 id="1-protocol-design-philosophy">1 Protocol Design Philosophy&lt;/h2>
&lt;p>The design of the Triple protocol references various protocol patterns such as gRPC, gRPC-Web, and general HTTP, absorbing the characteristics and advantages of each, ultimately designing a protocol that is easy to access via browsers, fully compatible with gRPC, and supports Streaming communication. Triple can run simultaneously over HTTP/1 and HTTP/2 protocols.&lt;/p>
&lt;p>The design goals of the Triple protocol are as follows:&lt;/p>
&lt;ul>
&lt;li>Triple is designed to be a human and development-friendly HTTP-based protocol, especially for unary RPC requests.&lt;/li>
&lt;li>Fully compatible with HTTP/2-based gRPC protocol, so the Dubbo Triple protocol implementation can 100% interact with the gRPC ecosystem.&lt;/li>
&lt;li>Only relies on standard, widely used HTTP features, enabling direct reliance on official standard HTTP network libraries in the implementation layer.&lt;/li>
&lt;/ul>
&lt;p>When used with Protocol Buffers (i.e., using IDL to define services), the Triple protocol supports unary, client-streaming, server-streaming, and bi-streaming RPC communication modes, supporting both binary Protobuf and JSON data format payloads. The Triple implementation does not bind to Protocol Buffers; for instance, you can use Java interface to define services, and the Triple protocol has extended Content-Type support for this model.&lt;/p></description></item><item><title>Upgrade from 2.x to 3.x</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/2.x-to-3.x-compatibility-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/2.x-to-3.x-compatibility-guide/</guid><description>&lt;h2 id="benefits-of-upgrading-to-dubbo-3x">Benefits of Upgrading to Dubbo 3.X&lt;/h2>
&lt;p>Dubbo 3 maintains the classic architecture of 2.x, focusing on inter-process communication for microservices and providing rich service governance capabilities (such as address discovery, traffic management, etc.) to better manage microservice clusters. The upgrade of Dubbo3 comprehensively enhances stability, performance, scalability, and usability throughout core Dubbo features.&lt;/p>
&lt;p>&lt;img alt="architecture-1" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/concepts/architecture-1.png">&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Universal communication protocol.&lt;/strong> The new RPC protocol discards proprietary protocol stacks in favor of the more universal HTTP/2, leveraging the standardized features of the HTTP protocol to address issues like traffic generality and penetration, better adapting to scenarios like front-end and back-end interfacing and gateway proxies; it supports Stream communication modes, achieving greater throughput for clusters while meeting different business communication model demands.&lt;/li>
&lt;li>&lt;strong>Highly scalable for millions of cluster instances.&lt;/strong> With the promotion of microservice practices, the scale of microservice cluster instances is constantly expanding, benefiting from the lightweight nature and horizontal scalability of microservices, but also placing a burden on overall cluster capacity, especially for centralized service governance components; Dubbo 3 needs to address resource bottleneck issues arising from instance scale expansion, achieving truly infinite horizontal scalability.&lt;/li>
&lt;li>&lt;strong>Full embrace of cloud-native.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="new-features-in-dubbo-30">New Features in Dubbo 3.0&lt;/h2>
&lt;p>New features in Dubbo 3.0 include:&lt;/p></description></item><item><title>Upgrading from Dubbo2 to Dubbo3 (covering versions such as 2.5.x, 2.6.x, 2.7.x)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration/</guid><description>&lt;p>Overall, the core capabilities after upgrading from Dubbo2 to Dubbo3 are compatible, and for over 90% of regular users (referring to users who have not made deep SPI extensions or source customizations), upgrading can be quite simple.&lt;/p>
&lt;h2 id="upgrading-from-27x-to-dubbo3">Upgrading from 2.7.x to Dubbo3&lt;/h2>
&lt;h3 id="step-1-upgrade-core-dependencies">Step 1: Upgrade Core Dependencies&lt;/h3>
&lt;p>First, add the BOM dependency management in the application:&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;dependencyManagement&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;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.dubbo&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>dubbo-dependencies-bom&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.3.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;type&amp;gt;&lt;/span>pom&lt;span style="color:#268bd2">&amp;lt;/type&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;scope&amp;gt;&lt;/span>import&lt;span style="color:#268bd2">&amp;lt;/scope&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;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/dependencyManagement&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you previously used the &lt;code>org.apache.dubbo:dubbo&lt;/code> dependency, please upgrade to the following version (if there are other Dubbo submodule dependencies in the project, upgrade their versions as well):&lt;/p></description></item><item><title>Version Information</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/versions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/versions/</guid><description>&lt;h2 id="recommended-version">Recommended Version&lt;/h2>
&lt;p>The current website documentation is applicable to the following versions. If you are using a different version of
dubbo-go, please refer to the corresponding historical version documents.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: center">Go&lt;/th>
 &lt;th style="text-align: left">Dubbo-go&lt;/th>
 &lt;th style="text-align: left">protoc-gen-go-triple&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: center">1.20&lt;/td>
 &lt;td style="text-align: left">v3.2.0-rc1 (current documentation)&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/" target="_blank">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Current latest stable version, recommended for use&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="historical-versions">Historical Versions&lt;/h2>
&lt;h3 id="3x">3.x&lt;/h3>
&lt;p>View documentation for versions 3.1.x and earlier:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: center">Go&lt;/th>
 &lt;th style="text-align: left">Dubbo-go&lt;/th>
 &lt;th style="text-align: left">protoc-gen-go-triple&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.1.1&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Please refer to the README for instructions on generating service stub code compatible with older versions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.1.0&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Please refer to the README for instructions on generating service stub code compatible with older versions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.4&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Please refer to the README for instructions on generating service stub code compatible with older versions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.3&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Please refer to the README for instructions on generating service stub code compatible with older versions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.2&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Please refer to the README for instructions on generating service stub code compatible with older versions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.1&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/protoc-gen-go-triple/">v3.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Please refer to the README for instructions on generating service stub code compatible with older versions&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.0&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/dubbogo-cli">v1.0.5&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.0-rc4-1&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/dubbogo-cli">v1.0.2&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">1.16&lt;/td>
 &lt;td style="text-align: left">v3.0.0-rc3&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/dubbogo/dubbogo-cli">v1.0.0&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="1x">1.x&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: center">Go&lt;/th>
 &lt;th style="text-align: left">Dubbo-go&lt;/th>
 &lt;th style="text-align: left">Triple&lt;/th>
 &lt;th style="text-align: left">protoc-gen-go-triple&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: center">&lt;/td>
 &lt;td style="text-align: left">v1.5.0&lt;/td>
 &lt;td style="text-align: left">v1.1.8&lt;/td>
 &lt;td style="text-align: left">v1.0.8&lt;/td>
 &lt;td style="text-align: left">No longer maintained, please upgrade to the latest 3.x version&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>Version Information</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/versions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/versions/</guid><description>&lt;p>We provide documentation for different versions of Dubbo Java implementations. You can select different version documents from the list below to view the maintenance status, component versions, upgrade notes, etc., for each version.&lt;/p>
&lt;h2 id="version-description">Version Description&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;min-width:120px">Dubbo Branch&lt;/span>&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;min-width:100px">Latest Version&lt;/span>&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;min-width:80px">JDK&lt;/span>&lt;/th>
 &lt;th style="text-align: left">Spring Boot&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;min-width:80px">Component Version&lt;/span>&lt;/th>
 &lt;th style="text-align: left">Details&lt;/th>
 &lt;th style="text-align: left">&lt;/th>
 &lt;th style="text-align: left">&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">3.3.x (Current Document)&lt;/td>
 &lt;td style="text-align: left">3.3.0&lt;/td>
 &lt;td style="text-align: left">8, 17, 21&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/#dubbo-spring-boot-starter">2.x、3.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo/blob/dubbo-3.3.0/dubbo-dependencies-bom/pom.xml#L91">Details&lt;/a>&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.2-to-3.3-compatibility-guide/">Version Change Log&lt;/a> &lt;br/>&lt;br/> - &lt;strong>Production Ready (Recommended, Long-term Maintenance)!&lt;/strong> Latest Triple protocol upgrade, built-in Metrics, Tracing, GraalVM support, etc.&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://dubbo-202409.staged.apache.org/zh-cn/overview/mannual/java-sdk/">3.2.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">3.2.10&lt;/td>
 &lt;td style="text-align: left">8, 17&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/#dubbo-spring-boot-starter">2.x、3.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo/blob/dubbo-3.2.10/dubbo-dependencies-bom/pom.xml#L91">Details&lt;/a>&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.1-to-3.2-compatibility-guide/">Version Change Log&lt;/a> &lt;br/>&lt;br/> - Production Ready (Long-term Maintenance)!&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://dubbo-202409.staged.apache.org/zh-cn/overview/mannual/java-sdk/">3.1.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">3.1.11&lt;/td>
 &lt;td style="text-align: left">8, 17&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/#dubbo-spring-boot-starter">2.x、3.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo/blob/dubbo-3.1.11/dubbo-dependencies-bom/pom.xml#L91">Details&lt;/a>&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.0-to-3.1-compatibility-guide/">Version Change Log&lt;/a> &lt;br/>&lt;br/> - Security fixes only!&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://dubbo-202409.staged.apache.org/zh-cn/docs/">3.0.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">3.0.15&lt;/td>
 &lt;td style="text-align: left">8&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/#dubbo-spring-boot-starter">2.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo/blob/dubbo-3.0.15/dubbo-dependencies-bom/pom.xml#L91">Details&lt;/a>&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/2.x-to-3.x-compatibility-guide/">Version Change Log&lt;/a> &lt;br/>&lt;br/> - No longer maintained!&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://dubbo-202409.staged.apache.org/zh-cn/docsv2.7/">2.7.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">2.7.23&lt;/td>
 &lt;td style="text-align: left">8&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/#dubbo-spring-boot-starter">2.x&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://raw.githubusercontent.com/apache/dubbo/dubbo-2.7.23/dubbo-dependencies-bom/pom.xml">Details&lt;/a>&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration/">Learn how to upgrade to Dubbo3&lt;/a> &lt;br/>&lt;br/> - No longer maintained!&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">2.6.x&lt;/td>
 &lt;td style="text-align: left">2.6.20&lt;/td>
 &lt;td style="text-align: left">6, 7&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">_&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration/">Learn how to upgrade to Dubbo3&lt;/a> &lt;br/>&lt;br/> - No longer maintained!&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">2.5.x&lt;/td>
 &lt;td style="text-align: left">2.5.10&lt;/td>
 &lt;td style="text-align: left">6, 7&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">- &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration/">Learn how to upgrade to Dubbo3&lt;/a> &lt;br/>&lt;br/> - No longer maintained!&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>What is Pixiu</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/overview/what-is-pixiu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/overview/what-is-pixiu/</guid><description>&lt;h3 id="pixiu-overview">Pixiu Overview&lt;/h3>
&lt;p>Pixiu is an open-source API gateway for the Dubbo ecosystem and a language solution for accessing the Dubbo cluster. As an API gateway, Pixiu can receive external network requests, convert them into Dubbo and other protocol requests, and forward them to the backend cluster. As a Sidecar, Pixiu aims to replace proxy services registered to the Dubbo cluster, providing a faster solution for multi-language services to connect to the Dubbo cluster.&lt;/p></description></item><item><title>如何成为 Dubbo Committer</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/become-a-committer_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/become-a-committer_dev/</guid><description>&lt;p>每个人都可以成为 Apache 项目的贡献者。作为一个贡献者只是意味着你对项目感兴趣并以某种方式做出贡献，从提出合理的问题（这些问题记录了项目并向开发人员提供反馈）到提供新的特性作为补丁。&lt;/p>
&lt;p>如果你成为对一个项目有价值的贡献者，你有可能被邀请成为一个 committer。committer 是 ASF（Apache软件基金会）中用来表示提交特定项目的人的术语。它给你带来对项目仓库和资源写的权限。&lt;/p>
&lt;p>在 Dubbo 社区，如果一个 committer 获得大量的优秀成绩，就可以被邀请加入项目管理委员会（PMC）。&lt;/p>
&lt;p>当您不熟悉ASF使用的开源的开发过程时，有时难以理解的一点，就是我们更重视社区而不是代码。一个强大而健康的社区将受到尊重，成为一个有趣和有益的地方。更重要的是，一个多元化和健康的社区可以长时间的持续支持代码，即使个别公司在这个领域来来往往，也是如此。&lt;/p>
&lt;p>更多详细信息可以在&lt;a href="https://community.apache.org/contributors/">这里&lt;/a>找到。&lt;/p>
&lt;h3 id="我可以贡献什么">我可以贡献什么？&lt;/h3>
&lt;p>请参阅&lt;a href="../new-contributor-guide_dev/">新的贡献者指南&lt;/a>。&lt;/p></description></item><item><title>Apache 提交者注册流程</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/new-committer-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/new-committer-guide_dev/</guid><description>&lt;h2 id="一apache-提交者的产生">一、Apache 提交者的产生&lt;/h2>
&lt;h3 id="项目孵化初始化提交者">项目孵化初始化提交者&lt;/h3>
&lt;p>项目孵化阶段，在孵化项目提案中，会有初始化提交者列表这一选项。确认你是初始化提交者的一员。项目在 apache 孵化器社区投票通过后，提交者可以开始准备注册账户了。可以参看&lt;a href="https://cwiki.apache.org/confluence/display/incubator">孵化器 wiki&lt;/a>&lt;/p>
&lt;h3 id="活跃的贡献者被选举为提交者">活跃的贡献者被选举为提交者&lt;/h3>
&lt;p>在后期的开发过程中，活跃的贡献者可以被选举为提交者。见&lt;a href="https://www.apache.org/dev/new-committers-guide.html#becoming-a-committer">如何成为 committer&lt;/a>&lt;/p>
&lt;h2 id="二个人开发者提交-icla">二、个人开发者提交 ICLA&lt;/h2>
&lt;h3 id="1选择-apache-id">1、选择 apache id&lt;/h3>
&lt;p>在&lt;a href="http://people.apache.org/committer-index.html"> apache 提交者列表页&lt;/a>查看已经注册过的 apache id，&lt;/p>
&lt;h3 id="2个人提交者授权协议icla">2、个人提交者授权协议（ICLA）：&lt;/h3>
&lt;p>下载&lt;a href="https://www.apache.org/licenses/icla.pdf"> ICLA 模板&lt;/a>，查找可用的 id。将 icla.pdf 个人信息填写正确后打印,签名、扫描、并当做附件发送邮件给秘书 &lt;a href="mailto:secretary@apache.org">secretary@apache.org&lt;/a>，秘书会帮忙创建 apache 用户 id。同时会创建一个 &lt;a href="mailto:your_id@apache.org">your_id@apache.org&lt;/a> 的邮箱，可以在&lt;a href="http://people.apache.org/committer-index.html"> apache 提交者列表页&lt;/a>查看查找用户是否已经创建。&lt;/p>
&lt;h3 id="3导师帮助提交用户id创建请求">3、导师帮助提交用户id创建请求&lt;/h3>
&lt;p>导师将帮助提交 apache 账户创建请求给 root 邮件组，会有人帮助建立 id。一般需要2天时间账户会建立，请等待并在&lt;a href="http://people.apache.org/committer-index.html"> apache 提交者列表页&lt;/a>查看查找用户是否已经创建。&lt;/p>
&lt;h2 id="三加入apache开发者组">三、加入apache开发者组&lt;/h2>
&lt;ol>
&lt;li>登陆 &lt;a href="https://id.apache.org/">Apache 账户工具&lt;/a>，在登陆页面点击&amp;quot;忘记密码&amp;quot;设置始化密码，会有一封密码重置邮件发送到 forward 邮箱(在孵化项目提案中提交的开发者邮件)&lt;/li>
&lt;li>关于 apache 邮箱：apache.org 邮箱并没有自己的邮件内容存储服务器。它需要借用其他邮件提供商的邮件内容存储、分发功能。在很多投票环节是建议使用 apache 邮箱的。
这里就有一个问题，怎么在其它邮箱里面配置 apache.org 邮箱转发功能：
&lt;ul>
&lt;li>收件箱：收取发送到 apache.org 的邮件。这个在第一步配置好 Apache 账户工具的 forward 邮箱就可以用 forward 邮箱收取邮件了&lt;/li>
&lt;li>发件箱：将发出的邮件显示发件邮箱为 apache.org 邮箱。请参考：&lt;a href="https://infra.apache.org/committer-email.html">设置 apache 邮箱指南&lt;/a>和&lt;a href="https://support.google.com/mail/answer/22370"> gmail 邮箱设置方式&lt;/a>。 其他邮箱服务的设置方式不方便找到，gmail 的最方便，建议换成 gmail 邮箱(不是广告)。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>修改编辑页面的 homepage url，&lt;a href="http://people.apache.org/committer-index.html">apache 提交者列表页&lt;/a>中你的账户能加主页链接。&lt;/li>
&lt;li>修改编辑页面的 github 账户(username)，提交确认后两个小时内会有邮件邀请你加入 github.com/apache-committers 组。这期间可以阅读&lt;a href="http://www.apache.org/foundation/how-it-works.html#developers"> ASF 工作方式&lt;/a>以对 ASF 开发做一些基本了解。&lt;/li>
&lt;/ol>
&lt;h2 id="四提交者获得对项目的写权限">四、提交者获得对项目的写权限&lt;/h2>
&lt;p>&lt;a href="https://gitbox.apache.org/setup/">GitBox 账户链接工具&lt;/a>的操作&lt;/p></description></item><item><title>Use Apache APISIX to Proxy Dubbo Services (Triple Protocol)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/22/use-apache-apisix-to-proxy-dubbo-services-triple-protocol/</link><pubDate>Mon, 22 Apr 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/22/use-apache-apisix-to-proxy-dubbo-services-triple-protocol/</guid><description>&lt;p>For a description of how to proxy triple protocol services with a gateway, please refer to the section on &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/triple/">HTTP Gateway Access&lt;/a>.&lt;/p>
&lt;p>This article demonstrates how to use the combination of &lt;code>Apache APISIX + triple protocol + Nacos registry&lt;/code> to proxy Dubbo services.&lt;/p>
&lt;h2 id="sample-application-description">Sample Application Description&lt;/h2>
&lt;p>The complete source code and deployment resource files for this example can be found at &lt;a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-triple">dubbo-samples-gateway-triple-apisix&lt;/a>, with the architecture diagram as follows:&lt;/p>
&lt;img style="max-width:800px;height:auto;" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/gateway/apisix-nacos-dubbo.png"/>
&lt;p>In this example, a triple service &lt;code>org.apache.dubbo.samples.gateway.apisix.DemoService&lt;/code> has been defined and published, with the interface defined as:&lt;/p></description></item><item><title>Industrial and Commercial Bank of China Dubbo3 Application-Level Service Discovery Practice</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/industrial-and-commercial-bank-of-china-dubbo3-application-level-service-discovery-practice/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/industrial-and-commercial-bank-of-china-dubbo3-application-level-service-discovery-practice/</guid><description>&lt;h3 id="problem-analysis">Problem Analysis&lt;/h3>
&lt;p>The following is a classic diagram of Dubbo&amp;rsquo;s operating principle, where service providers and consumers coordinate to achieve automatic address discovery through the registration center.&lt;/p>
&lt;p>&lt;img alt="icbc-analyze" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/icbc/icbc-analyze.png">&lt;/p>
&lt;p>The main bottleneck faced by the Industrial and Commercial Bank of China is at the registration center and service consumer end; the number of interface-level addresses has reached a scale of hundreds of millions. On one hand, storage capacity has reached its limits, and on the other hand, push efficiency has significantly declined. At the consumer end, the resident memory of the Dubbo2 framework has exceeded 40%, and each address push brings high resource consumption rates such as CPU, affecting normal business calls.&lt;/p></description></item><item><title>0-2 - Illegal Property Value</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/2/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>This prompt indicates that the value configured by the user does not match the data type required by the attribute itself. For example, the &lt;code>dubbo.consumer.threads&lt;/code> property can only accept numeric values, but the value entered by the user includes letters.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Reference Manual&lt;/a> to find the erroneous configuration item, check the specified type of that item, and verify if there is any type inconsistency.&lt;/p></description></item><item><title>2-2 - No Available Provider (Address Not Found)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/2/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The Provider service is not started, or the registration center (such as ZooKeeper, Nacos, Consul) is down.&lt;/li>
&lt;li>There is an error in the Dubbo service configuration; the service name, group (default is Dubbo), and version must all be correct.&lt;/li>
&lt;li>The accessed environment is incorrect: typically, we have multiple environments such as development, testing, and production. Sometimes the published service is in the testing environment, but the access call is made from the development environment.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Access the Ops system of the registration center to check if there is a provider list for the corresponding service; simultaneously check the logs of the server where the caller application is located (generally, each registration service&amp;rsquo;s client will have corresponding log records) to see if there are records of address information being pushed/pulled.&lt;/li>
&lt;li>If not, it indicates that the publisher failed to release the service; check whether the publisher&amp;rsquo;s application started successfully.&lt;/li>
&lt;li>If there is a service, check the registration center connected by the caller application to confirm it matches the expected environment.&lt;/li>
&lt;li>If none of the above are problematic, check if routing filter rules have been configured, etc.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>This error code&amp;rsquo;s FAQ page references Kongming&amp;rsquo;s &lt;a href="https://github.com/StabilityMan/StabilityGuide/blob/master/docs/diagnosis/plugin/rpc/%E7%B3%BB%E7%BB%9F%E7%A8%B3%E5%AE%9A%E6%80%A7%E2%80%94%E2%80%94Dubbo%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95.md">“Common Dubbo Errors and Solutions”&lt;/a>.&lt;/p></description></item><item><title>3-2 - Failed to publish or push service</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/2/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>The registry center is unreachable.&lt;/li>
&lt;li>The registry center is unable to provide services externally.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the service network to the registry center is normal.&lt;/li>
&lt;li>Verify whether the registry center has started normally and can be connected using third-party tools.&lt;/li>
&lt;li>Confirm if there are any version compatibility issues between the service reference and the registry center&amp;rsquo;s version.&lt;/li>
&lt;/ol></description></item><item><title>4-2 - An Initial Error Occurred for the Serialization Optimizer</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/2/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>The current serialization configuration uses Kryo and FST.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/advanced-features-and-usage/performance/serialization/">Kryo and FST Serialization&lt;/a>&lt;/p></description></item><item><title>5-2 - Failure in Registering/Unregistering Shutdown Hook Methods</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/2/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Custom hook methods may have exceptions in their business logic.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether there are any runtime exceptions in the business logic of the custom hook methods.&lt;/p></description></item><item><title>6-2 - Client Timeout</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/2/</guid><description>&lt;p>Timeout occurs when the caller is unable to receive a corresponding response within a specified time after sending the request.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The server is indeed processing slowly and cannot return results within the specified time, causing the caller to automatically return a timeout exception response to terminate the call.&lt;/li>
&lt;li>If the server responds quickly, but when the client is under heavy load, issues like requests being unable to be sent or responses getting stuck in the TCP Buffer can cause timeouts. This is because data sent from the server or requests from the client get queued at the system level, and if system load is high, the kernel time will increase, resulting in a timeout by the time the client receives the value.&lt;/li>
&lt;li>Usually, this is due to slow business processing. You can execute &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> on the service provider&amp;rsquo;s machine to analyze where the threads are stuck, identifying the cause of slowness. If performance cannot be optimized, consider increasing the timeout threshold.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Both sides may have GC occurring. Check the GC logs on both the server and client. Prolonged GC can lead to timeouts. The occurrence of a timeout likely indicates resource bottlenecks (CPU, memory, or network) on either the caller or server; thus, it’s necessary to check for GC jitter, among other issues.&lt;/li>
&lt;li>Check the network quality of the server, such as retransmission rates to rule out network issues.&lt;/li>
&lt;li>Utilize link tracing analysis services (like Alibaba&amp;rsquo;s &lt;a href="https://help.aliyun.com/document_detail/63796.html">ARMS&lt;/a>, open-source implementations of &lt;a href="https://github.com/opentracing/opentracing-java">OpenTracing&lt;/a>, &lt;a href="https://github.com/openzipkin/zipkin">Zipkin&lt;/a>, &lt;a href="https://github.com/apache/skywalking">SkyWalking&lt;/a>, etc.) to analyze the timing of each point.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>This error code&amp;rsquo;s FAQ page references Kong Ming&amp;rsquo;s article &lt;a href="https://github.com/StabilityMan/StabilityGuide/blob/master/docs/diagnosis/plugin/rpc/%E7%B3%BB%E7%BB%9F%E7%A8%B3%E5%AE%9A%E6%80%A7%E2%80%94%E2%80%94Dubbo%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95.md">“Common Errors and Solutions in Dubbo”&lt;/a>.&lt;br>
The cited article permits compilation under the &lt;a href="http://creativecommons.org/licenses/by/4.0/">CC-BY-4.0&lt;/a> license. Special thanks to the original author.&lt;/p></description></item><item><title>7-2 - QOS is enabled</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/2/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>QOS is enabled and is set to on by default.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Please refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/">QOS Operation Manual&lt;/a>.&lt;/p>
&lt;/blockquote></description></item><item><title>81-2 - ZK Destruction Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/2/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The current instance has been destroyed completely.&lt;br>
Network issues or disconnections.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can use some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to analyze the stack information for diagnosis.&lt;/p></description></item><item><title>99-1 - Program Interrupted</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/99/1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/99/1/</guid><description>&lt;p>An unknown error within Dubbo.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The program receives an interruption notification from the JVM level and is forced to stop blocking waits.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This exception usually occurs during the process of closing the thread pool or the application. Please check whether it impacts normal business operations. If there is no impact, it can be ignored; if there is an impact, please refer to the corresponding troubleshooting manual. For more troubleshooting ideas, you can refer to article &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/">99-0&lt;/a>.&lt;/p></description></item><item><title>Address not found exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/no-provider/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/no-provider/</guid><description>&lt;p>During the development and production deployment process, since Dubbo is a framework that requires service discovery for calls, it is easy to encounter &lt;code>No Provider&lt;/code> exceptions due to various objective reasons. This article aims to provide a systematic troubleshooting approach to help you quickly locate and resolve the issue when exceptions occur.&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>java.lang.IllegalStateException: Failed to check the status of the service org.apache.dubbo.samples.api.GreetingsService. No provider available for the service org.apache.dubbo.samples.api.GreetingsService from the url consumer://*** to the consumer 30.221.146.226 use dubbo version 3.2.0-beta.4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Exception in thread &amp;#34;main&amp;#34; org.apache.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for service org.apache.dubbo.samples.api.GreetingsService on consumer 30.221.146.226 use dubbo version 3.2.0-beta.4, please check status of providers(disabled, not registered or in blacklist).
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="summary-in-one-sentence">Summary in one sentence&lt;/h2>
&lt;p>When the service cannot be found, first check whether the service is fully developed and deployed, then corroborate whether it is registered in the registry, check the service side&amp;rsquo;s published status if registered, and consumer side&amp;rsquo;s subscription status if not registered. Any step along this way encountering issues will lead to exceptions.&lt;/p></description></item><item><title>Dynamically Adjust Service Timeout</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/timeout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/timeout/</guid><description>&lt;p>Dubbo provides the ability to dynamically adjust service timeout, allowing adjustments without restarting the application, which is very effective for temporarily resolving issues of invocation failure due to unstable upstream and downstream service dependencies.&lt;/p>
&lt;h2 id="before-you-start">Before You Start&lt;/h2>
&lt;ul>
&lt;li>Deploy the Shop mall project&lt;/li>
&lt;li>Deploy and open &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/architecture">Dubbo Admin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="task-details">Task Details&lt;/h2>
&lt;p>The mall project provides user information management services through &lt;code>org.apache.dubbo.samples.UserService&lt;/code>. Access &lt;code>http://localhost:8080/&lt;/code>, enter any username and password, and click &lt;code>Login&lt;/code> to log into the system.&lt;/p></description></item><item><title>API Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/api/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/api/api/</guid><description>&lt;p>As an RPC framework, Dubbo defines a complete set of API interfaces, allowing us to develop Dubbo applications based on the native API. For specific examples of using the native API to develop lightweight RPC and microservices applications, see the examples in &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/develop/api/">Tutorial - API Development Mode&lt;/a>. Its applicable scenarios fall into two categories:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Lightweight RPC Server &amp;amp; Client&lt;/strong>, typically used for simple remote call scenarios within applications, basic components, middleware, etc.&lt;/li>
&lt;li>&lt;strong>Microservice Applications&lt;/strong>, developing microservices directly using APIs without relying on Spring or Spring Boot; using APIs directly can also be useful for gateway or testing platform integration scenarios.&lt;/li>
&lt;/ul>
&lt;p>The current entry APIs primarily include &lt;code>Bootstrap&lt;/code>, &lt;code>ServiceConfig&lt;/code>, &lt;code>ReferenceConfig&lt;/code>, etc., which are used for Dubbo application development in different scenarios.&lt;/p></description></item><item><title>Basic Command Manual</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/command/</guid><description>&lt;p>The basic command functionality provides a set of fundamental commands.&lt;/p>
&lt;h3 id="help-command">help command&lt;/h3>
&lt;p>Display more commands&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>// List all commands
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;help
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>// List specific usage of a single command
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;help online
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+--------------+----------------------------------------------------------------------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| COMMAND NAME | online |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+--------------+----------------------------------------------------------------------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| EXAMPLE | online dubbo |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| | online xx.xx.xxx.service |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+--------------+----------------------------------------------------------------------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="version-command">version command&lt;/h3>
&lt;p>Display the version number of the currently running Dubbo&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;version
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo version &amp;#34;3.0.10-SNAPSHOT&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="quit-command">quit command&lt;/h3>
&lt;p>Exit the command state&lt;/p></description></item><item><title>New Contributor Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/new-contributor-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/new-contributor-guide_dev/</guid><description>&lt;p>This guide aims to provide guidance for newcomers preparing to contribute to Dubbo.&lt;/p>
&lt;h3 id="mailing-list-description">Mailing List Description&lt;/h3>
&lt;p>The mailing list is the official recommended discussion channel for Dubbo, where all topics related to Dubbo can be discussed. Please click &lt;a href="https://github.com/apache/dubbo/issues/1393">Issue&lt;/a> for more information about subscribing to the mailing list.&lt;/p>
&lt;p>To subscribe to the mailing lists below, please refer to the &lt;a href="../mailing-list-subscription-guide_dev">Mailing List Subscription Guide&lt;/a>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="mailto:dev@dubbo.apache.org">dev@dubbo.apache.org&lt;/a>: Development mailing list where you can ask any questions encountered while using or developing Dubbo.&lt;/li>
&lt;li>&lt;a href="mailto:commits@dubbo.apache.org">commits@dubbo.apache.org&lt;/a>: All commit content will be pushed to this mailing list. If you&amp;rsquo;re interested in Dubbo&amp;rsquo;s progress, you can subscribe to this mailing list.&lt;/li>
&lt;li>&lt;a href="mailto:issues@dubbo.apache.org">issues@dubbo.apache.org&lt;/a>: All &lt;a href="https://issues.apache.org/jira/projects/DUBBO/issues">JIRA Issues&lt;/a> and modification information will be pushed to this mailing list. The Dubbo community has decided to use GitHub Issues instead of JIRA Issues, so most Issues will be tracked by GitHub Issues. JIRA Issues are used to track ASF related issues.&lt;/li>
&lt;/ul>
&lt;h3 id="reporting-issues">Reporting Issues&lt;/h3>
&lt;ul>
&lt;li>For non-security issues, raise them directly in GitHub Issues, and also refer to the &lt;a href="https://github.com/apache/dubbo/blob/master/.github/ISSUE_TEMPLATE/dubbo-issue-report-template.md">Issue Template&lt;/a>.&lt;/li>
&lt;li>For security issues, please refer to &lt;a href="../reporting-security-issues_dev">“Reporting Vulnerabilities”&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h3 id="code-contribution-process">Code Contribution Process&lt;/h3>
&lt;p>This contribution process applies to all content in the Apache Dubbo community, including but not limited to dubbo (main repository), dubbo-admin, and dubbo-website.&lt;/p></description></item><item><title>Dubbo Framework's Built-in Concurrent Control Strategy</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/rate-limit/concurrency-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/rate-limit/concurrency-control/</guid><description>&lt;p>Dubbo has implemented a built-in concurrency control strategy through the Filter interceptor mechanism. It limits the number of concurrent requests from the same client to the same service, preventing malicious requests from overloading the server, ensuring service stability, and preventing excessive resource usage.&lt;/p>
&lt;ul>
&lt;li>Control the maximum concurrent requests for certain services to ensure the availability of resources for other services. Prevent system overload and ensure system stability.&lt;/li>
&lt;li>Allow for smoother service scaling when demand increases.&lt;/li>
&lt;li>Ensure service reliability and stability during peak usage times.&lt;/li>
&lt;/ul>


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

 This method requires users to accurately pre-assess the number of concurrent requests the system can handle, and accurately determining system capabilities is not an easy task. Therefore, Dubbo also provides an adaptive rate limiting mode, which automatically identifies system health based on system load and provides rate limiting protection. You can view the &lt;a href="../adaptive-concurrency-control">adaptive rate limiting mode documentation&lt;/a> here.

&lt;/div>

&lt;h2 id="rate-limiting-strategy-configuration">Rate Limiting Strategy Configuration&lt;/h2>
&lt;h3 id="limit-server-side-concurrent-execution-service-granularity">Limit Server-Side Concurrent Execution (Service Granularity)&lt;/h3>
&lt;p>Limit the concurrent execution (or occupied thread pool threads) for each method of &lt;code>com.foo.BarService&lt;/code> to a maximum of 10.&lt;/p></description></item><item><title>Call Interceptor Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/filter/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>The interception during the call process of service providers and consumers is mainly implemented based on this extension point. This interceptor is executed each time a remote method is invoked, so be mindful of its impact on performance.&lt;/p>
&lt;p>Convention:&lt;/p>
&lt;ul>
&lt;li>User-defined filters are executed after built-in filters by default.&lt;/li>
&lt;li>The special value &lt;code>default&lt;/code> indicates the position where the default extension point is inserted. For example: &lt;code>filter=&amp;quot;xxx,default,yyy&amp;quot;&lt;/code> means &lt;code>xxx&lt;/code> is before the default filter, and &lt;code>yyy&lt;/code> is after it.&lt;/li>
&lt;li>The special symbol &lt;code>-&lt;/code> indicates exclusion. For example: &lt;code>filter=&amp;quot;-foo1&amp;quot;&lt;/code> excludes the default extension point &lt;code>foo1&lt;/code>. For instance: &lt;code>filter=&amp;quot;-default&amp;quot;&lt;/code> excludes all default extension points.&lt;/li>
&lt;li>When filters are configured for both provider and service, all filters are accumulated rather than overridden. For example: &lt;code>&amp;lt;dubbo:provider filter=&amp;quot;xxx,yyy&amp;quot;/&amp;gt;&lt;/code> and &lt;code>&amp;lt;dubbo:service filter=&amp;quot;aaa,bbb&amp;quot; /&amp;gt;&lt;/code> means &lt;code>xxx&lt;/code>, &lt;code>yyy&lt;/code>, &lt;code>aaa&lt;/code>, &lt;code>bbb&lt;/code> will all be effective. To override, configure: &lt;code>&amp;lt;dubbo:service filter=&amp;quot;-xxx,-yyy,aaa,bbb&amp;quot; /&amp;gt;&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.Filter&lt;/code>&lt;/p></description></item><item><title>CLA Signing Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/cla-signing-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/cla-signing-guide_dev/</guid><description>&lt;p>You need to sign the Apache ICLA in the following cases:&lt;/p>
&lt;ul>
&lt;li>You have made significant contributions to Dubbo before it was donated to Apache, and you have not previously signed the Alibaba-CLA.&lt;/li>
&lt;li>You have made significant contributions to Dubbo, and you are invited to be a Dubbo committer, and have not previously signed the Alibaba-CLA or Apache ICLA.&lt;/li>
&lt;/ul>
&lt;h3 id="steps">Steps&lt;/h3>
&lt;ul>
&lt;li>Download this &lt;a href="https://www.apache.org/licenses/icla.pdf">pdf document&lt;/a>&lt;/li>
&lt;li>Edit the document, filling in the necessary information in the appropriate spaces&lt;/li>
&lt;li>Print it&lt;/li>
&lt;li>Sign the printed document&lt;/li>
&lt;li>Scan it&lt;/li>
&lt;li>Send an email to &lt;a href="mailto:secretary@apache.org">secretary@apache.org&lt;/a>, and cc &lt;a href="mailto:private@dubbo.apache.org">private@dubbo.apache.org&lt;/a>:
&lt;ul>
&lt;li>Email subject: &amp;ldquo;ICLA submission&amp;rdquo;&lt;/li>
&lt;li>Please include a link to your GitHub account in the body of the email&lt;/li>
&lt;li>Remember to attach your ICLA document to the email&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="instructions-for-filling-out-spaces">Instructions for Filling Out Spaces&lt;/h3>
&lt;ul>
&lt;li>Mailing address: Preferably in English format of the company address&lt;/li>
&lt;li>Preferred apache id(s): If you are invited to be a committer, you need to fill in an apache account; otherwise, it can be left blank&lt;/li>
&lt;li>Notify project: Dubbo (meaning that Dubbo is the project notifying you to sign the ICLA)&lt;/li>
&lt;/ul></description></item><item><title>CLA 签署向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/cla-signing-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/cla-signing-guide_dev/</guid><description>&lt;p>以下情况，需要您签署 Apache ICLA：&lt;/p>
&lt;ul>
&lt;li>在 Dubbo 被捐赠给 Apache 之前，您已经为 Dubbo 作出了很多贡献，并且您以前没有签署过 Alibaba-CLA。&lt;/li>
&lt;li>您已经为 Dubbo 作出了很多贡献，并且您被邀请成为 Dubbo 提交者，且之前没有签署过 Alibaba-CLA 或者 Apache ICLA。&lt;/li>
&lt;/ul>
&lt;h3 id="步骤">步骤&lt;/h3>
&lt;ul>
&lt;li>下载这篇 &lt;a href="https://www.apache.org/licenses/icla.pdf">pdf 文档&lt;/a>&lt;/li>
&lt;li>编辑该文档，在必要的空格处填上适当的内容&lt;/li>
&lt;li>打印&lt;/li>
&lt;li>在打印好的文件上签字&lt;/li>
&lt;li>扫描&lt;/li>
&lt;li>发送一封邮件到secretary@apache.org，并抄送给private@dubbo.apache.org：
&lt;ul>
&lt;li>邮件标题为“ICLA submission”&lt;/li>
&lt;li>请在邮件正文附上您的github账号链接&lt;/li>
&lt;li>请记得将您的ICLA文档放入邮件的附件里&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="空格填写必要说明">空格填写必要说明&lt;/h3>
&lt;ul>
&lt;li>Mailing address：首选英文格式的公司地址&lt;/li>
&lt;li>preferred apache id(s)：如果您被邀请成为一名提交者，那么需要您填写一个apache账号，否则，可以不填&lt;/li>
&lt;li>notify project：Dubbo（意思就是Dubbo就是通知您签署ICLA的项目）&lt;/li>
&lt;/ul></description></item><item><title>Code Architecture</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/code-architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/code-architecture/</guid><description>&lt;h2 id="overall-design">Overall Design&lt;/h2>
&lt;p>&lt;img alt="/dev-guide/images/dubbo-framework.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/dev/dubbo-framework.jpg">&lt;/p>
&lt;p>Legend explanation:&lt;/p>
&lt;ul>
&lt;li>The light blue background on the left side of the diagram represents the interfaces used by service consumers, the light green background on the right side represents the interfaces used by service providers, and the interfaces on the central axis are used by both parties.&lt;/li>
&lt;li>The diagram is divided into ten layers from bottom to top, with each layer being a one-way dependency. The black arrows on the right represent the dependency relationships between layers. Each layer can detach from the upper layer for reuse, where the Service and Config layers are APIs and the others are SPIs.&lt;/li>
&lt;li>The green small blocks represent extension interfaces, and the blue small blocks represent implementation classes. Only the implementation classes related to the inter-layer connections are shown in the diagram.&lt;/li>
&lt;li>The blue dashed lines represent the initialization process, i.e., the assembly chain during startup, the red solid lines represent the method invocation process, i.e., the runtime invocation chain, and the purple triangular arrows represent inheritance, where subclasses can be seen as the same node as their parent class. The text on the lines indicates the invoked methods.&lt;/li>
&lt;/ul>
&lt;h2 id="layer-descriptions">Layer Descriptions&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Config Layer&lt;/strong>: External configuration interface centered around &lt;code>ServiceConfig&lt;/code> and &lt;code>ReferenceConfig&lt;/code>, allowing direct initialization of configuration classes or generating configuration classes through Spring.&lt;/li>
&lt;li>&lt;strong>Proxy Layer&lt;/strong>: Transparent proxy for service interfaces, generating client Stubs and server Skeletons centered around &lt;code>ServiceProxy&lt;/code>, with the extension interface being &lt;code>ProxyFactory&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Registry Layer&lt;/strong>: Encapsulates the registration and discovery of service addresses, centered around service URLs, with extension interfaces &lt;code>RegistryFactory&lt;/code>, &lt;code>Registry&lt;/code>, &lt;code>RegistryService&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Cluster Layer&lt;/strong>: Encapsulates routing and load balancing for multiple providers and bridges to the registry, centered around &lt;code>Invoker&lt;/code>, with extension interfaces &lt;code>Cluster&lt;/code>, &lt;code>Directory&lt;/code>, &lt;code>Router&lt;/code>, &lt;code>LoadBalance&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Monitor Layer&lt;/strong>: Monitors RPC call counts and call durations, centered around &lt;code>Statistics&lt;/code>, with extension interfaces &lt;code>MonitorFactory&lt;/code>, &lt;code>Monitor&lt;/code>, &lt;code>MonitorService&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Protocol Layer&lt;/strong>: Encapsulates RPC calls, centered around &lt;code>Invocation&lt;/code> and &lt;code>Result&lt;/code>, with extension interfaces &lt;code>Protocol&lt;/code>, &lt;code>Invoker&lt;/code>, &lt;code>Exporter&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Exchange Layer&lt;/strong>: Encapsulates request-response patterns, synchronizing to asynchronous, centered around &lt;code>Request&lt;/code> and &lt;code>Response&lt;/code>, with extension interfaces &lt;code>Exchanger&lt;/code>, &lt;code>ExchangeChannel&lt;/code>, &lt;code>ExchangeClient&lt;/code>, &lt;code>ExchangeServer&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Transport Layer&lt;/strong>: Abstracts Mina and Netty into a unified interface, centered around &lt;code>Message&lt;/code>, with extension interfaces &lt;code>Channel&lt;/code>, &lt;code>Transporter&lt;/code>, &lt;code>Client&lt;/code>, &lt;code>Server&lt;/code>, &lt;code>Codec&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Serialize Layer&lt;/strong>: Reusable tools, with extension interfaces &lt;code>Serialization&lt;/code>, &lt;code>ObjectInput&lt;/code>, &lt;code>ObjectOutput&lt;/code>, &lt;code>ThreadPool&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="relationship-explanation">Relationship Explanation&lt;/h2>
&lt;ul>
&lt;li>In RPC, the Protocol is the core layer, meaning that as long as there is Protocol + Invoker + Exporter, non-transparent RPC calls can be completed, then applying Filters on the Invoker&amp;rsquo;s main process.&lt;/li>
&lt;li>The Consumer and Provider in the diagram are abstract concepts meant to help viewers understand which classes belong to the client and server side. The reason for not using Client and Server is that Dubbo employs Provider, Consumer, Registry, and Monitor to define logical topological nodes in many scenarios, maintaining a unified concept.&lt;/li>
&lt;li>Cluster is an external concept, meaning its purpose is to disguise multiple Invokers as a single Invoker, allowing others to focus only on the Protocol layer Invoker. Adding or removing Cluster will not affect other layers, as there is no need for Cluster with only one provider.&lt;/li>
&lt;li>The Proxy Layer encapsulates transparent proxying for all interfaces, and in other layers, it revolves around the Invoker. Only at the point of exposing for user use is Proxy used to convert Invoker into an interface or convert interface implementations into Invoker. This means removing the Proxy layer allows RPC to run, though it won&amp;rsquo;t be as transparent or seem as local as remote service calls.&lt;/li>
&lt;li>The Remoting implementation is the Dubbo protocol implementation. If you choose the RMI protocol, the entire Remoting will not be used. Remoting is internally divided into the Transport layer and the Exchange layer, where the Transport layer is responsible for one-way message transmission, abstracting Mina, Netty, and Grizzly, and it can also extend UDP transmission. The Exchange layer encapsulates Request-Response semantics on top of the Transport layer.&lt;/li>
&lt;li>The Registry and Monitor should not be counted as a layer but rather as independent nodes, drawn together for a global view in a layered manner.&lt;/li>
&lt;/ul>
&lt;h2 id="module-packaging">Module Packaging&lt;/h2>
&lt;p>&lt;img alt="/dev-guide/images/dubbo-modules.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/dev/dubbo-modules.jpg">&lt;/p></description></item><item><title>QoS Command List, Command Reference</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/qos-list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/qos-list/</guid><description>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:150px">QoS Command&lt;/span>&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:200px">Telnet Usage Example&lt;/span>&lt;/th>
 &lt;th style="text-align: left">&lt;span style="display:inline-block;width:200px">HTTP Usage Example&lt;/span>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">cd&lt;/td>
 &lt;td style="text-align: left">Set service context, all subsequent commands will target this service&lt;/td>
 &lt;td style="text-align: left">cd org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/cd?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">count&lt;/td>
 &lt;td style="text-align: left">Show service or method call count. Currently only supports dubbo protocol, does not support triple protocol; RpcStatus implementation depends on Active/Limit Filter&lt;/td>
 &lt;td style="text-align: left">count org.demo.DemoService &lt;br/>&lt;br/>count org.demo.DemoService methodName&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/count?service=org.demo.DemoService&amp;amp;method=methodName&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">disableDetailProfiler&lt;/td>
 &lt;td style="text-align: left">Disable RPC call profiler tool (fine-grained version)&lt;/td>
 &lt;td style="text-align: left">disableDetailProfiler&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/disableDetailProfiler&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">disableRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">Disable RPC request Router routing result tracking&lt;/td>
 &lt;td style="text-align: left">disableRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/disableRouterSnapshot&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">disableSimpleProfiler&lt;/td>
 &lt;td style="text-align: left">Disable RPC call profiler tool (coarse-grained version)&lt;/td>
 &lt;td style="text-align: left">disableSimpleProfiler&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/disableSimpleProfiler&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">enableDetailProfiler&lt;/td>
 &lt;td style="text-align: left">Enable RPC call profiler tool (fine-grained version)&lt;/td>
 &lt;td style="text-align: left">enableDetailProfiler&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/enableDetailProfiler&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">enableRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">Enable RPC request Router routing result tracking, helpful for tracking if routing rules execution meets expectations&lt;/td>
 &lt;td style="text-align: left">enableRouterSnapshot org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/enableRouterSnapshot?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">enableSimpleProfiler&lt;/td>
 &lt;td style="text-align: left">Enable RPC call profiler tool (coarse-grained version)&lt;/td>
 &lt;td style="text-align: left">enableSimpleProfiler&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/enableSimpleProfiler&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">getAddress&lt;/td>
 &lt;td style="text-align: left">View the effective IP address list of a service&lt;/td>
 &lt;td style="text-align: left">getAddress org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/getAddress?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">getConfig&lt;/td>
 &lt;td style="text-align: left">Dump the effective configuration of the current application&lt;/td>
 &lt;td style="text-align: left">getConfig&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/getConfig&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">getEnabledRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">View the list of services with &amp;ldquo;Enabled Router routing result tracking&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">getEnabledRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/getEnabledRouterSnapshot&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">getRecentRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">View the most recent 32 &amp;ldquo;Router routing result tracking&amp;rdquo; data&lt;/td>
 &lt;td style="text-align: left">getRecentRouterSnapshot&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/getRecentRouterSnapshot&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">gracefulShutdown&lt;/td>
 &lt;td style="text-align: left">Offline all services registered with the current IP instance from the registry; different from offline, this command will also inform all consumers to stop calling this instance through TCP connection. &lt;br/>&lt;br/>To restore, please execute online to put all services back online&lt;/td>
 &lt;td style="text-align: left">gracefulShutdown&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/gracefulShutdown&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">help&lt;/td>
 &lt;td style="text-align: left">Help command&lt;/td>
 &lt;td style="text-align: left">help&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/help&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">invoke&lt;/td>
 &lt;td style="text-align: left">Call a specific RPC service&lt;/td>
 &lt;td style="text-align: left">invoke org.demo.DemoService.methodName(1234, &amp;ldquo;abcd&amp;rdquo;, {&amp;ldquo;prop&amp;rdquo;:&amp;ldquo;value&amp;rdquo;})&lt;/td>
 &lt;td style="text-align: left">?&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">live&lt;/td>
 &lt;td style="text-align: left">Check if the current process/service is alive, can be configured as Kubernetes liveness&lt;/td>
 &lt;td style="text-align: left">live&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/live&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">loggerInfo&lt;/td>
 &lt;td style="text-align: left">View current log logger configuration&lt;/td>
 &lt;td style="text-align: left">loggerInfo&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/loggerInfo&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ls&lt;/td>
 &lt;td style="text-align: left">View the current list of all services&lt;/td>
 &lt;td style="text-align: left">ls&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/ls&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">metrics&lt;/td>
 &lt;td style="text-align: left">View metrics indicators; metrics statistics must be enabled to see data. What granularity?&lt;/td>
 &lt;td style="text-align: left">metrics&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/metrics&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">metrics_default&lt;/td>
 &lt;td style="text-align: left">View metrics indicators; metrics statistics must be enabled to see data. What granularity?&lt;/td>
 &lt;td style="text-align: left">metrics_default&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/metrics_default&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">offline&lt;/td>
 &lt;td style="text-align: left">Take one or more services offline from the registry (including application-level and interface-level addresses)&lt;/td>
 &lt;td style="text-align: left">offline &lt;br/>&lt;br/> offline org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/offline &lt;br/>&lt;br/> http://localhost:22222/offline?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">offlineApp&lt;/td>
 &lt;td style="text-align: left">Take one or more application-level services offline from the registry&lt;/td>
 &lt;td style="text-align: left">offlineApp &lt;br/>&lt;br/> offlineApp org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/offlineApp?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">offlineInterface&lt;/td>
 &lt;td style="text-align: left">Take one or more interface-level services offline from the registry&lt;/td>
 &lt;td style="text-align: left">offlineInterface &lt;br/>&lt;br/> offlineInterface org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/offlineInterface?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">online&lt;/td>
 &lt;td style="text-align: left">Register one or more services to the registry (including application-level and interface-level addresses)&lt;/td>
 &lt;td style="text-align: left">online &lt;br/>&lt;br/> online org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/online?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">onlineApp&lt;/td>
 &lt;td style="text-align: left">Register one or more application-level services to the registry&lt;/td>
 &lt;td style="text-align: left">onlineApp &lt;br/>&lt;br/> onlineApp org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/onlineApp?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">onlineInterface&lt;/td>
 &lt;td style="text-align: left">Register one or more interface-level services to the registry&lt;/td>
 &lt;td style="text-align: left">onlineInterface &lt;br/>&lt;br/> onlineInterface org.demo.DemoService&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/onlineInterface?service=org.demo.DemoService&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ps&lt;/td>
 &lt;td style="text-align: left">View current process information, including listening ports, etc.&lt;/td>
 &lt;td style="text-align: left">ps&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/ps&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">publishMetadata&lt;/td>
 &lt;td style="text-align: left">Publish or update current application Metadata data (can be used for manual updates of application-level service discovery metadata). publishMetadata 10 means delay of 10s for publishing. In versions before 3.3.0, the command was publish-metadata&lt;/td>
 &lt;td style="text-align: left">publishMetadata &lt;br/>&lt;br/> publishMetadata 10&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/publishMetadata&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">pwd&lt;/td>
 &lt;td style="text-align: left">View the current service context, used with cd&lt;/td>
 &lt;td style="text-align: left">pwd&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/pwd&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">quit&lt;/td>
 &lt;td style="text-align: left">Exit the current telnet command&lt;/td>
 &lt;td style="text-align: left">quit&lt;/td>
 &lt;td style="text-align: left">None&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ready&lt;/td>
 &lt;td style="text-align: left">Check if the current process/service is ready for external service, can be configured as Kubernetes readiness&lt;/td>
 &lt;td style="text-align: left">ready&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/ready&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">select&lt;/td>
 &lt;td style="text-align: left">Call method? What is the relationship with invoke?&lt;/td>
 &lt;td style="text-align: left">?&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/?&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">serializeCheckStatus&lt;/td>
 &lt;td style="text-align: left">Check the list of classes currently in the serialization whitelist&lt;/td>
 &lt;td style="text-align: left">serializeCheckStatus&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/serializeCheckStatus&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">serializeWarnedClasses&lt;/td>
 &lt;td style="text-align: left">Check the list of classes currently in the serialization warning list&lt;/td>
 &lt;td style="text-align: left">serializeWarnedClasses&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/serializeWarnedClasses&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">setProfilerWarnPercent&lt;/td>
 &lt;td style="text-align: left">Control serialization alarm frequency (only for classes in the warning list)&lt;/td>
 &lt;td style="text-align: left">setProfilerWarnPercent 0.75&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/setProfilerWarnPercent?k=0.75&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">shutdown&lt;/td>
 &lt;td style="text-align: left">Try to shut down the current Dubbo application (destroy all resources, cannot be recovered before restart)&lt;/td>
 &lt;td style="text-align: left">shutdown&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/shutdown&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">startup&lt;/td>
 &lt;td style="text-align: left">Check if the current process/service has started normally, can be configured as Kubernetes startup&lt;/td>
 &lt;td style="text-align: left">startup&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/startup&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">switchLogLevel&lt;/td>
 &lt;td style="text-align: left">Dynamically adjust log level&lt;/td>
 &lt;td style="text-align: left">switchLogLevel debug&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/switchLogLevel?k=debug&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">switchLogger&lt;/td>
 &lt;td style="text-align: left">Switch log logger component. Available logger components can be viewed through loggerInfo (please ensure the application has joined the relevant component dependencies before switching)&lt;/td>
 &lt;td style="text-align: left">switchLogger log4j2&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/switchLogger?k=log4j2&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">version&lt;/td>
 &lt;td style="text-align: left">View the current Dubbo framework version in use&lt;/td>
 &lt;td style="text-align: left">version&lt;/td>
 &lt;td style="text-align: left">http://localhost:22222/version&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>configure the MCP</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/mcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/mcp/</guid><description>&lt;h2 id="mcp-model-context-protocol-gateway-configuration">MCP (Model Context Protocol) Gateway Configuration&lt;/h2>
&lt;p>This document explains how to configure the MCP (Model Context Protocol) filters within your gateway, enabling you to securely expose backend HTTP APIs as callable &amp;ldquo;tools&amp;rdquo; for AI Agents.&lt;/p>
&lt;h3 id="introduction">Introduction&lt;/h3>
&lt;p>The Model Context Protocol (MCP) serves as an intelligent bridge between AI Agents and your existing backend services. It dynamically translates a simple, unified protocol into standard HTTP requests, allowing agents to interact with your APIs as if they were native functions or tools. This approach simplifies agent development and provides a centralized point for security, control, and observability.&lt;/p></description></item><item><title>configure upstream endpoints</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/endpoint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/endpoint/</guid><description>&lt;h2 id="llm-gateway-endpoint-configuration">LLM Gateway Endpoint Configuration&lt;/h2>
&lt;p>This document explains how to configure upstream endpoints for Large Language Models (LLMs) within your gateway&amp;rsquo;s routing configuration.&lt;/p>
&lt;h3 id="endpoint-structure">Endpoint Structure&lt;/h3>
&lt;p>Each endpoint within a cluster is defined by an id and can contain an llm_meta block for custom behavior.clusters:&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;my_llm_cluster&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">endpoints&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">id&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;provider-1-main&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">domains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - api.deepseek.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">llm_meta&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># ... other LLM-specific configuration goes here ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">id&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;provider-2-fallback&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">domains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - api.openai.com/v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">llm_meta&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># ... other LLM-specific configuration goes here ...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="llm_meta-configuration-fields">&lt;code>llm_meta&lt;/code> Configuration Fields&lt;/h3>
&lt;p>The llm_meta block holds all the configuration specific to how the gateway should treat this LLM endpoint.&lt;/p></description></item><item><title>Consumer Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/reference/</guid><description>&lt;h2 id="basic-configuration">Basic Configuration&lt;/h2>
&lt;p>Consumer configurations need to be added to the &lt;code>sys.config&lt;/code> file under the &lt;code>dubboerl&lt;/code> application configuration.&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-erlang" data-lang="erlang">&lt;span style="display:flex;">&lt;span>{dubboerl,[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">%% other config ...
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	{consumer,[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		{&lt;span style="color:#719e07">&amp;lt;&amp;lt;&lt;/span>&lt;span style="color:#2aa198">&amp;#34;interface fullname&amp;#34;&lt;/span>&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span>,[&lt;span style="color:#268bd2">Option&lt;/span>]},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#586e75">%% eg:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>		{&lt;span style="color:#719e07">&amp;lt;&amp;lt;&lt;/span>&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.erlang.sample.service.facade.UserOperator&amp;#34;&lt;/span>&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span>,[]},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	]}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Option configuration items are to be added.&lt;/p></description></item><item><title>Core Concepts</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/what/core-concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/what/core-concepts/</guid><description/></item><item><title>Create a microservice application based on Spring Boot</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/</guid><description>&lt;p>The following document will guide you in creating a Dubbo application based on Spring Boot from scratch, configuring microservice foundational capabilities such as the Triple communication protocol and service discovery.&lt;/p>
&lt;h2 id="quickly-create-an-application">Quickly Create an Application&lt;/h2>
&lt;p>Create a Dubbo microservice application by accessing &lt;a href="https://start.dubbo.apache.org" target="_blank">start.dubbo.apache.org&lt;/a>. Add components as shown in the image below, and you can quickly create a Dubbo application in seconds. Download and unzip the generated sample application.&lt;/p>
&lt;img style="max-width:800px;height:auto;margin-bottom:10px;" alt="Project Structure Screenshot" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/quickstart/start.jpg"/>


&lt;div class="alert alert-info" role="alert">
&lt;h4 class="alert-heading">Directly Use the Official Sample&lt;/h4>

 &lt;p>You can also download the official pre-prepared sample project directly:&lt;/p></description></item><item><title>Custom Serialization</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/custom-serialization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/custom-serialization/</guid><description>&lt;p>See the full &lt;a href="https://github.com/apache/dubbo-python/tree/main/samples/serialization">example here&lt;/a>&lt;/p>
&lt;p>Python is a dynamic language, and its flexibility makes it challenging to design a universal serialization layer as seen in other languages. Therefore, we have removed the &amp;ldquo;serialization layer&amp;rdquo; and left it to the users to implement (since users know the formats of the data they will pass).&lt;/p>
&lt;p>Serialization typically consists of two parts: serialization and deserialization. We have defined the types for these functions, and custom serialization/deserialization functions must adhere to these &amp;ldquo;formats.&amp;rdquo;&lt;/p></description></item><item><title>Debug Reference Documentation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/mesh/mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/mesh/mesh/</guid><description>&lt;h2 id="prerequisite-environment-preparation">Prerequisite Environment Preparation&lt;/h2>
&lt;ul>
&lt;li>Docker environment&lt;/li>
&lt;li>Kubernetes environment (recommended docker desktop for its GUI, includes a small Kubernetes environment, the following demonstrations are based on docker desktop)&lt;/li>
&lt;li>Istio environment&lt;/li>
&lt;li>Dubbo samples code, master branch suffices&lt;/li>
&lt;li>Dubbo version &amp;gt;= 3.1.0
Setting Up Kubernetes Environment
Currently, Dubbo only supports Mesh deployment in a Kubernetes environment, so you need to set up a Kubernetes environment before running this example. (It is recommended to use docker desktop for setup, which can directly run a Kubernetes environment.)
&lt;a href="https://docs.docker.com/desktop/install/mac-install/">https://docs.docker.com/desktop/install/mac-install/&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="setting-up-kubernetes-environment">Setting Up Kubernetes Environment&lt;/h2>
&lt;p>Currently, Dubbo only supports Mesh deployment in a Kubernetes environment, so you need to set up a Kubernetes environment before running this example. (It is recommended to use docker desktop for setup, which can directly run a Kubernetes environment.)
&lt;a href="https://docs.docker.com/desktop/install/mac-install/">https://docs.docker.com/desktop/install/mac-install/&lt;/a>&lt;/p></description></item><item><title>Deploying Dubbo-go application in Istio environment</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/deploy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/deploy/</guid><description>&lt;p>In this chapter, we will quickly create a set of Dubbo-go Server and Client applications using the application template and deploy them in an Istio cluster; observe, debug, and verify service discovery and successful calls.&lt;/p>
&lt;h2 id="1-preparation">1. Preparation&lt;/h2>
&lt;ul>
&lt;li>The dubbo-go CLI tool and dependency tools are installed, grpc_cli (for local debugging if needed).&lt;/li>
&lt;li>The docker, helm, and kubectl environments are installed. (Arm machines must support docker buildx)&lt;/li>
&lt;li>The task &lt;a href="../istio/">Deployment of Istio Environment&lt;/a> is complete.&lt;/li>
&lt;/ul>
&lt;h2 id="2-developing-the-server-side-dubbo-go-application">2. Developing the Server-side Dubbo-go Application&lt;/h2>
&lt;h3 id="21-create-project-template-with-dubbogo-cli">2.1 Create Project Template with dubbogo-cli&lt;/h3>
&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-plain" data-lang="plain">&lt;span style="display:flex;">&lt;span>$ mkdir mesh-app-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ cd mesh-app-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ dubbogo-cli newApp . 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ tree .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── Makefile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── api
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── api.proto
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── build
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── Dockerfile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── chart
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── app
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ ├── Chart.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ ├── templates
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ │ ├── _helpers.tpl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ │ ├── deployment.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ │ ├── service.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ │ └── serviceaccount.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ └── values.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── nacos_env
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── Chart.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── templates
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ ├── _helpers.tpl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ ├── deployment.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ │ └── service.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── values.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── cmd
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── app.go
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── conf
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── dubbogo.yaml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── go.mod
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── go.sum
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└── pkg
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> └── service.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The generated project includes several directories:&lt;/p></description></item><item><title>Developing Microservices</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/quickstart/microservices/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/quickstart/microservices/</guid><description>&lt;p>This example demonstrates how to develop microservice applications using dubbo-go, adding core microservice capabilities such as service discovery, load balancing, and traffic control to the application.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>In this example, we will continue to use Protobuf to develop the microservice application. Please refer to &lt;a href="../rpc">Develop RPC Server and RPC Client&lt;/a> to learn how to install necessary plugins like protoc and protoc-gen-go-triple.&lt;/p>
&lt;h2 id="quick-run-example">Quick Run Example&lt;/h2>
&lt;h3 id="download-example-source-code">Download Example Source Code&lt;/h3>
&lt;p>We maintain a series of dubbo-go usage examples in the &lt;a href="https://github.com/apache/dubbo-go-samples/">apache/dubbo-go-samples&lt;/a> repository to help users quickly learn how to use dubbo-go.&lt;/p></description></item><item><title>Admin Service Query</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/search/</guid><description>&lt;p>The Admin supports a visual display of the status of the Dubbo microservice cluster, making it easy for users to globally grasp the distribution of applications, services, and instances in the cluster. Admin can also obtain more detailed information about a specific service through queries:&lt;/p>
&lt;ul>
&lt;li>Home page cluster dashboard, displaying the overall distribution of cluster applications, services, instances, and overall traffic conditions.&lt;/li>
&lt;li>Supports querying detailed information based on application name, service name (can include version &amp;amp; group), instance IP.&lt;/li>
&lt;li>Supports automatic completion of service name/application name.&lt;/li>
&lt;li>Supports viewing the details of a single service instance.&lt;/li>
&lt;/ul>
&lt;h2 id="home-dashboard">Home Dashboard&lt;/h2>
&lt;p>&lt;img alt="admin-dashboard" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/reference/admin/console/dashboard.png">&lt;/p></description></item><item><title>Accessing Dubbo Backend Services via Gateway for HTTP Traffic</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/dubbo/</guid><description>&lt;p>Since the dubbo protocol is a TCP-based binary private protocol, it is more suitable as an efficient RPC communication protocol between backend microservices, which makes the dubbo protocol less friendly for frontend traffic access. In the Dubbo framework, there are two ways to help developers address this issue:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Multi-protocol publishing [Recommended]&lt;/strong>, which exposes a REST-style HTTP access method for the dubbo protocol services. This architecture simplifies the structure, and common gateway products can support it.&lt;/li>
&lt;li>&lt;strong>Implementing &lt;code>http-&amp;gt;dubbo&lt;/code> protocol conversion via gateway&lt;/strong>, which requires converting the HTTP protocol into the dubbo protocol recognized by backend services, demanding the gateway to support the dubbo protocol.&lt;/li>
&lt;/ul>
&lt;h2 id="simultaneous-publishing-of-http-and-dubbo-protocols">Simultaneous Publishing of HTTP and Dubbo Protocols&lt;/h2>
&lt;p>&lt;strong>If we can make a service publish both dubbo and HTTP protocols simultaneously, backend calls can be based on the efficient dubbo binary protocol while browsers and other frontend facilities can access the same service via HTTP.&lt;/strong> The good news is that the Dubbo framework supports publishing multiple protocols for the same service and allows clients to access the service through the same port using different protocols, as shown below:&lt;/p></description></item><item><title>TCP-based RPC Communication Protocol - dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/dubbo/</guid><description>&lt;p>This example demonstrates how to develop services based on &lt;code>dubbo&lt;/code> protocol communication, and you can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-dubbo">full code of this example&lt;/a>:&lt;/p>


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

 To ensure compatibility with older versions, the default protocol for Dubbo 3.3.0 and earlier is &lt;code>dubbo&lt;/code>. However, if you are a new user considering using Dubbo to build a brand-new microservices system, we recommend that you explicitly configure your application to use the &lt;code>triple&lt;/code> protocol.

&lt;/div>

&lt;h2 id="running-the-example">Running the Example&lt;/h2>
&lt;p>You can follow these steps to try running the example source code corresponding to this document.&lt;/p></description></item><item><title>dubbo-pilot Control Plane Deployment</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/</guid><description>&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#target">1. Overall Goals&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#basic">2. Basic Process&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#detail">3. Detailed Steps&lt;/a>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#env">3.1 Environment Requirements&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#native_deploy">3.2 Local Deployment of Istio&lt;/a>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#nbuild">3.2.1 Compilation&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#ndeploy">3.2.2 Deployment &amp;amp; Debugging&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#docker_deploy">3.3 Container Deployment of Istio&lt;/a>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#dbuild">3.3.1 Image Building&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/dubbo-pilot/#ddeploy">3.3.2 Deployment&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="target">1 Overall Goals&lt;/h2>
&lt;ul>
&lt;li>Compile the control plane and build images&lt;/li>
&lt;li>Deploy using istioctl in a Kubernetes environment&lt;/li>
&lt;li>How to debug the control plane program&lt;/li>
&lt;/ul>
&lt;h2 id="basic">2 Basic Process&lt;/h2>
This example will demonstrate how to compile the dubbo-pilot control plane and how to deploy it using istioctl in a Kubernetes environment.
&lt;ol>
&lt;li>Start the control plane locally, and debug dubbo-pilot.&lt;/li>
&lt;li>Use istioctl for starting and debugging in the k8s environment.&lt;/li>
&lt;/ol>
&lt;h2 id="detail">3 Detailed Steps&lt;/h2>
&lt;h3 id="env">3.1 Environment Requirements&lt;/h3>
&lt;ul>
&lt;li>Golang&lt;/li>
&lt;li>Docker&lt;/li>
&lt;li>Minikube/Kind&lt;/li>
&lt;li>Kubectl&lt;/li>
&lt;li>Dlv&lt;/li>
&lt;/ul>
&lt;h3 id="native_deploy">3.2 Local Deployment&lt;/h3>
&lt;h4 id="nbuild">3.2.1 Compilation&lt;/h4>
&lt;ol>
&lt;li>Compile the docker-builder&lt;/li>
&lt;/ol>
&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-gdscript3" data-lang="gdscript3">&lt;span style="display:flex;">&lt;span>cd dubbo&lt;span style="color:#719e07">-&lt;/span>go&lt;span style="color:#719e07">-&lt;/span>pixiu&lt;span style="color:#719e07">/&lt;/span>tools&lt;span style="color:#719e07">/&lt;/span>docker&lt;span style="color:#719e07">-&lt;/span>builder &lt;span style="color:#719e07">&amp;amp;&amp;amp;&lt;/span> go install
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>docker&lt;span style="color:#719e07">-&lt;/span>builder &lt;span style="color:#719e07">-&lt;/span>h:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Builds Istio docker images
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Usage:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [flags]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Flags:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>architecures strings architectures to build (default [linux&lt;span style="color:#719e07">/&lt;/span>amd64])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>base&lt;span style="color:#719e07">-&lt;/span>version string base version to use (default &lt;span style="color:#2aa198">&amp;#34;latest&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>builder string type of builder to use&lt;span style="color:#719e07">.&lt;/span> options are crane &lt;span style="color:#719e07">or&lt;/span> docker (default &lt;span style="color:#2aa198">&amp;#34;docker&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">-&lt;/span>h, &lt;span style="color:#719e07">--&lt;/span>help help &lt;span style="color:#719e07">for&lt;/span> this command
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>hub strings docker hub(s) (default [localhost:&lt;span style="color:#2aa198">5000&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>istio&lt;span style="color:#719e07">-&lt;/span>version string istio version to use (default &lt;span style="color:#2aa198">&amp;#34;1.14-dev&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>kind&lt;span style="color:#719e07">-&lt;/span>&lt;span style="color:#b58900">load&lt;/span> kind cluster to &lt;span style="color:#b58900">load&lt;/span> into
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>no&lt;span style="color:#719e07">-&lt;/span>cache disable caching
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>no&lt;span style="color:#719e07">-&lt;/span>clobber &lt;span style="color:#719e07">do&lt;/span> &lt;span style="color:#719e07">not&lt;/span> allow pushing images that already exist
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>proxy&lt;span style="color:#719e07">-&lt;/span>version string proxy version to use (default &lt;span style="color:#2aa198">&amp;#34;7ae8e27f274b33dc2f4d83100aea5971ed6698d3&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>push push targets to registry
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>save save targets to tar&lt;span style="color:#719e07">.&lt;/span>gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>tag strings docker tag(s) (default [latest])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>targets strings targets to build (default [app,app_sidecar_centos_7,app_sidecar_debian_11,app_sidecar_ubuntu_jammy,app_sidecar_ubuntu_xenial,ext&lt;span style="color:#719e07">-&lt;/span>authz,install&lt;span style="color:#719e07">-&lt;/span>cni,istioctl,operator,pilot,proxyv2])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>variants strings variants to build (default [default])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">--&lt;/span>version show build version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Use docker-builder to automatically compile and build the image&lt;/li>
&lt;/ol>
&lt;p>Compile istioctl&lt;/p></description></item><item><title>Dubbo2 Protocol Specification</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/tcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/tcp/</guid><description>&lt;p>&lt;img alt="/dev-guide/images/dubbo_protocol_header.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/dev/dubbo_protocol_header.png">&lt;/p>
&lt;h2 id="protocol-specification">Protocol Specification&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Magic - Magic High &amp;amp; Magic Low (16 bits)&lt;/p>
&lt;p>Identifies the protocol version number, Dubbo Protocol: 0xdabb&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Req/Res (1 bit)&lt;/p>
&lt;p>Indicates whether it is a request or response. Request: 1; Response: 0.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>2 Way (1 bit)&lt;/p>
&lt;p>Only useful when Req/Res is 1 (request), marks whether a return value is expected from the server. Set to 1 if a return value from the server is needed.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Event (1 bit)&lt;/p></description></item><item><title>Filter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/filter/</guid><description>&lt;p>In the section &lt;a href="../../framework/filter/">RPC Framework - Filter Request Interception&lt;/a>, we learned about the working mechanism of Filters and some built-in Filter implementations provided by the Dubbo framework. In this article, we will learn how to extend custom filter implementations: a unified Filter processor that can handle and validate returned results, reducing disruptions to developers.&lt;/p>
&lt;p>The complete source code for this example can be found at &lt;a href="https://github.com/apache/dubbo-samples/blob/master/10-task/dubbo-samples-extensibility/">dubbo-samples-extensibility&lt;/a>. In addition to this example, many Filter implementations in the Dubbo core repository apache/dubbo and the extension library &lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-filter-extensions/">apache/dubbo-spi-extensions&lt;/a> can serve as reference implementations.&lt;/p></description></item><item><title>Generic Invocation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/generic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/generic/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Deprecation Warning&lt;/h4>

 dubbo-go generic invocation is only applicable to the dubbo2 protocol, not the triple protocol

&lt;/div>

&lt;p>Generic invocation is a special way of calling in Dubbo-Go that allows intermediary nodes to pass call information without interface information, commonly used in testing and gateway scenarios. Generic invocation supports both Dubbo and Triple protocols, but currently, the serialization scheme only supports Hessian.&lt;/p>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>For better understanding, this document introduces generic invocation with a gateway usage scenario. Let&amp;rsquo;s first consider a normal invocation (non-generic invocation). The diagram below includes two key roles: consumer and provider (hereinafter referred to as endpoint, representing either a consumer or a provider), each having a definition of the org.apache.dubbo.sample.User interface. Suppose the org.apache.dubbo.sample.User interface needs to be used in the calling behavior.&lt;/p></description></item><item><title>Grafana</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/grafana/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/grafana/</guid><description>&lt;p>Grafana is an open-source monitoring solution that can be used to configure visual dashboards for Dubbo, allowing you to monitor the health of your Dubbo cluster.&lt;/p>
&lt;h2 id="configuring-visual-dashboards">Configuring Visual Dashboards&lt;/h2>
&lt;p>Here are the default metrics dashboards provided by the Dubbo community. You can quickly use them after configuring the data source and importing directly. If the default dashboards do not meet your requirements, you can customize your Grafana dashboards.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://grafana.com/grafana/dashboards/18469">&lt;strong>Apache Dubbo Observability Dashboard:&lt;/strong>&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://grafana.com/grafana/dashboards/4701">&lt;strong>JVM (Micrometer) Dashboard:&lt;/strong>&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>You can quickly import Grafana monitoring dashboards in the following ways.&lt;/p></description></item><item><title>Hessian</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/hessian/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/hessian/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>Hessian serialization is a network protocol that supports dynamic typing, cross-language, and object-based transfer. The binary stream of Java object serialization can be used by other languages (such as C++, Python). Its features include:&lt;/p>
&lt;ol>
&lt;li>Self-describing serialization types. It does not rely on external description files or interface definitions and uses one byte to represent common basic types, significantly shortening the binary stream.&lt;/li>
&lt;li>Language-independent, supports scripting languages.&lt;/li>
&lt;li>Simple protocol, more efficient than Java native serialization.&lt;/li>
&lt;li>Compared to Hessian1, Hessian2 adds compressed encoding, the size of its serialized binary stream is 50% of Java serialization, serialization time is 30% of Java serialization, and deserialization time is 20% of Java serialization.&lt;/li>
&lt;/ol>
&lt;h2 id="2-usage">2 Usage&lt;/h2>
&lt;p>In the Dubbo framework, when using the Dubbo communication protocol, Hessian2 is used as the default serialization.&lt;/p></description></item><item><title>Interoperability between Rust and Java</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/java-interoperability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/java-interoperability/</guid><description>&lt;h2 id="1-prerequisites">1 Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Install the &lt;a href="https://rustup.rs/">Rust&lt;/a> development environment&lt;/li>
&lt;li>Install the &lt;a href="https://grpc.io/docs/protoc-installation/">protoc&lt;/a> tool&lt;/li>
&lt;li>Install the Java development environment&lt;/li>
&lt;/ul>
&lt;h2 id="2-run-the-example-java-version-of-dubbo-provider">2 Run the Example Java Version of Dubbo Provider&lt;/h2>
&lt;p>The source code for the Java version of the Dubbo provider can be found at &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple">https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple&lt;/a>.&lt;/p>
&lt;p>Clone the source code, compile, and run the provider:&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#586e75"># clone the source code&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ git clone https://github.com/apache/dubbo-samples.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#b58900">cd&lt;/span> dubbo-samples/dubbo-samples-triple/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#586e75"># build&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ mvn clean compile package -DskipTests
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#586e75"># run the provider&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ java -Dprovider.port&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">8888&lt;/span> -jar ./target/dubbo-samples-triple-1.0-SNAPSHOT.jar
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># … omitted part of the logs&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Dubbo triple stub server started, &lt;span style="color:#268bd2">port&lt;/span>&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">8888&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;a href="https://github.com/apache/dubbo-samples/blob/master/3-extensions/protocol/dubbo-samples-triple/src/main/proto/greeter.proto">Interface definition on the Java side&lt;/a>&lt;/p></description></item><item><title>Introduction to Trie Prefix Tree</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/trie/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/trie/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/pixiu/trie-1.png">&lt;br />One of the cores of the gateway is the routing logic, which determines how a request needs to be processed and which downstream service it should be forwarded to.&lt;br />About 80% of routing requirements are URL-based. It is necessary to clearly describe how URLs or sets of URLs with certain characteristics correspond to a series of downstream processing strategies.&lt;/p>
&lt;p>For example, URLs starting with &amp;lsquo;/test/&lt;strong>&amp;rsquo; route to the testing environment cluster, while URLs starting with &amp;lsquo;/release/user/&lt;/strong>&amp;rsquo; route to the production environment&amp;rsquo;s user services cluster.&lt;/p></description></item><item><title>Java SDK Release Process</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/release-guide/java-sdk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/release-guide/java-sdk/</guid><description>&lt;h2 id="understanding-apache-release-content-and-process">Understanding Apache Release Content and Process&lt;/h2>
&lt;p>In general, the Source Release is the focus of Apache and is a necessary component of the release; the Binary Release is optional, and Dubbo can choose whether to publish binary packages to the Apache repository or to the Maven Central repository.&lt;/p>
&lt;p>Please refer to the following links for more information about ASF&amp;rsquo;s release guidelines:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.apache.org/dev/release-publishing">Apache Release Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/release.html">Apache Release Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="local-build-environment-preparation">Local Build Environment Preparation&lt;/h2>
&lt;p>Mainly includes preparation for signing tools and Maven repository authentication.&lt;/p></description></item><item><title>Deploying Dubbo Applications to Kubernetes Environments</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes/</guid><description>&lt;p>This model is not much different from traditional non-Kubernetes deployments. As shown in the picture below, Nacos or Zookeeper is still used as the registry, but Kubernetes is used as the underlying platform for application lifecycle scheduling.&lt;/p>
&lt;img src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes.png" style="max-width:650px;height:auto;" />
&lt;h2 id="install-nacos">Install Nacos&lt;/h2>
&lt;p>In Kubernetes mode, we recommend using &lt;code>dubboctl&lt;/code> to quickly install components like Nacos, dubbo-control-plane, prometheus, etc.:&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>$ dubboctl install --profile=demo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>

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

 &lt;ol>
&lt;li>Please refer to dubboctl for more details.&lt;/li>
&lt;li>You can also check out the official Nacos installation plan for Kubernetes clusters.&lt;/li>
&lt;/ol>


&lt;/div>

&lt;h2 id="deploy-application">Deploy Application&lt;/h2>
&lt;p>We still take the project in &lt;code>Quick Start&lt;/code> as an example to demonstrate the specific steps for packaging and deploying the application.&lt;/p></description></item><item><title>KVCache offload</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/kvcache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/kvcache/</guid><description>&lt;h2 id="ai-kvcache-filter-configuration">AI KVCache Filter Configuration&lt;/h2>
&lt;p>This document explains how to configure and use the &lt;code>dgp.filter.ai.kvcache&lt;/code> filter in Dubbo-go-Pixiu.&lt;/p>
&lt;p>The filter integrates with vLLM (&lt;code>/tokenize&lt;/code>) and LMCache controller APIs (&lt;code>/lookup&lt;/code>, &lt;code>/pin&lt;/code>, &lt;code>/compress&lt;/code>, &lt;code>/evict&lt;/code>) to:&lt;/p>
&lt;ul>
&lt;li>provide cache-aware routing hints&lt;/li>
&lt;li>trigger cache-management actions asynchronously&lt;/li>
&lt;li>keep the main request path non-blocking&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="architecture-and-request-flow">Architecture and Request Flow&lt;/h3>
&lt;p>&lt;code>dgp.filter.ai.kvcache&lt;/code> is an HTTP decode filter. A typical request flow is:&lt;/p>
&lt;ol>
&lt;li>Parse request body and extract &lt;code>model&lt;/code> and &lt;code>prompt&lt;/code> (or fallback from &lt;code>messages&lt;/code>).&lt;/li>
&lt;li>Record local hotness statistics (&lt;code>model + prompt&lt;/code>) in the token manager.&lt;/li>
&lt;li>Try cache-aware routing:
&lt;ul>
&lt;li>read token cache for prompt&lt;/li>
&lt;li>call LMCache &lt;code>/lookup&lt;/code>&lt;/li>
&lt;li>set a preferred endpoint hint in context (&lt;code>llm_preferred_endpoint_id&lt;/code>)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Start an async cache-management goroutine (best-effort):
&lt;ul>
&lt;li>call vLLM &lt;code>/tokenize&lt;/code>&lt;/li>
&lt;li>call LMCache &lt;code>/lookup&lt;/code> if needed&lt;/li>
&lt;li>execute strategy decisions (&lt;code>compress&lt;/code> / &lt;code>pin&lt;/code> / &lt;code>evict&lt;/code>)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Continue the filter chain immediately (main request is not blocked by cache management).&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h3 id="routing-contract-important">Routing Contract (Important)&lt;/h3>
&lt;p>Current cache-aware routing uses &lt;strong>instance id matching&lt;/strong>:&lt;/p></description></item><item><title>Log Overview</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/dev/log/</guid><description>&lt;h1 id="log">Log&lt;/h1>
&lt;p>How to view logs in dubbo-go-pixiu.&lt;/p>
&lt;h2 id="debug-log">DEBUG log&lt;/h2>
&lt;h3 id="dubbo-request-log">Dubbo request log&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>2020-11-17T11:31:05.716+0800 DEBUG dubbo/dubbo.go:150 &lt;span style="color:#719e07">[&lt;/span>dubbo-go-pixiu&lt;span style="color:#719e07">]&lt;/span> dubbo invoke, method:GetUserByName, types:&lt;span style="color:#719e07">[&lt;/span>java.lang.String&lt;span style="color:#719e07">]&lt;/span>, reqData:&lt;span style="color:#719e07">[&lt;/span>tiecheng&lt;span style="color:#719e07">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="dubbo-response-log">Dubbo response log&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>2020-11-17T11:31:05.718+0800 DEBUG dubbo/dubbo.go:160 &lt;span style="color:#719e07">[&lt;/span>dubbo-go-pixiu&lt;span style="color:#719e07">]&lt;/span> dubbo client resp:map&lt;span style="color:#719e07">[&lt;/span>age:88 iD:3213 name:tiecheng time:&amp;lt;nil&amp;gt;&lt;span style="color:#719e07">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Metrics Monitoring</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics/</guid><description>&lt;p>Dubbo supports the collection of runtime Metrics indicators and their integration with Prometheus and Grafana systems to achieve visual monitoring of microservice clusters. Below is a specific usage example. You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/metrics">complete source code of the example&lt;/a>.&lt;/p>
&lt;h2 id="contents">Contents&lt;/h2>
&lt;ul>
&lt;li>server/main.go - is the main definition of the service, handler and rpc server&lt;/li>
&lt;li>client/main.go - is the rpc client&lt;/li>
&lt;li>proto - contains the protobuf definition of the API&lt;/li>
&lt;/ul>
&lt;h2 id="how-to-run">How to run&lt;/h2>
&lt;h3 id="run-server">Run server&lt;/h3>
&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>go run ./go-server/cmd/main.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>test server work as expected:&lt;/p></description></item><item><title>Nacos</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/</guid><description>&lt;h2 id="1-preparations">1 Preparations&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/spring-boot/">Dubbo basic development steps&lt;/a>&lt;/li>
&lt;li>Refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/nacos/">Nacos&lt;/a> to start Nacos server&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>When Dubbo uses version &lt;code>3.0.0&lt;/code> or higher, Nacos version &lt;code>2.0.0&lt;/code> or higher is required.&lt;/p>
&lt;/blockquote>
&lt;h2 id="2-usage-instructions">2 Usage Instructions&lt;/h2>
&lt;p>The steps to integrate Dubbo with Nacos as a metadata center are very simple, mainly divided into &lt;code>adding Maven dependency&lt;/code> and &lt;code>configuring metadata center&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>If the metadata address (dubbo.metadata-report.address) is also not configured, the address of the registry will be used as the metadata center.&lt;/p></description></item><item><title>OTlp</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/otlp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/otlp/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>This example demonstrates how to use OpenTelemetry as a Tracer in a Dubbo project to report Trace information to the Otlp Collector, which then forwards it to Zipkin and Jagger. &lt;a href="https://github.com/conghuhu/dubbo-samples/tree/master/4-governance/dubbo-samples-tracing/dubbo-samples-spring-boot-tracing-otel-otlp">Code repository&lt;/a>&lt;/p>
&lt;p>It consists of three parts:&lt;/p>
&lt;ul>
&lt;li>dubbo-samples-spring-boot-tracing-otel-oltp-interface&lt;/li>
&lt;li>dubbo-samples-spring-boot-tracing-otel-oltp-provider&lt;/li>
&lt;li>dubbo-samples-spring-boot-tracing-otel-oltp-consumer&lt;/li>
&lt;/ul>
&lt;h2 id="case-architecture-diagram">Case Architecture Diagram&lt;/h2>
&lt;p>&lt;img alt="Case Architecture Diagram" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/observability/tracing/otlp/demo_arch.png">&lt;/p>
&lt;h2 id="quick-start">Quick Start&lt;/h2>
&lt;h3 id="install--start-otlp-collector">Install &amp;amp; Start Otlp Collector&lt;/h3>
&lt;p>Follow the &lt;a href="https://OpenTelemetry.io/docs/collector/getting-started/">OpenTelemetry Collector Quick Start&lt;/a> to start the otlp collector.&lt;/p>
&lt;h3 id="start-provider">Start Provider&lt;/h3>
&lt;p>Run &lt;code>org.apache.dubbo.springboot.demo.provider.ProviderApplication&lt;/code> directly from the IDE.&lt;/p></description></item><item><title>Permission Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/token-authorization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/token-authorization/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>Control permissions in the registry through token verification to decide whether to issue a token to consumers, which can prevent consumers from bypassing the registry to access providers. Moreover, the authorization method can be flexibly changed through the registry without modifying or upgrading the provider.&lt;/p>
&lt;p>&lt;img alt="/user-guide/images/dubbo-token.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/dubbo-token.jpg">&lt;/p>
&lt;h2 id="usage-scenarios">Usage Scenarios&lt;/h2>
&lt;p>To a certain extent, achieve trusted authentication between the client and server, preventing any client from gaining access and reducing the risk of security issues.&lt;/p></description></item><item><title>Pixiu Terminology</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/overview/terminology/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/overview/terminology/</guid><description>&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/pixiu/overview/terminology.png">&lt;/p>
&lt;h3 id="listener">Listener&lt;/h3>
&lt;p>Listener represents the ability to listen on a network port and can be configured with the protocol type, address, and port. It currently supports TCP, HTTP, HTTP2, and TRIPLE protocols.&lt;/p>
&lt;h3 id="network-filter">Network Filter&lt;/h3>
&lt;p>NetworkFilter interfaces directly with Listener and represents the handling of basic network requests, including raw protocol parsing and routing parsing.&lt;/p>
&lt;h3 id="http-filter--dubbo-filter">Http Filter &amp;amp; Dubbo Filter&lt;/h3>
&lt;p>Http Filter and Dubbo Filter can be viewed as secondary filters, providing common functions such as protocol conversion, traffic limiting, and authentication.&lt;/p></description></item><item><title>Querying Metrics Monitoring Indicators from Prometheus</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/prometheus/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>This article demonstrates how to deploy Prometheus in a Kubernetes environment and achieve monitoring data statistics and querying for the Dubbo cluster. You need to complete or possess the following:&lt;/p>
&lt;ul>
&lt;li>A local or remote Kubernetes cluster&lt;/li>
&lt;li>Ensure that &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/prometheus/#installation">Prometheus is correctly installed&lt;/a>&lt;/li>
&lt;li>Deploy the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-metrics-spring-boot">sample application&lt;/a> and enable metrics collection&lt;/li>
&lt;li>Use the Prometheus dashboard to query data metrics&lt;/li>
&lt;/ul>
&lt;h2 id="ensure-prometheus-is-running-correctly">Ensure Prometheus is Running Correctly&lt;/h2>
&lt;p>Verify that Prometheus has been correctly deployed&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>kubectl -n dubbo-system get svc prometheus-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>prometheus-server ClusterIP 10.109.160.254 &amp;lt;none&amp;gt; 9090/TCP 4m
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="deploy-sample">Deploy Sample&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>kubectl apply -f https://raw.githubusercontent.com/apache/dubbo-samples/master/4-governance/dubbo-samples-metrics-spring-boot/Deployment.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Wait for the sample application to run normally, and confirm the application status using the following command:&lt;/p></description></item><item><title>Developing Triple Communication Services Using Protobuf (IDL)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/</guid><description>&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="pom-dependency">POM dependency&lt;/h3>
&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;plugin&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.dubbo&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>dubbo-maven-plugin&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>${dubbo.version}&lt;span style="color:#268bd2">&amp;lt;/version&amp;gt;&lt;/span> &lt;span style="color:#586e75">&amp;lt;!-- Version 3.3.0 and above --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;configuration&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;outputDir&amp;gt;&lt;/span>build/generated/source/proto/main/java&lt;span style="color:#268bd2">&amp;lt;/outputDir&amp;gt;&lt;/span> &lt;span style="color:#586e75">&amp;lt;!-- Refer to the following text for configurable parameters --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;/configuration&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/plugin&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Configurable parameters&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: center">Parameter&lt;/th>
 &lt;th style="text-align: center">Required&lt;/th>
 &lt;th style="text-align: center">Default value&lt;/th>
 &lt;th style="text-align: center">Description&lt;/th>
 &lt;th style="text-align: center">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: center">outputDir&lt;/td>
 &lt;td style="text-align: center">false&lt;/td>
 &lt;td style="text-align: center">${project.build.directory}/generated-sources/protobuf/java&lt;/td>
 &lt;td style="text-align: center">Generated java file storage directory&lt;/td>
 &lt;td style="text-align: center">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">protoSourceDir&lt;/td>
 &lt;td style="text-align: center">false&lt;/td>
 &lt;td style="text-align: center">${basedir}/src/main/proto&lt;/td>
 &lt;td style="text-align: center">proto file directory&lt;/td>
 &lt;td style="text-align: center">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">protocArtifact&lt;/td>
 &lt;td style="text-align: center">false&lt;/td>
 &lt;td style="text-align: center">com.google.protobuf:protoc:3.25.0:exe:Operating System Name:Operating System Architecture&lt;/td>
 &lt;td style="text-align: center">proto compiler component&lt;/td>
 &lt;td style="text-align: center">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">protocVersion&lt;/td>
 &lt;td style="text-align: center">false&lt;/td>
 &lt;td style="text-align: center">3.25.0&lt;/td>
 &lt;td style="text-align: center">version of protobuf-java&lt;/td>
 &lt;td style="text-align: center">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">dubboGenerateType&lt;/td>
 &lt;td style="text-align: center">false&lt;/td>
 &lt;td style="text-align: center">tri&lt;/td>
 &lt;td style="text-align: center">Code generation type&lt;/td>
 &lt;td style="text-align: center">Can be filled with tri or tri_reactor&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="service-definition">Service Definition&lt;/h3>
&lt;p>Define the Greeter service using Protocol Buffers.&lt;/p></description></item><item><title>Implementation of the underlying serialization mechanism when developing triple services based on the Java interface model</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/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/en/overview/mannual/java-sdk/reference-manual/serialization/triple/wrapper/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>The triple protocol implemented by Dubbo offers better usability (not binding Protobuf), allowing developers to directly define services using Java interfaces. For users expecting a smooth upgrade, with no multilingual services, or unfamiliar with Protobuf, the Java interface approach is the simplest way to use triple.&lt;/p>
&lt;p>The following details the underlying serialization specifics in this protocol model: the framework will wrap the request and response using a built-in protobuf object, &lt;strong>which means the object will be serialized twice. The first serialization is done using the method specified by &lt;code>serialization=hessian&lt;/code>, and the second is to wrap the byte[] serialized in the first step with the protobuf wrapper before transmission&lt;/strong>.&lt;/p></description></item><item><title>Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/protocol/</guid><description>&lt;p>In the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/">Communication Protocol&lt;/a> chapter, we learned about several core RPC protocols built into Dubbo: &lt;code>dubbo&lt;/code>, &lt;code>rest&lt;/code>, and &lt;code>tri&lt;/code>, and how to use them. This article explains how to provide a custom RPC protocol implementation by extending the &lt;code>org.apache.dubbo.rpc.Protocol&lt;/code> SPI.&lt;/p>
&lt;p>There are two ways to create a private protocol: the first is to wrap the existing protocol and add specific business logic. The second is to completely customize a protocol. The former is simpler to implement and is widely used in &lt;code>dubbo&lt;/code>, such as &lt;code>ProtocolFilterWrapper&lt;/code>, &lt;code>QosProtocolWrapper&lt;/code>, and &lt;code>ProtocolListenerWrapper&lt;/code>. The latter is relatively complex but offers maximum flexibility; for instance, the built-in protocols &lt;code>dubbo&lt;/code> and &lt;code>triple&lt;/code> in the Dubbo framework fall under this implementation style.&lt;/p></description></item><item><title>Protocol Recognition</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/migration/deploy-on-k8s/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/migration/deploy-on-k8s/</guid><description>&lt;p>You can easily deploy Dubbo services to a Kubernetes cluster by following the steps below, with the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-kubernetes">full code example available here&lt;/a>.&lt;/p>
&lt;h2 id="1-overall-goals">1 Overall Goals&lt;/h2>
&lt;ul>
&lt;li>Deploy Dubbo applications to Kubernetes&lt;/li>
&lt;li>Implement service discovery based on Kubernetes built-in Service&lt;/li>
&lt;li>Integrate Dubbo applications with Kubernetes lifecycle&lt;/li>
&lt;/ul>
&lt;h2 id="2-basic-workflow">2 Basic Workflow&lt;/h2>
&lt;ol>
&lt;li>Create a Dubbo application (&lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-kubernetes">dubbo-samples-kubernetes&lt;/a>)&lt;/li>
&lt;li>Build container images and push to the image repository (&lt;a href="https://hub.docker.com/r/apache/dubbo-demo">dubbo-demo example image&lt;/a>)&lt;/li>
&lt;li>Deploy Dubbo Provider and Dubbo Consumer to Kubernetes&lt;/li>
&lt;li>Verify service discovery and calls are normal&lt;/li>
&lt;/ol>
&lt;h2 id="3-detailed-steps">3 Detailed Steps&lt;/h2>
&lt;h3 id="31-environment-requirements">3.1 Environment Requirements&lt;/h3>
&lt;p>Ensure that the following environment is installed locally to provide container runtime, Kubernetes cluster, and access tools.&lt;/p></description></item><item><title>Developing Dubbo Applications Using Native APIs</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/develop/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/develop/api/</guid><description>&lt;p>You may have noticed that most of the functions and examples in the documentation are based on the Spring Boot model, but Spring Boot or Spring is merely one application or microservice development model adapted by Dubbo. &lt;strong>As an RPC framework, Dubbo defines a comprehensive set of API interfaces, enabling us to develop Dubbo applications based on the native APIs&lt;/strong>. Business scenarios that can be achieved with pure APIs include:&lt;/p></description></item><item><title>register service</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/ai/registry/</guid><description>&lt;h2 id="llm-service-discovery-and-registration">LLM Service Discovery and Registration&lt;/h2>
&lt;p>This document aims to guide LLM service providers on how to dynamically register their service instances with the LLM Gateway via a Nacos registry. By following these guidelines, the gateway will be able to automatically discover your service and apply appropriate routing, retry, and fallback strategies based on the metadata you provide.&lt;/p>
&lt;h3 id="registration-mechanism-overview">Registration Mechanism Overview&lt;/h3>
&lt;p>The core mechanism of service discovery is that your LLM service registers as a &lt;strong>Nacos instance&lt;/strong> and provides a specific set of &lt;strong>metadata&lt;/strong> upon registration. The LLM Gateway listens for service changes in Nacos, reads this metadata, and dynamically converts it into a fully functional gateway &lt;code>endpoint&lt;/code> configuration.&lt;/p></description></item><item><title>Registry Center, Configuration Center, and Metadata Center</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/registry-config-meta/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/registry-config-meta/</guid><description>&lt;h2 id="three-center-logical-architecture">Three Center Logical Architecture&lt;/h2>
&lt;blockquote>
&lt;p>This section focuses on describing the traditional deployment architecture of Dubbo. The deployment architecture in a cloud-native context may vary, mainly in that the infrastructure (Kubernetes, Service Mesh, etc.) takes on more responsibilities.
Centralized components such as registry centers, metadata centers, and configuration centers have their duties integrated, making operation and maintenance simpler. However, emphasizing these centralized components helps us better understand how Dubbo works.&lt;/p>
&lt;/blockquote>
&lt;p>As a microservice framework, Dubbo SDK is deployed across distributed clusters along with microservice components. To achieve collaboration between various microservice components in a distributed environment, Dubbo defines several centralized components, including:&lt;/p></description></item><item><title>Relationship with gRPC, Spring Cloud, Istio</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/xyz-difference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/xyz-difference/</guid><description>&lt;p>Many developers often ask about the relationship between Apache Dubbo and Spring Cloud, gRPC, and some Service Mesh projects like Istio. Explaining their relationships is not difficult; you just need to follow this article and delve deeper into the Dubbo documentation. In general, some of their capabilities overlap, but in some scenarios, you can use them together.&lt;/p>
&lt;p>Although this document is written by Dubbo maintainers, we will still strive to objectively and transparently present the connections and differences between Dubbo and other components. However, considering that everyone&amp;rsquo;s familiarity with different products varies, some expressions here may not be entirely accurate. We hope this can help developers.&lt;/p></description></item><item><title>RPC Protocol Security</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/protocol/</guid><description>&lt;p>Dubbo supports the extension of RPC protocols, allowing users to enable any RPC protocol based on this extension mechanism in theory. This provides great flexibility but also comes with potential security risks.&lt;/p>
&lt;p>The following serialization protocols are provided in the official version of Dubbo 2.7:&lt;/p>
&lt;ul>
&lt;li>Dubbo&lt;/li>
&lt;li>RMI&lt;/li>
&lt;li>Hessian&lt;/li>
&lt;li>Http / Rest&lt;/li>
&lt;li>Webservice&lt;/li>
&lt;li>Thrift&lt;/li>
&lt;li>gRPC&lt;/li>
&lt;li>……&lt;/li>
&lt;/ul>
&lt;p>Starting from Dubbo 3.0, only the following serialization protocols are supported by default:&lt;/p>
&lt;ul>
&lt;li>Dubbo&lt;/li>
&lt;li>Triple / gRPC&lt;/li>
&lt;li>Http / Rest&lt;/li>
&lt;/ul>
&lt;p>Triple, gRPC, Http, and Rest protocols are all built on the HTTP protocol, which can strictly distinguish the format of requests, such as headers being plain text, avoiding risks like RCE when reading tokens.
The Dubbo protocol, due to its direct TCP binary design, uses serialization protocols for most fields except specific ones, so enabling risky serialization protocols can still pose RCE risks.
The RMI protocol, based on Java serialization, poses RCE risks.
The Hessian protocol, based on Hessian serialization, poses RCE risks especially since the default Hessian protocol (not the Dubbo-shaded Hessian-Lite) cannot configure blacklists and whitelists and has no default blacklist.&lt;/p></description></item><item><title>Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/service-discovery/</guid><description>&lt;h2 id="introduction-to-dubbo-rust-service-discovery">Introduction to Dubbo Rust Service Discovery&lt;/h2>
&lt;p>Dubbo Rust provides a client-based service discovery mechanism that relies on third-party registry components to coordinate the service discovery process. Supported registries: Nacos, Zookeeper.&lt;/p>
&lt;p>The following is a basic working principle diagram of the Dubbo Rust service discovery mechanism:&lt;/p>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/rust/dubbo-rust-service-discovery.png">&lt;/p>
&lt;p>Service discovery involves three participant roles: provider, consumer, and registry. The Dubbo provider instance registers its URL with the registry, which is responsible for aggregating the data. The Dubbo consumer reads the address list from the registry and subscribes to changes. Whenever the address list changes, the registry notifies all subscribed consumer instances with the latest list.&lt;/p></description></item><item><title>Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/service-discovery/</guid><description>&lt;p>Dubbo provides a Client-Based service discovery mechanism that relies on third-party registry center components to coordinate the service discovery process. It supports common registry centers such as Nacos, Consul, Zookeeper, etc.&lt;/p>
&lt;p>Below is a basic working principle diagram of Dubbo&amp;rsquo;s service discovery mechanism:&lt;/p>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/feature/service-discovery/arc.png">&lt;/p>
&lt;p>Service discovery involves three roles: provider, consumer, and registry center. Dubbo provider instances register URL addresses to the registry center, which aggregates the data. Dubbo consumers read the address list from the registry center and subscribe to changes. Whenever the address list changes, the registry center notifies all subscribed consumer instances with the latest list.&lt;/p></description></item><item><title>Improve Service Call Success Rate Through Retry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/retry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/retry/</guid><description>&lt;p>Retrying after an initial service call failure can effectively increase the overall call success rate. However, it is important to note that retries may lead to increased response times and higher system load. Additionally, retries are generally suitable for read-only services or write services that guarantee idempotency.&lt;/p>
&lt;h2 id="before-you-begin">Before You Begin&lt;/h2>
&lt;ul>
&lt;li>&lt;code>Deploy the Shop Mall Project&lt;/code>&lt;/li>
&lt;li>Deploy and open &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/architecture">Dubbo Admin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="task-details">Task Details&lt;/h2>
&lt;p>After successfully logging into the mall project, the mall will automatically display the details of the currently logged-in user on the homepage.&lt;/p></description></item><item><title>Service Routing Rules</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/router-module/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/router-module/</guid><description>&lt;h2 id="conditional-routing">Conditional Routing&lt;/h2>
&lt;p>The usage pattern is similar to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/core-features/traffic/condition-rule/">Conditional Routing Documentation&lt;/a>, but the configuration format is slightly different. Below is an example of conditional routing rules.&lt;/p>
&lt;p>Based on the following example rule, all calls to the &lt;code>greet&lt;/code> method of the &lt;code>org.apache.dubbo.sample.tri.Greeter&lt;/code> service will be forwarded to a subset of addresses marked with &lt;code>port=8888&lt;/code>.&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">configVersion&lt;/span>: v1.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">scope&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;service&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">force&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">enabled&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">key&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.sample.tri.Greeter&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">conditions&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - method=greet =&amp;gt; port=8888
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note:&lt;br>
The Dubbo Rust currently does not distinguish at the &lt;strong>application level&lt;/strong>, and cannot differentiate the origin of the service.&lt;br>
Therefore, for tag routing and conditional routing, only one application-level configuration can be specified.&lt;br>
For application-level configuration, the default key is set to application, and this configuration will affect all services.&lt;br>
For example:&lt;/p></description></item><item><title>Dubbo SPI Plugins and Details</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/spi-list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/spi-list/</guid><description>&lt;p>Dubbo defines many extension points within the framework, so &lt;strong>when you find that the official library cannot meet business needs and wish to provide customization for the Dubbo framework, please first refer to the following extension point definitions to see if you can achieve non-intrusive customization of the Dubbo framework by providing extension implementations&lt;/strong>.&lt;/p>
&lt;p>For specific information, please refer to the &lt;code>Summary of Dubbo SPI Extension Definitions&lt;/code> below this article.&lt;/p></description></item><item><title>Tag Routing Rules</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/tag-rule/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/tag-rule/</guid><description>&lt;p>Tag routing divides instances of a service into different groups, constraining traffic with specific tags to flow only within designated groups. Different groups serve different traffic scenarios, achieving traffic isolation. This can be the basis for scenarios such as blue-green deployment and canary release. Currently, there are two ways to tag instances: &lt;code>dynamic rule tagging&lt;/code> and &lt;code>static rule tagging&lt;/code>. &lt;code>Dynamic rule tagging&lt;/code> can dynamically enclose a group of machine instances at runtime, while &lt;code>static rule tagging&lt;/code> requires instance restart to take effect. Dynamic rules have higher priority compared to static rules, and when both rules exist and conflict, dynamic rules will prevail.&lt;/p></description></item><item><title>Consumer Thread Model, Provider Thread Model</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/threading-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/threading-model/</guid><description>&lt;h2 id="consumer-thread-model">Consumer Thread Model&lt;/h2>
&lt;p>For Dubbo applications prior to version 2.7.5, especially some consumer applications, when faced with consuming a large number of services with a high concurrency scenario (typical in gateway scenarios), there often arises the issue of excessive thread allocation on the consumer side. For specific discussions, refer to &lt;a href="https://github.com/apache/dubbo/issues/2013">Need a limited Threadpool in consumer side #2013&lt;/a>.&lt;/p>
&lt;p>The improved consumer thread pool model effectively addresses this issue by reusing the blocked business threads on the service side.&lt;/p></description></item><item><title>Timeout Duration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/timeout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/timeout/</guid><description>&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;p>This example demonstrates how to set the request timeout duration when initiating a call from the Dubbo-go client. You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/timeout" target="_blank">complete example source code&lt;/a> here.&lt;/p>
&lt;h2 id="2-how-to-set-the-request-timeout-duration">2. How to Set the Request Timeout Duration&lt;/h2>
&lt;p>When creating a client, you can set a global timeout using the &lt;code>client.WithRequestTimeout()&lt;/code> method (shared by all service proxies using this client).&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span> cli, err &lt;span style="color:#719e07">:=&lt;/span> client.&lt;span style="color:#268bd2">NewClient&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> client.&lt;span style="color:#268bd2">WithClientURL&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;tri://127.0.0.1:20000&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> client.&lt;span style="color:#268bd2">WithClientRequestTimeout&lt;/span>(&lt;span style="color:#2aa198">3&lt;/span> &lt;span style="color:#719e07">*&lt;/span> time.Second),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can also create service-level timeout using &lt;code>client.WithRequestTimeout()&lt;/code> (all method calls initiated from the following service proxy &lt;code>svc&lt;/code> will use this timeout).&lt;/p></description></item><item><title>Protocol Overview</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/triple/</guid><description>&lt;p>Please refer to other parts of the documentation for the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple-spec/">triple protocol specification&lt;/a> and &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/">basic usage&lt;/a>. This article elaborates on specific details in the Java implementation of the triple protocol.&lt;/p>
&lt;h2 id="programming-model">Programming Model&lt;/h2>
&lt;p>When using the triple protocol, developers can define RPC services using either &lt;code>Java Interface&lt;/code> or &lt;code>Protobuf (IDL)&lt;/code>. Both definitions have equal protocol capabilities and only affect the programming experience and serialization methods, with the choice of development model depending on the user&amp;rsquo;s business background.&lt;/p></description></item><item><title>Ultra-high performance</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/performance/</guid><description>&lt;p>Dubbo is designed to address Alibaba&amp;rsquo;s large-scale e-commerce microservice cluster practices and has been tested in tens of thousands to millions of microservice practices in leading enterprises across various industries over the years. Therefore, Dubbo has unparalleled advantages in communication performance and stability, making it very suitable for building nearly infinitely scalable microservice clusters. This is also a significant advantage of Dubbo over many similar products in the industry from a practical perspective.&lt;/p></description></item><item><title>Upgrade from 3.0 to 3.1</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.0-to-3.1-compatibility-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.0-to-3.1-compatibility-guide/</guid><description>&lt;h2 id="function-modification-points">Function Modification Points&lt;/h2>
&lt;h3 id="1-nacos-group-alignment-application-level-service-discovery">1. Nacos Group Alignment (Application-level Service Discovery)&lt;/h3>
&lt;p>In Dubbo 2.7.x, the group value configured in the Nacos Registry URL aligns with the group grouping in the Nacos Registry. (group can be considered similar to a namespace for soft isolation)&lt;/p>
&lt;p>In Dubbo 3.0.x, the group configured in the Nacos Registry URL is not used by default, and DEFAULT_GROUP is used instead. (group no longer provides isolation functionality)&lt;/p>
&lt;p>In Dubbo 3.1.x, the group value configured in the Nacos Registry URL will be realigned with the group grouping in the Nacos Registry.&lt;/p></description></item><item><title>Upgrade to Triple Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-triple/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 &lt;ul>
&lt;li>The content of this document is not mandatory for upgrading Dubbo3. You can simply upgrade the framework and continue using the Dubbo communication protocol.&lt;/li>
&lt;li>If you are a new Dubbo user, it is highly recommended to directly &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/">use the Triple protocol&lt;/a>.&lt;/li>
&lt;/ul>


&lt;/div>

&lt;p>This document is suitable for users whose services are already running on the Dubbo protocol. Please first refer to the previous document &lt;a href="../migration/">How to Upgrade from Dubbo2 to Dubbo3&lt;/a> to complete the framework version upgrade, and then follow these steps for a smooth migration to the Triple protocol with minimal changes.&lt;/p></description></item><item><title>Zookeeper</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/zookeeper/</guid><description>&lt;h2 id="1-prerequisites">1 Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/">Dubbo basic development steps&lt;/a>&lt;/li>
&lt;li>Install and start &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/zookeeper/">Zookeeper&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="2-usage-instructions">2 Usage Instructions&lt;/h2>
&lt;p>View the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/configcenter/dubbo-samples-configcenter-annotation">complete sample code&lt;/a>&lt;/p>
&lt;h3 id="21-add-maven-dependencies">2.1 Add Maven Dependencies&lt;/h3>
&lt;p>If the project has already enabled Zookeeper as the registry, no additional configurations are necessary.&lt;/p>
&lt;p>If Zookeeper is not used as the registry, refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/zookeeper#11-Add-Maven-dependencies">Add Zookeeper related dependencies for the registry&lt;/a>.&lt;/p>
&lt;h3 id="22-enable-zookeeper-configuration-center">2.2 Enable Zookeeper Configuration Center&lt;/h3>
&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:config-center&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;zookeeper://127.0.0.1:2181&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&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> config-center
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: zookeeper://127.0.0.1:2181
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-properties" data-lang="properties">&lt;span style="display:flex;">&lt;span>dubbo.config-center.address&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">zookeeper://127.0.0.1:2181&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>ConfigCenterConfig configCenter &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> ConfigCenterConfig();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>configCenter.setAddress(&lt;span style="color:#2aa198">&amp;#34;zookeeper://127.0.0.1:2181&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For the format of &lt;code>address&lt;/code>, refer to &lt;a href="../../registry/zookeeper#13-Configure-and-enable-Zookeeper">zookeeper registry - enable configuration&lt;/a>&lt;/p></description></item><item><title>如何准备 Apache Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/release-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/release-guide_dev/</guid><description>&lt;h2 id="理解-apache-发布的内容和流程">理解 Apache 发布的内容和流程&lt;/h2>
&lt;p>总的来说，Source Release 是 Apache 关注的重点，也是发布的必须内容；而 Binary Release 是可选项，Dubbo 可以选择是否发布二进制包到 Apache 仓库或者发布到 Maven 中央仓库。&lt;/p>
&lt;p>请参考以下链接，找到更多关于 ASF 的发布指南:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.apache.org/dev/release-publishing">Apache Release Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/release.html">Apache Release Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="本地构建环境准备">本地构建环境准备&lt;/h2>
&lt;p>主要包括签名工具、Maven 仓库认证相关准备&lt;/p>
&lt;h3 id="安装gpg">安装GPG&lt;/h3>
&lt;p>详细文档请参见&lt;a href="https://www.gnupg.org/download/index.html">这里&lt;/a>, Mac OS 下配置如下&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ brew install gpg
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --version &lt;span style="color:#586e75">#检查版本，应该为2.x&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="用gpg生成key">用gpg生成key&lt;/h3>
&lt;p>根据提示，生成 key&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>$ gpg --full-gen-key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gpg &lt;span style="color:#719e07">(&lt;/span>GnuPG&lt;span style="color:#719e07">)&lt;/span> 2.0.12; Copyright &lt;span style="color:#719e07">(&lt;/span>C&lt;span style="color:#719e07">)&lt;/span> &lt;span style="color:#2aa198">2009&lt;/span> Free Software Foundation, Inc.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This is free software: you are free to change and redistribute it.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>There is NO WARRANTY, to the extent permitted by law.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please &lt;span style="color:#719e07">select&lt;/span> what kind of key you want:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>1&lt;span style="color:#719e07">)&lt;/span> RSA and RSA &lt;span style="color:#719e07">(&lt;/span>default&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>2&lt;span style="color:#719e07">)&lt;/span> DSA and Elgamal
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>3&lt;span style="color:#719e07">)&lt;/span> DSA &lt;span style="color:#719e07">(&lt;/span>sign only&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>4&lt;span style="color:#719e07">)&lt;/span> RSA &lt;span style="color:#719e07">(&lt;/span>sign only&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Your selection? &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RSA keys may be between &lt;span style="color:#2aa198">1024&lt;/span> and &lt;span style="color:#2aa198">4096&lt;/span> bits long.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>What keysize &lt;span style="color:#719e07">do&lt;/span> you want? &lt;span style="color:#719e07">(&lt;/span>2048&lt;span style="color:#719e07">)&lt;/span> &lt;span style="color:#2aa198">4096&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Requested keysize is &lt;span style="color:#2aa198">4096&lt;/span> bits
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please specify how long the key should be valid.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">0&lt;/span> &lt;span style="color:#719e07">=&lt;/span> key does not expire
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt; &lt;span style="color:#719e07">=&lt;/span> key expires in n days
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt;w &lt;span style="color:#719e07">=&lt;/span> key expires in n weeks
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt;m &lt;span style="color:#719e07">=&lt;/span> key expires in n months
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt;y &lt;span style="color:#719e07">=&lt;/span> key expires in n years
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Key is valid &lt;span style="color:#719e07">for&lt;/span>? &lt;span style="color:#719e07">(&lt;/span>0&lt;span style="color:#719e07">)&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Key does not expire at all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Is this correct? &lt;span style="color:#719e07">(&lt;/span>y/N&lt;span style="color:#719e07">)&lt;/span> y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GnuPG needs to construct a user ID to identify your key.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Real name: Robert Burrell Donkin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Email address: rdonkin@apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Comment: CODE SIGNING KEY
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You selected this USER-ID:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;Robert Burrell Donkin (CODE SIGNING KEY) &amp;lt;rdonkin@apache.org&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Change &lt;span style="color:#719e07">(&lt;/span>N&lt;span style="color:#719e07">)&lt;/span>ame, &lt;span style="color:#719e07">(&lt;/span>C&lt;span style="color:#719e07">)&lt;/span>omment, &lt;span style="color:#719e07">(&lt;/span>E&lt;span style="color:#719e07">)&lt;/span>mail or &lt;span style="color:#719e07">(&lt;/span>O&lt;span style="color:#719e07">)&lt;/span>kay/&lt;span style="color:#719e07">(&lt;/span>Q&lt;span style="color:#719e07">)&lt;/span>uit? O
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You need a Passphrase to protect your secret key. &lt;span style="color:#586e75"># 填入密码，以后打包过程中会经常用到&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="查看-key-id">查看 key id&lt;/h3>
&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ gpg --list-keys
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pub rsa4096/28681CB1 2018-04-26 &lt;span style="color:#586e75"># 28681CB1就是key id&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uid &lt;span style="color:#719e07">[&lt;/span>ultimate&lt;span style="color:#719e07">]&lt;/span> liujun &lt;span style="color:#719e07">(&lt;/span>apache-dubbo&lt;span style="color:#719e07">)&lt;/span> &amp;lt;liujun@apache.org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sub rsa4096/D3D6984B 2018-04-26
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># 通过key id发送public key到keyserver&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># 其中，pgpkeys.mit.edu为随意挑选的keyserver，keyserver列表为：https://sks-keyservers.net/status/，为相互之间是自动同步的，选任意一个都可以。&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>如果有多个 public key，设置默认 key。修改&lt;code>~/.gnupg/gpg.conf&lt;/code>&lt;/p></description></item><item><title>新贡献者向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/new-contributor-guide_dev/</guid><description>&lt;p>这篇向导旨在给正在准备向 Dubbo 提交贡献的新手提供指导。&lt;/p>
&lt;h3 id="邮件列表描述">邮件列表描述&lt;/h3>
&lt;p>邮件列表是 Dubbo 官方推荐的讨论方式，所有与 Dubbo 相关的内容都可以在这里讨论，请点击 &lt;a href="https://github.com/apache/dubbo/issues/1393">issue&lt;/a> 了解更多关于邮件列表订阅的内容&lt;/p>
&lt;p>如需订阅如下邮件列表，请参考 &lt;a href="../mailing-list-subscription-guide_dev/">邮件列表订阅向导&lt;/a>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="mailto:dev@dubbo.apache.org">dev@dubbo.apache.org&lt;/a>：开发邮件列表，您在使用或者开发 Dubbo 的过程中遇到的任何问题，都可以在这里进行提问。&lt;/li>
&lt;li>&lt;a href="mailto:commits@dubbo.apache.org">commits@dubbo.apache.org&lt;/a>：所有的提交内容都会推送到这个邮件列表，如果您对 Dubbo 的进展感兴趣，可以订阅这个邮件列表。&lt;/li>
&lt;li>&lt;a href="mailto:issues@dubbo.apache.org">issues@dubbo.apache.org&lt;/a>：所有的 JIRA &lt;a href="https://issues.apache.org/jira/projects/DUBBO/issues">issues&lt;/a> 和修改信息都会推送到这个邮件列表。Dubbo 社区已经决定使用 github issues 代替 JIRA issues，因此大部分 issues 将由 github issues 进行跟踪。JIRA issues 用于跟踪 ASF 相关问题。&lt;/li>
&lt;/ul>
&lt;h3 id="报告问题">报告问题&lt;/h3>
&lt;h3 id="贡献代码">贡献代码&lt;/h3>
&lt;h4 id="贡献流程">贡献流程&lt;/h4>
&lt;p>此贡献流程适用于所有的Apache Dubbo社区内容，包括但不限于dubbo(主干仓库)、dubbo admin、dubbo website。&lt;/p>
&lt;p>以下以贡献dubbo(主干仓库)为例，详细说明贡献流程。&lt;/p>
&lt;h5 id="1-fork-apachedubbo-项目到您的github帐号下">1. &lt;strong>fork Apache/Dubbo 项目到您的github帐号下&lt;/strong>&lt;/h5>
&lt;h5 id="2-克隆您fork的dubbo代码仓库到您本地">2. &lt;strong>克隆您fork的Dubbo代码仓库到您本地&lt;/strong>&lt;/h5>
&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>git clone &lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">your&lt;/span> fork dubbo repo address，for example：https://github.com/&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">your&lt;/span> github id&lt;span style="color:#2aa198">}&lt;/span>/dubbo.git&lt;span style="color:#2aa198">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> dubbo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="3-添加apachedubbo仓库为upstream仓库">3. &lt;strong>添加Apache/Dubbo仓库为upstream仓库&lt;/strong>&lt;/h5>
&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>git remote add upstream https://github.com/apache/dubbo.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git remote -v
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> origin &lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">your&lt;/span> fork dubbo repo address&lt;span style="color:#2aa198">}&lt;/span> &lt;span style="color:#719e07">(&lt;/span>fetch&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> origin &lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">your&lt;/span> fork dubbo repo address&lt;span style="color:#2aa198">}&lt;/span> &lt;span style="color:#719e07">(&lt;/span>push&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> upstream https://github.com/apache/dubbo.git &lt;span style="color:#719e07">(&lt;/span>fetch&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> upstream https://github.com/apache/dubbo.git &lt;span style="color:#719e07">(&lt;/span>push&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git fetch origin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git fetch upstream
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="4-我们的工作以issue为驱动认领一个issue或者创建一个issue并描述清楚要做什么">4. &lt;strong>我们的工作以issue为驱动，认领一个issue，或者创建一个issue并描述清楚要做什么。&lt;/strong>&lt;/h5>
&lt;p>新人推荐标记为： &lt;code>good first issue&lt;/code> 的 issue&lt;/p></description></item><item><title>Overall Architecture Design of Dubbo Admin Control Plane</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/admin/</link><pubDate>Tue, 28 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/admin/</guid><description>&lt;h2 id="1-overall-architecture-of-dubbo">1 Overall Architecture of Dubbo&lt;/h2>
&lt;p>&lt;img alt="DubboAdmin Architecture Diagram.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/reference/admin/architecture.png">&lt;/p>
&lt;p>The architecture is divided into: &lt;strong>Service Governance Abstract Control Plane&lt;/strong> and &lt;strong>Dubbo Data Plane&lt;/strong>.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Service Governance Control Plane.&lt;/strong> The control plane includes components such as the registry, traffic management strategies, Admin console, Istio, OpenSergo, etc.&lt;/li>
&lt;li>&lt;strong>Dubbo Data Plane.&lt;/strong> The data plane represents all Dubbo processes in cluster deployment, which exchange data via RPC protocol and interact with governance strategies from the control plane.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Further explanation:&lt;/strong> &lt;a href="https://cn.dubbo.apache.org/zh-cn/overview/what/overview/">https://cn.dubbo.apache.org/zh-cn/overview/what/overview/&lt;/a>&lt;/p></description></item><item><title>Ele.me Successfully Upgrades to Dubbo3</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/ele.me-successfully-upgrades-to-dubbo3/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/ele.me-successfully-upgrades-to-dubbo3/</guid><description>&lt;h3 id="upgrade-goals">Upgrade Goals&lt;/h3>
&lt;p>&lt;img alt="elem-arc" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/eleme/elem-arc.png">&lt;/p>
&lt;p>Here is the basic deployment architecture diagram of Ele.me.&lt;/p>
&lt;p>Before the upgrade, Ele.me&amp;rsquo;s microservice framework used HSF2, and inter-unit RPC calls were routed through a proxy. During this time, the number of machines and traffic supported by the proxy increased rapidly. Notably, after subscribing to all address data, the resource consumption and stability of the proxy faced severe challenges.&lt;/p>
&lt;p>By upgrading the entire site to Dubbo3, the business line aims to achieve two goals:&lt;/p></description></item><item><title>0-3 - Unable to access cache path</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/3/</guid><description>&lt;p>Other modules reuse the file-based caching mechanism from the Common layer (currently the metadata module), while the file cache mechanism in the Common layer cannot access its specified directory.&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>2022-08-29 00:35:00,189 ERROR [org.apache.dubbo.common.cache.FileCacheStoreFactory:?] - [DUBBO] Cache store path can&amp;#39;t be created: , dubbo version: , current host: 10.0.1.1, error code: 0-3. This may be caused by inaccessible of cache path, go to https://dubbo.apache.org/faq/0/3 to find instructions. 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>java.nio.file.FileAlreadyExistsException: [Path]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:521)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/java.nio.file.Files.createDirectory(Files.java:700)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:807)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at java.base/java.nio.file.Files.createDirectories(Files.java:753)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	at org.apache.dubbo.common.cache.FileCacheStoreFactory.getInstance(FileCacheStoreFactory.java:90)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Multiple Dubbo processes (or other Java processes) are using the same cache file.&lt;/li>
&lt;li>Read and write failures due to file system permission issues in the directory containing the cache file.&lt;/li>
&lt;/ol>
&lt;h3 id="diagnosis-and-resolution-steps">Diagnosis and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Find the inaccessible directory from the actual exception shown below and determine its file access permissions.&lt;/li>
&lt;li>Check if there are other Dubbo instances accessing this path.&lt;/li>
&lt;li>Try configuring &lt;strong>Java System Properties (Java system properties configured with -D)&lt;/strong> &lt;code>dubbo.meta.cache.filePath&lt;/code> and &lt;code>dubbo.mapping.cache.filePath&lt;/code>, specifying a directory that the current user can fully control.&lt;/li>
&lt;/ol></description></item><item><title>1-3 - URL destruction failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/3/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>When the &lt;code>FrameworkExecutorRepository&lt;/code> is destroyed, calling &lt;code>CacheableFailbackRegistry.evictURLCache&lt;/code> can lead to destruction failure, resulting in an error code.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Also refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Reference Manual&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-3 - Route shutdown failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/3/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ul>
&lt;li>User-defined routes are not written according to specifications.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Refer to the community SPI extension user manual to check the user-defined routes &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/">《SPI Extension User Manual》&lt;/a> .&lt;/p>
&lt;/blockquote></description></item><item><title>3-3 - Failure to generate bytecode through Javassist</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/3/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>The meaning of this error code has been adjusted. For errors with this error code in Dubbo versions 3.1.4, 3.2.0-beta.3, and earlier, please refer to error code &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/faq/3/8/">3-8&lt;/a>.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>(This error code is currently vacant)&lt;/p></description></item><item><title>4-3 - Interface reference call failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/3/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>The exposed service interface or method was not found based on the specified protocol parameters.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can confirm whether the server exists based on the interface URL and method name.&lt;/p></description></item><item><title>5-3 - An unexpected error occurs when destroying method calls</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/3/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Custom destroy method, there are exceptions in business processing.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the custom destroy method has runtime exceptions in the business processing logic.&lt;/p></description></item><item><title>6-3 - Network connection closure failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/3/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Non-graceful shutdown of the service, during which the server may not have completed its output stream.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Generally, this is a notification-type warning that does not affect subsequent program execution.&lt;/p></description></item><item><title>7-3 - Set the warning percentage value for timeout</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/3/</guid><description>&lt;h2 id="possible-reasons">Possible Reasons&lt;/h2>
&lt;p>QOS sets the warning percentage value for timeout, which defaults to 0.75. After modification, this message will be printed in the console.&lt;/p>
&lt;h2 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h2>
&lt;p>Please refer to the QOS operation manual &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/profiler/">Performance Sampling Command&lt;/a>.&lt;/p>
&lt;p style="margin-top: 3rem;"> &lt;/p></description></item><item><title>81-3 - Unable to download file via URL</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/3/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>The URL mapping file does not exist.&lt;/li>
&lt;li>The URL cannot be connected.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the URL mapping file exists.&lt;/li>
&lt;li>Verify if it can be accessed normally through a browser or other tools.&lt;/li>
&lt;/ol></description></item><item><title>Dynamically Enable Access Log to Track Service Calls</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/accesslog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/accesslog/</guid><description>&lt;p>The access log can effectively record all service request information processed by a machine over a period of time, including request reception time, remote IP, request parameters, response results, etc. Dynamically enabling the access log at runtime is very helpful for problem troubleshooting.&lt;/p>
&lt;h2 id="before-you-start">Before You Start&lt;/h2>
&lt;ul>
&lt;li>&lt;code>Deploy the Shop Mall Project&lt;/code>&lt;/li>
&lt;li>Deploy and open &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/architecture">Dubbo Admin&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="task-details">Task Details&lt;/h2>
&lt;p>All user services of the mall are provided by the UserService of the &lt;code>User&lt;/code> application. Through this task, we enable the access log for one or more machines of the &lt;code>User&lt;/code> application to observe the overall access situation of user services.&lt;/p></description></item><item><title>Adaptive Flow Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/rate-limit/adaptive-concurrency-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/rate-limit/adaptive-concurrency-control/</guid><description>&lt;p>For the design and implementation ideas of adaptive flow control, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/heuristic-flow-control/">Dubbo Adaptive Flow Control Function&lt;/a>. Adaptive flow control can ensure the stability and reliability of distributed systems, especially in scenarios where service provider resources are limited and variable.&lt;/p>
&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;ul>
&lt;li>Service Degradation Prevention: When service providers face performance degradation due to resource exhaustion, adaptive flow control temporarily reduces the number of requests it accepts until normal operations resume.&lt;/li>
&lt;li>Peak Traffic Handling: When service traffic surges suddenly, adaptive flow control can help prevent service overload by dynamically reducing the number of accepted requests.&lt;/li>
&lt;li>Unpredictable Traffic Handling: Service providers may encounter unpredictable traffic, and third-party applications may occasionally generate traffic while using the service. Adaptive flow control can adjust the maximum allowed concurrent requests based on current system load to prevent overload.&lt;/li>
&lt;/ul>
&lt;h2 id="implementation">Implementation&lt;/h2>
&lt;p>The setup method is similar to static maximum concurrency value settings; simply set the flowcontrol parameter on the server side. There are two optional values:&lt;/p></description></item><item><title>Asynchronous Call</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/async/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/async/</guid><description>&lt;p>Dubbo asynchronous calls can be divided into Provider-side asynchronous calls and Consumer-side asynchronous calls.&lt;/p>
&lt;ul>
&lt;li>Consumer-side asynchronous means that after initiating an RPC call, it returns immediately, allowing the calling thread to continue processing other business logic. When the response returns, a callback function is used to notify the consumer of the result.&lt;/li>
&lt;li>Provider-side asynchronous execution moves blocking business from Dubbo&amp;rsquo;s internal thread pool to a user-defined thread, avoiding excessive occupation of the Dubbo thread pool, which helps prevent interference between different services.&lt;/li>
&lt;/ul>
&lt;p>Below is a working example diagram of consumer asynchronous calls:&lt;/p></description></item><item><title>Communication Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/protocol/</guid><description>&lt;p>The Dubbo-go framework provides two built-in protocols: triple and dubbo. In addition, the framework offers various ways to extend protocol access.&lt;/p>
&lt;ul>
&lt;li>triple, a high-performance communication protocol based on HTTP/1 and HTTP/2, 100% compatible with gRPC, supports Unary, Streaming, and other communication modes; supports publishing REST-style HTTP services.&lt;/li>
&lt;li>dubbo, a high-performance private communication protocol based on TCP, with the disadvantage of poor universality, more suitable for use between Dubbo SDKs;&lt;/li>
&lt;li>Any protocol extension, by extending the protocol, it can support any RPC protocol. The official ecosystem provides support for JsonRPC, thrift, etc.&lt;/li>
&lt;/ul>
&lt;p>In this document, we will introduce the usage of the triple protocol, how to achieve mutual calls with existing dubbo2 systems, and extend support for more protocols. For more principled introductions, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple-spec/">Protocol Specification&lt;/a> or &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/protocol/">related documents in dubbo java&lt;/a> .&lt;/p></description></item><item><title>Communication using Unix Socket Connector</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/unix-transport/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/unix-transport/</guid><description>&lt;p>This article focuses on using the Dubbo Rust Triple protocol with Unix sockets. Please refer to the &lt;a href="../quick-start">Quick Start&lt;/a> for basic usage of Dubbo Rust, and you can see the &lt;a href="https://github.com/apache/dubbo-rust/tree/main/examples/greeter">complete example&lt;/a> here.&lt;/p>
&lt;h2 id="1-explanation-of-using-unix-socket-connector">1 Explanation of Using Unix Socket Connector&lt;/h2>
&lt;blockquote>
&lt;p>#[cfg(any(target_os = &amp;ldquo;macos&amp;rdquo;, target_os=&amp;ldquo;unix&amp;rdquo;))] The unix module will be compiled for use when the operating system meets the cfg configuration, otherwise it cannot be used.&lt;/p>
&lt;/blockquote>
&lt;h2 id="2-logic-for-using-unix-socket-connector-with-clientconnection">2 Logic for Using Unix Socket Connector with client/connection&lt;/h2>
&lt;h3 id="21-writing-the-client-side">2.1 Writing the Client Side&lt;/h3>
&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-rust" data-lang="rust">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// examples/echo/src/echo/client.rs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// Initialize Client using ClientBuilder
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">let&lt;/span> builder &lt;span style="color:#719e07">=&lt;/span> ClientBuilder::new().with_connector(&lt;span style="color:#2aa198">&amp;#34;unix&amp;#34;&lt;/span>).with_host(&lt;span style="color:#2aa198">&amp;#34;unix://127.0.0.1:8888&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#719e07">mut&lt;/span> cli &lt;span style="color:#719e07">=&lt;/span> EchoClient::build(builder);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="22-writing-the-server-side">2.2 Writing the Server Side&lt;/h3>
&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-rust" data-lang="rust">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// examples/echo/src/echo/server.rs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// Initialize Server using serverbuilder
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">let&lt;/span> builder &lt;span style="color:#719e07">=&lt;/span> ServerBuilder::new()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .with_listener(&lt;span style="color:#2aa198">&amp;#34;unix&amp;#34;&lt;/span>.to_string())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .with_service_names(vec![&lt;span style="color:#2aa198">&amp;#34;grpc.examples.echo.Echo&amp;#34;&lt;/span>.to_string()])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .with_addr(&lt;span style="color:#2aa198">&amp;#34;127.0.0.1:8888&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>builder.build().serve().&lt;span style="color:#719e07">await&lt;/span>.unwrap();
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-running-example">3 Running Example&lt;/h2>
&lt;ol>
&lt;li>Compile&lt;/li>
&lt;/ol>
&lt;p>Run &lt;code>cargo build&lt;/code> to compile the server and client.&lt;/p></description></item><item><title>Quick Deployment of Dubbo Applications</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/deploy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/deploy/</guid><description>&lt;p>In the previous article, we created a Dubbo application from scratch and detailed its code structure. Next, we will learn how to deploy this Dubbo application.&lt;/p>
&lt;p>This article will explain the deployment of Dubbo applications based on a Kubernetes cluster, and the deployment architecture is shown in the diagram below.
!&lt;code>Dubbo+Kubernetes+Nacos Deployment Architecture&lt;/code>&lt;/p>


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

 In real-world usage, the deployment environment may vary widely, including Kubernetes Services, Service Mesh, virtual machines, and more. Please refer to &lt;code>Deployment Documentation&lt;/code> for more detailed content.

&lt;/div>

&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>The Dubbo community provides tools and solutions to simplify the packaging and deployment process in the entire Kubernetes environment. Therefore, we need to install the relevant tools before we begin.&lt;/p></description></item><item><title>Dubbo Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/dubbo/</guid><description>&lt;p>The default protocol of Dubbo uses a single long connection and NIO asynchronous communication, which is suitable for service calls with small data sizes and high concurrency, especially in scenarios where the number of service consumers far exceeds the number of service providers. Dubbo RPC is the most core high-performance, high-throughput remote invocation method in the Dubbo system, which I like to refer to as multiplexing TCP long connection calls.&lt;/p></description></item><item><title>Dubbo Ecosystem</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/what/ecosystem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/what/ecosystem/</guid><description/></item><item><title>Echo Testing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/echo-service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/echo-service/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>Echo testing is used to detect whether a service is available. The echo test follows the normal request process, allowing the entire call to be tested for smooth operation and can be used for monitoring. In an echo test, the client sends a request containing a specific value (such as a string). The server should respond with the same value to verify that the request has been successfully received and processed. If the response does not match the request, it indicates that the service is not functioning properly and further investigation is needed. It requires that the Dubbo server is running and that there is a network connection between the server and the client. On the client side, the Dubbo client must be configured to connect to the server, which will send requests to the server, and then the server should return the same response as the request.&lt;/p></description></item><item><title>Link Tracing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/observability/tracing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/observability/tracing/</guid><description>&lt;p>Dubbo-go supports end-to-end tracing based on the &lt;a href="https://opentelemetry.io/">OpenTelemetry&lt;/a> standard, while also supporting export to different tracing backend systems through the following exporters.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://opentelemetry.io/docs/specs/otel/logs/sdk_exporters/stdout/">Stdout exporter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://opentelemetry.io/docs/languages/js/exporters/#jaeger">Jaeger exporter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://opentelemetry.io/docs/languages/js/exporters/#zipkin">Zipkin exporter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://opentelemetry.io/docs/languages/js/exporters/#use-otlp-exporter-with-httpjson-or-httpprotobuf">OTLP-HTTP exporter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/">OTLP-gRPC exporter&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Please note that tracing functionality is only enabled when creating the Dubbo application via &lt;code>dubbo.NewInstance&lt;/code>, which is the &lt;code>microservice application mode&lt;/code> mentioned in our quick start. The &lt;code>lightweight RPC API&lt;/code> does not currently support enabling tracing.&lt;/p>
&lt;h2 id="example-explanation">Example Explanation&lt;/h2>
&lt;p>You can view the full example source code &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/otel">here&lt;/a>.&lt;/p></description></item><item><title>Exception Type Return Values</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/error/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/error/</guid><description>&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;p>This document demonstrates how to handle error type responses during RPC calls. You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/error" target="_blank">complete example source code here&lt;/a>.&lt;/p>
&lt;h2 id="2-example-details">2. Example Details&lt;/h2>
&lt;h3 id="21-server">2.1 Server&lt;/h3>
&lt;h4 id="server-proto-file">Server proto file&lt;/h4>
&lt;p>Source file path: dubbo-go-sample/error/proto/greet.proto&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-protobuf" data-lang="protobuf">&lt;span style="display:flex;">&lt;span>syntax &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">&amp;#34;proto3&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> greet;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">option&lt;/span> go_package &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">&amp;#34;github.com/apache/dubbo-go-samples/error/proto;greet&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">GreetRequest&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> name &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">GreetResponse&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> greeting &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">service&lt;/span> GreetService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">rpc&lt;/span> Greet(GreetRequest) &lt;span style="color:#719e07">returns&lt;/span> (GreetResponse) {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="server-handler-file">Server handler file&lt;/h4>
&lt;p>Note that in this program design, the Greet method will only consider the request valid if it receives &lt;code>name=&amp;quot;right name&amp;quot;&lt;/code>; otherwise, it will return an error.&lt;/p></description></item><item><title>Fastjson2</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fastjson2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fastjson2/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>&lt;code>FASTJSON v2&lt;/code> is an important upgrade of the &lt;code>FASTJSON&lt;/code> project, aimed at providing a high-performance &lt;code>JSON&lt;/code> library for the next decade. With the same &lt;code>API&lt;/code>,&lt;/p>
&lt;ul>
&lt;li>Supports both &lt;code>JSON/JSONB&lt;/code> protocols, with &lt;a href="https://alibaba.github.io/fastjson2">&lt;code>JSONPath&lt;/code>&lt;/a> as a first-class citizen.&lt;/li>
&lt;li>Supports full parsing and partial parsing.&lt;/li>
&lt;li>Supports &lt;code>Java&lt;/code> server-side, client-side &lt;code>Android&lt;/code>, and big data scenarios.&lt;/li>
&lt;li>Supports &lt;code>Kotlin&lt;/code> &lt;a href="https://alibaba.github.io/fastjson2">https://alibaba.github.io/fastjson2&lt;/a>&lt;/li>
&lt;li>Supports &lt;code>JSON Schema&lt;/code> &lt;a href="https://alibaba.github.io/fastjson2">https://alibaba.github.io/fastjson2&lt;/a>&lt;/li>
&lt;li>Supports &lt;code>Android 8+&lt;/code>&lt;/li>
&lt;li>Supports &lt;code>Graal Native-Image&lt;/code>&lt;/li>
&lt;li>Supports &lt;code>JSON Schema&lt;/code> &lt;a href="https://alibaba.github.io/fastjson2">https://alibaba.github.io/fastjson2&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="2-usage">2 Usage&lt;/h2>
&lt;h3 id="21-add-dependency">2.1 Add Dependency&lt;/h3>
&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.alibaba.fastjson2&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>fastjson2&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>2.0.23&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;p>Note: Fastjson2 serialization is only supported in Dubbo &amp;gt; 3.1.0. In Dubbo &amp;gt; 3.2.0, it will replace Hessian as the default serialization method.&lt;/p></description></item><item><title>Use Filter to Dynamically Intercept Requests or Responses</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/filter/</guid><description>&lt;p>The Filter dynamically intercepts requests or responses to transform or utilize the information contained within them. Filters themselves do not typically create responses but provide generic functions that can be &amp;ldquo;attached&amp;rdquo; to any RPC request. Dubbo Filters are pluggable, allowing us to insert any type and number of Filters into an RPC request.&lt;/p>
&lt;p>The operation of a Filter is illustrated as follows:&lt;/p>
&lt;img style="max-width:800px;height:auto;" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/framework/filter.png"/>
&lt;p>Some typical capabilities achievable through Filters include:&lt;/p>
&lt;ul>
&lt;li>Logging request parameters and response results to log files&lt;/li>
&lt;li>Adding authentication or verification logic for RPC requests&lt;/li>
&lt;li>Formatting request bodies or header parameters before sending or executing requests&lt;/li>
&lt;li>Compressing response results&lt;/li>
&lt;li>Collecting metrics on request data, such as call time, success, and failure counts&lt;/li>
&lt;li>Monitoring the number of concurrently executed requests to implement rate limiting and degradation capabilities&lt;/li>
&lt;/ul>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>As shown in the figure above, the Dubbo proxy automatically loads Filter implementations and assembles them into the call chain. Filter is a standard SPI definition, and the framework automatically loads Filter implementations based on certain activation rules.&lt;/p></description></item><item><title>Visualizing Cluster Metrics with Grafana</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/grafana/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/grafana/</guid><description>&lt;p>The recommended way to visualize metrics is to use Grafana to configure the observability monitoring dashboard for Dubbo.&lt;/p>
&lt;h2 id="before-you-begin">Before You Begin&lt;/h2>
&lt;ul>
&lt;li>An accessible Kubernetes cluster&lt;/li>
&lt;li>Properly installed and configured &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/prometheus/#installation">Prometheus service&lt;/a>&lt;/li>
&lt;li>Installed &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/grafana/">Grafana&lt;/a>&lt;/li>
&lt;li>Deployed &lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-metrics-spring-boot">Sample Application&lt;/a> and enabled metrics collection&lt;/li>
&lt;/ul>
&lt;h2 id="confirm-component-status">Confirm Component Status&lt;/h2>
&lt;h3 id="kubernetes">Kubernetes&lt;/h3>
&lt;p>Ensure Prometheus is running&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ kubectl -n dubbo-system get svc prometheus
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT&lt;span style="color:#719e07">(&lt;/span>S&lt;span style="color:#719e07">)&lt;/span> AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>prometheus ClusterIP 10.0.250.230 &amp;lt;none&amp;gt; 9090/TCP 180s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ensure Grafana is running&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ kubectl -n dubbo-system get svc grafana
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT&lt;span style="color:#719e07">(&lt;/span>S&lt;span style="color:#719e07">)&lt;/span> AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>grafana ClusterIP 10.0.244.130 &amp;lt;none&amp;gt; 3000/TCP 180s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="deploy-sample">Deploy Sample&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>kubectl apply -f https://raw.githubusercontent.com/apache/dubbo-samples/master/4-governance/dubbo-samples-metrics-spring-boot/Deployment.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Wait for the sample application to run, and confirm the application status with the following command:&lt;/p></description></item><item><title>Health Check</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/healthcheck/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/healthcheck/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Dubbo-go has a built-in health check service based on the triple protocol to help users manage and monitor the health status of services. You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/healthcheck" target="_blank">complete example source code&lt;/a> here.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;ul>
&lt;li>The framework automatically registers the health check service &lt;code>grpc.health.v1.Health&lt;/code> into the framework after starting via &lt;code>instance&lt;/code>, which records and exposes the health status of each triple service.&lt;/li>
&lt;li>The health check service can check the status of services in the framework by making an HTTP request or through client calls to the health check service. The interface called is &lt;code>grpc.health.v1.Health&lt;/code>, and the method is &lt;code>check&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="1-call-the-health-check-service-through-the-client">1. Call the health check service through the client&lt;/h2>
&lt;p>Start the service in dubbo-go-samples/healthcheck/go-server, and the status of &lt;code>greet.GreetService&lt;/code> can be viewed through the client below.&lt;/p></description></item><item><title>HTTP Protocol Specification</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/http/</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, with the Triple protocol providing more comprehensive support for Rest. For details, refer to the &lt;a href="../../../mannual/java-sdk/reference-manual/protocol/tripe-rest-manual/">Triple Rest User Manual&lt;/a>. If you wish to continue using the original Rest protocol, you can import 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;h2 id="what-is-dubbo-http">What is Dubbo Http&lt;/h2>
&lt;p>A protocol implemented through the Dubbo protocol extension, based on the coding style of Spring Web and Resteasy, enabling inter-service calls via the HTTP protocol.&lt;/p></description></item><item><title>Invoker Listener Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/invoker-listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/invoker-listener/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>This event is triggered when there is a service reference.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.InvokerListener&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Reference Service Listener --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> listener=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default Listener for Reference Services --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:consumer&lt;/span> listener=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.listener.DeprecatedInvokerListener&lt;/code>&lt;/p>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxInvokerListener.java (implements InvokerListener interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.InvokerListener (text file containing: xxx=com.xxx.XxxInvokerListener)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxInvokerListener.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.InvokerListener;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.Invoker;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.RpcException;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxInvokerListener&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> InvokerListener {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">referred&lt;/span>(Invoker&lt;span style="color:#719e07">&amp;lt;?&amp;gt;&lt;/span> invoker) &lt;span style="color:#268bd2">throws&lt;/span> RpcException {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">destroyed&lt;/span>(Invoker&lt;span style="color:#719e07">&amp;lt;?&amp;gt;&lt;/span> invoker) &lt;span style="color:#268bd2">throws&lt;/span> RpcException {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.rpc.InvokerListener:&lt;/p></description></item><item><title>Labeling Issues</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/label-an-issue-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/label-an-issue-guide_dev/</guid><description>&lt;p>If you are dealing with an issue, please remember to &lt;strong>label it with one or more tags that you find meaningful&lt;/strong>. With labels, other developers can easily identify the issue for categorization and tracking progress.&lt;/p>
&lt;p>For issues and pull requests that require coding and release fixes, you need to &lt;strong>label them as &lt;a href="https://github.com/apache/dubbo/milestones">milestone&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>Some commonly used labels:&lt;/p>
&lt;ul>
&lt;li>Help Wanted
&lt;ul>
&lt;li>help wanted&lt;/li>
&lt;li>good first issue&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Priority
&lt;ul>
&lt;li>priority/blocker&lt;/li>
&lt;li>priority/high&lt;/li>
&lt;li>priority/low&lt;/li>
&lt;li>priority/normal&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Status
&lt;ul>
&lt;li>status/need-triage&lt;/li>
&lt;li>status/DO-NOT-MERGE&lt;/li>
&lt;li>status/READY-TO-MERGE&lt;/li>
&lt;li>status/invalid&lt;/li>
&lt;li>status/wontfix&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Type
&lt;ul>
&lt;li>type/bug&lt;/li>
&lt;li>type/documentation&lt;/li>
&lt;li>type/enhancement&lt;/li>
&lt;li>type/feature&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Load Balancing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/load-balance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/load-balance/</guid><description>&lt;p>When it comes to cluster load balancing, Dubbo provides multiple balancing strategies, with the default being &lt;code>weighted random&lt;/code>, a weighted random load balancing strategy.&lt;/p>
&lt;p>In terms of implementation, Dubbo provides client-side load balancing, meaning the Consumer determines which Provider instance to submit the request to using a load balancing algorithm.&lt;/p>
&lt;h2 id="load-balancing-strategies">Load Balancing Strategies&lt;/h2>
&lt;p>Currently, Dubbo has the following built-in load balancing algorithms, which can be enabled by adjusting configuration items.&lt;/p></description></item><item><title>Log Management</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/logging/</guid><description>&lt;h2 id="supported-log-frameworks">Supported Log Frameworks&lt;/h2>
&lt;p>Dubbo supports the following logging frameworks, and users can configure based on the logging framework actually used in their business applications.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Third-party Log Framework&lt;/th>
 &lt;th style="text-align: left">Priority&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Log4j&lt;/td>
 &lt;td style="text-align: left">Highest (used by default)&lt;/td>
 &lt;td style="text-align: left">Direct adaptation of Log4j, requires adding log4j-core, log4j-api dependencies and log4j.properties&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">SLF4J&lt;/td>
 &lt;td style="text-align: left">Second highest (currently recommended)&lt;/td>
 &lt;td style="text-align: left">Supports log4j, log4j2, logback, etc. For logback, add slf4j-api, logback-classic, logback-core dependencies and logback.xml&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Log4j2&lt;/td>
 &lt;td style="text-align: left">Second lowest&lt;/td>
 &lt;td style="text-align: left">Direct adaptation of Log4j2, requires adding log4j2-core dependency and log4j2.xml configuration&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Common Logging (jcl is common logging)&lt;/td>
 &lt;td style="text-align: left">Second lowest (used if neither Log4j nor SLF4J is in the project)&lt;/td>
 &lt;td style="text-align: left">Rarely used in projects&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">JDK log&lt;/td>
 &lt;td style="text-align: left">Lowest (last resort)&lt;/td>
 &lt;td style="text-align: left">Rarely used in projects&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>


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

 Regardless of the logging framework used, in addition to configuring on the Dubbo side, ensure the application includes the correct logging framework dependencies and configuration files.

&lt;/div>

&lt;h3 id="using-slf4j">Using slf4j&lt;/h3>
&lt;p>For Spring Boot users, enable slf4j logging by adding the following configuration to &lt;code>application.yaml&lt;/code> or &lt;code>application.properties&lt;/code>:&lt;/p></description></item><item><title>Low Request Success Rate</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/request-failed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/troubleshoot/request-failed/</guid><description>&lt;p>In a production environment, the request success rate and latency are the most critical metrics. This article will introduce troubleshooting approaches when the request success rate decreases.&lt;/p>
&lt;h2 id="summary-in-one-sentence">Summary in One Sentence&lt;/h2>
&lt;p>Analyze bottlenecks through end-to-end metrics (consumer end, network, server end, external dependencies, etc.)&lt;/p>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/java-sdk/troubleshoot/1677487652373-fdc41dbd-0fe0-461f-b827-fa8db68ba2a2.jpeg">&lt;/p>
&lt;h2 id="troubleshooting-approaches">Troubleshooting Approaches&lt;/h2>
&lt;h3 id="1-is-the-consumer-end-constructing-requests-normally">1 Is the Consumer End Constructing Requests Normally?&lt;/h3>
&lt;h4 id="11-check-if-class-objects-are-serializable">1.1 Check if Class Objects Are Serializable&lt;/h4>
&lt;p>When using Dubbo for RPC remote calls, due to cross-process calls, Dubbo checks whether all data objects implement the &lt;code>Serializable&lt;/code> interface to prevent unexpected data requests over the network.&lt;/p></description></item><item><title>Mailing List Subscription Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/mailing-list-subscription-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/mailing-list-subscription-guide_dev/</guid><description>&lt;p>The Apache Incubator&amp;rsquo;s Dubbo developer mailing list (&lt;a href="mailto:dev@dubbo.apache.org">dev@dubbo.apache.org&lt;/a>) has been established. Please feel free to subscribe and refer to [^1] for more details.&lt;/p>
&lt;p>You can also directly view the &lt;a href="https://lists.apache.org/list.html?dev@dubbo.apache.org">archive&lt;/a>.&lt;/p>
&lt;p>Here is a brief guide on subscribing to the Dubbo mailing list:&lt;/p>
&lt;ol>
&lt;li>Send an email to &lt;a href="mailto:dev-subscribe@dubbo.apache.org">dev-subscribe@dubbo.apache.org&lt;/a>, leaving the content and subject empty. You will receive an email with the following content:&lt;/li>
&lt;/ol>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>from: dev-help@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>reply-to: dev-sc.xxxxxxx.xxxxxxxx-hello=example.com@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to: hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>date: Sat, Feb 24, 2018 at 3:12 PM
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subject: confirm subscribe to dev@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mailed-by: apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hi! This is the ezmlm program. I&amp;#39;m managing the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dev@dubbo.apache.org mailing list.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&amp;#39;m working for my owner, who can be reached
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>at dev-owner@dubbo.apache.org.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To confirm that you would like
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>added to the dev mailing list, please send
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>a short reply to this address:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dev-sc.xxxxxxx.xxxxxxxx-hello=example.com@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Usually, this happens when you just hit the &amp;#34;reply&amp;#34; button.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>If this does not work, simply copy the address and paste it into
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>the &amp;#34;To:&amp;#34; field of a new message.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>or click here:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mailto:dev-sc.xxxxxxx.xxxxxxxx-hello=example.com@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Reply to the email, leaving the content and subject empty, and you will receive another email with the following content:&lt;/li>
&lt;/ol>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>from: dev-help@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to: hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>date: Sat, Feb 24, 2018 at 3:14 PM
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subject: WELCOME to dev@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mailed-by: apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hi! This is the ezmlm program. I&amp;#39;m managing the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dev@dubbo.apache.org mailing list.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&amp;#39;m working for my owner, who can be reached
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>at dev-owner@dubbo.apache.org.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Acknowledgment: I have added the address
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to the dev mailing list.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Welcome to dev@dubbo.apache.org!
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please save this message so that you know the address you are
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subscribed under, in case you later want to unsubscribe or change your
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subscription address.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>
&lt;p>At this point, the mailing list subscription is complete. From now on, you will receive many emails sent to this mailing list. If you have more questions, just send an email to &lt;a href="mailto:dev@dubbo.apache.org">dev@dubbo.apache.org&lt;/a>, and someone will answer your questions.&lt;/p></description></item><item><title>Configuration of the Dubbo Maven Plugin</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/maven-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/maven-plugin/</guid><description>&lt;p>This article mainly explains the configuration of the Dubbo Maven Plugin.&lt;/p>
&lt;p>The current Dubbo Maven Plugin supports the following features:&lt;/p>
&lt;ul>
&lt;li>Dubbo Maven Plugin For Protobuf: Generates Stub code for Dubbo service interfaces&lt;/li>
&lt;li>Dubbo Maven Plugin For Native Image: Generates necessary Metadata information for Native Image based on AOT mechanism&lt;/li>
&lt;/ul>
&lt;h2 id="dubbo-maven-plugin-for-protobuf">Dubbo Maven Plugin For Protobuf&lt;/h2>
&lt;h3 id="how-to-use-dubbo-maven-plugin-to-generate-protobuf-stub-code">How to use Dubbo Maven Plugin to generate Protobuf Stub code&lt;/h3>
&lt;h4 id="1-write-the-proto-file">1. Write the .proto file&lt;/h4>
&lt;p>greeter.proto&lt;/p></description></item><item><title>Definitions of Models and Concepts Related to Multi-Instances</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/model/</guid><description>&lt;h2 id="dubbo-architecture">Dubbo Architecture&lt;/h2>
&lt;p>JVM — Virtual Machine Layer&lt;br>
Purpose: Complete isolation between Dubbo frameworks (ports cannot be reused)&lt;/p>
&lt;p>Dubbo Framework — Framework Layer&lt;br>
Purpose: Reuse resources that need global caching (ports, serialization, etc.)&lt;/p>
&lt;p>Application — Application Layer&lt;br>
Purpose: Isolate information between applications, including registration center, configuration center, and metadata center&lt;/p>
&lt;p>Services — Module Layer&lt;br>
Purpose: Provide hot loading capability, allowing isolation contexts per ClassLoader or Spring Context&lt;/p>
&lt;h2 id="dubbo-concept-alignment">Dubbo Concept Alignment&lt;/h2>
&lt;ol>
&lt;li>DubboBootstrap
&lt;ol>
&lt;li>Needs to separate export/refer services, ServiceInstance, Metadata/Config, etc. Client&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>ConfigManager
&lt;ol>
&lt;li>Needs to separate application-level configuration information from module-level configuration information&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>ApplicationModel
&lt;ol>
&lt;li>Actually stores application layer information, holding a reference to ConfigManager’s application-level configuration information&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>ConsumerModel
&lt;ol>
&lt;li>Actually stores interface information, held by ModuleModel&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>ProviderModel
&lt;ol>
&lt;li>Actually stores interface information, held by ModuleModel&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>ExtensionLoader
&lt;ol>
&lt;li>Needs to load different instance objects based on different levels&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Registry
&lt;ol>
&lt;li>Application level sharing, needs to ensure that multi-instance subscriptions work properly (considering unit scenarios)&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Router / Filter
&lt;ol>
&lt;li>Module level sharing&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Protocol / Remoting
&lt;ol>
&lt;li>Framework level sharing, reusing IO, contributing across multiple applications&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Metadata&lt;/li>
&lt;li>Application level sharing, considering application-level service discovery&lt;/li>
&lt;li>QoS&lt;/li>
&lt;li>Framework level sharing, related to IO&lt;/li>
&lt;li>Serialization&lt;/li>
&lt;li>Framework level sharing, related to IO&lt;/li>
&lt;li>ConfigCenter&lt;/li>
&lt;li>Application level contribution&lt;/li>
&lt;li>ModuleModel (new)&lt;/li>
&lt;li>Actually stores module layer information, holding interface-level information&lt;/li>
&lt;li>FrameworkModel (new)&lt;/li>
&lt;li>Actually stores framework layer information&lt;/li>
&lt;/ol>
&lt;h2 id="configuration-storage-organization">Configuration Storage Organization&lt;/h2>
&lt;h3 id="frameworkmodel">FrameworkModel&lt;/h3>
&lt;p>Qos, Protocol, Remoting, Serialization, ExtensionLoader&lt;/p></description></item><item><title>Nacos</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/nacos/</guid><description>&lt;h2 id="1-prerequisites">1 Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/">Basic Development Steps of Dubbo&lt;/a>&lt;/li>
&lt;li>Install and start &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/nacos/">Nacos&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>When Dubbo uses version &lt;code>3.0.0&lt;/code> or above, Nacos version &lt;code>2.0.0&lt;/code> or above is required. Please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/nacos#Nacos-Version">nacos registry&lt;/a> for Nacos version compatibility.&lt;/p>
&lt;/blockquote>
&lt;h2 id="2-instructions">2 Instructions&lt;/h2>
&lt;h3 id="21-add-maven-dependency">2.1 Add Maven Dependency&lt;/h3>
&lt;p>If the project has already enabled Nacos as a registry, no additional configuration is required.&lt;/p>
&lt;p>If Nacos registry is not enabled, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/nacos#11-Add-Dependency">Add Nacos dependency for registry&lt;/a>.&lt;/p>
&lt;h3 id="22-enable-nacos-configuration-center">2.2 Enable Nacos Configuration Center&lt;/h3>
&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:config-center&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;nacos://127.0.0.1:8848&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&lt;/p></description></item><item><title>New features</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/3.0_feature/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/3.0_feature/</guid><description>&lt;p>&lt;img alt="star" src="https://shields.io/github/stars/apache/dubbo-go?style=dark">&lt;/p>
&lt;h2 id="1-triple-protocol">1. Triple Protocol&lt;/h2>
&lt;h3 id="11-overview">1.1 Overview&lt;/h3>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/golang-sdk/concept/more/3.0_feature/tri.png">&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Communication level&lt;/p>
&lt;p>The Triple protocol, also known as the Dubbo3 protocol, is an extended protocol based on HTTP2 + gRPC, which adds specific fields and logical enhancements, ensuring interoperability with the &lt;strong>native gRPC protocol&lt;/strong>. On this basis, the Triple new protocol will more natively support &lt;strong>Dubbo service governance capabilities&lt;/strong> and support &lt;strong>streaming RPC calls&lt;/strong>.&lt;/p>
&lt;p>In simple terms, it can be understood as Triple = gRPC + Dubbo.&lt;/p></description></item><item><title>Multiple Instances Make Source Code Development More Complex, Learn How to Correctly Extend SPI Implementations</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/develop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/develop/</guid><description>&lt;p>This article provides a simple summary of the coding-related changes after the multiple-instance transformation of Dubbo 3.&lt;/p>
&lt;h3 id="hierarchical-model">Hierarchical Model&lt;/h3>
&lt;p>From only ApplicationModel, new ScopeModel/FrameworkModel/ModuleModel are added to express the hierarchical model of multiple instances.
&lt;img alt="image.png" src="https://cdn.nlark.com/yuque/0/2021/png/2391732/1630663265196-0c9e3746-3f62-406b-93d6-7d971ee3e96a.png#clientId=u53624b84-1e3c-4&amp;from=paste&amp;height=302&amp;id=udc7e6f69&amp;originHeight=604&amp;originWidth=1378&amp;originalType=binary&amp;ratio=1&amp;size=132247&amp;status=done&amp;style=none&amp;taskId=u06713196-e7be-483c-8762-6bbc756f336&amp;width=689">
Each ScopeModel instance will create and bind its own important members:&lt;/p>
&lt;ul>
&lt;li>ExtensionDirector&lt;/li>
&lt;li>BeanFactory&lt;/li>
&lt;li>ServiceRepository&lt;/li>
&lt;/ul>
&lt;p>ScopeModel, as the most basic model, can hold and pass in SPI/Bean/URL, etc.&lt;/p>
&lt;h3 id="spi-extension">SPI Extension&lt;/h3>
&lt;h4 id="extensionscope">ExtensionScope&lt;/h4>
&lt;p>The SPI annotation adds the scope attribute to indicate its belonging scope.
&lt;img alt="image.png" src="https://cdn.nlark.com/yuque/0/2021/png/2391732/1630664482020-9d35e6de-17f7-4334-8506-3af362c03de0.png#clientId=u53624b84-1e3c-4&amp;from=paste&amp;height=249&amp;id=u6c288d3d&amp;originHeight=498&amp;originWidth=930&amp;originalType=binary&amp;ratio=1&amp;size=197493&amp;status=done&amp;style=none&amp;taskId=u56167d63-ab53-4cdb-bb10-723d0c97663&amp;width=465">
The correspondence between ExtensionScope and the hierarchical model:&lt;/p></description></item><item><title>Other Issues?</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/migration/proxyless/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/mesh/migration/proxyless/</guid><description>&lt;p>Proxyless mode refers to Dubbo communicating directly with Istiod, utilizing the xDS protocol to achieve capabilities such as service discovery and service governance. This example will demonstrate how to use Proxyless mode through a simple demonstration.&lt;/p>
&lt;p>&lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-xds">Example Address&lt;/a>&lt;/p>
&lt;h2 id="code-architecture">Code Architecture&lt;/h2>
&lt;p>This section primarily introduces the code architecture of the example used in this article. By mimicking the relevant configurations in this example, existing project code can be quickly adapted to run in Proxyless Mesh mode.&lt;/p></description></item><item><title>Pixiu Frequently Asked Questions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/overview/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/overview/faq/</guid><description>&lt;h3 id="frequently-asked-questions-q1">Frequently Asked Questions Q1&lt;/h3>
&lt;p>&lt;strong>Can Pixiu currently be used in production environments?&lt;/strong>&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong>
Since version 0.4.0, it can be used in production environments. We welcome enterprises that are already using it to participate in this issue: &lt;a href="https://github.com/apache/dubbo-go-pixiu/issues/64">who&amp;rsquo;s using Pixiu&lt;/a>&lt;/p>
&lt;h3 id="frequently-asked-questions-q2">Frequently Asked Questions Q2&lt;/h3>
&lt;p>&lt;strong>Does Pixiu currently support high availability?&lt;/strong>&lt;/p>
&lt;p>&lt;strong>A:&lt;/strong>
Currently, Pixiu only supports single-instance deployment and can form a stateless multi-instance cluster with Nginx.&lt;/p></description></item><item><title>Provider Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/service/</guid><description>&lt;h2 id="basic-configuration">Basic Configuration&lt;/h2>
&lt;p>Provider configuration items need to be added to the &lt;code>sys.config&lt;/code> file under the &lt;code>dubboerl&lt;/code> application configuration item.&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-erlang" data-lang="erlang">&lt;span style="display:flex;">&lt;span>{dubboerl,[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">%% other config ...
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	{provider,[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		{module_implements,interface_module,interface_fullname,[&lt;span style="color:#268bd2">Options&lt;/span>]},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		&lt;span style="color:#586e75">%% eg:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>		{userOperator_impl,userOperator,&lt;span style="color:#719e07">&amp;lt;&amp;lt;&lt;/span>&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.erlang.sample.service.facade.UserOperator&amp;#34;&lt;/span>&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span>,[&lt;span style="color:#268bd2">Option&lt;/span>]}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	]}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">ConfigName&lt;/th>
 &lt;th style="text-align: left">Type&lt;/th>
 &lt;th style="text-align: left">DefaultValue&lt;/th>
 &lt;th style="text-align: left">Remarks&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">module_implements&lt;/td>
 &lt;td style="text-align: left">atom()&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">The service implementation module name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">interface_module&lt;/td>
 &lt;td style="text-align: left">atom()&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">Interface module name converted from java jar&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">interface_fullname&lt;/td>
 &lt;td style="text-align: left">binary()&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">Fully qualified name of the interface&amp;rsquo;s Java class&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Option is to be added.&lt;/p></description></item><item><title>Quick Start</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/how/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/facade-docs/how/quick-start/</guid><description>&lt;section id="section-0" style="">
	
&lt;div class="td-content list-page">
 &lt;div class="lead">&lt;/div>&lt;header class="article-meta">
 &lt;/header>&lt;div class="row">
 &lt;div class="col-sm col-md-6 mb-4 mb-md-0">
 &lt;div class="h-100 card shadow" href="#">
 &lt;div class="card-body">
 &lt;h4 class="card-title">
 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/docsv2.7/user/quick-start/">Quick start&lt;/a>
 &lt;/h4>
 &lt;p>Dubbo Java SDK&lt;/p>
 &lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;div class="col-sm col-md-6 mb-4 mb-md-0">
 &lt;div class="h-100 card shadow">
 &lt;div class="card-body">
 &lt;h4 class="card-title">
 &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/quickstart">Quick start&lt;/a>
 &lt;/h4>
 &lt;p>Dubbo Golang SDK&lt;/p>
 &lt;/div>
 &lt;/div>
 &lt;/div>
 
&lt;/div>
&lt;hr>
&lt;/div>


&lt;/section></description></item><item><title>Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/registry/</guid><description>&lt;p>In the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/">Service Discovery&lt;/a> chapter, we learned about the usage and working principles of several core built-in registry implementations in Dubbo, such as &lt;code>Nacos&lt;/code> and &lt;code>Zookeeper&lt;/code>. This article explains how to provide a custom registry implementation by extending the &lt;code>org.apache.dubbo.registry.client.ServiceDiscovery&lt;/code> and &lt;code>org.apache.dubbo.registry.nacos.NacosServiceDiscoveryFactory&lt;/code> SPI.&lt;/p>
&lt;p>For the complete source code of this example, please refer to &lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-configcenter-extensions/dubbo-configcenter-etcd">dubbo-registry-etcd&lt;/a>. In addition to this example, many registry extension implementations in the core repository apache/dubbo and the extension library apache/dubbo-spi-extensions can serve as references for extensions:&lt;/p></description></item><item><title>Registry Center Security</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/registry/</guid><description>&lt;p>Dubbo supports the extension of registry centers, theoretically allowing users to enable any registry center based on this extension mechanism. This brings great flexibility but also raises awareness of potential security risks.&lt;/p>
&lt;p>The following registry centers are provided in the official version of Dubbo 2.7:&lt;/p>
&lt;ul>
&lt;li>Zookeeper&lt;/li>
&lt;li>Redis&lt;/li>
&lt;li>Nacos&lt;/li>
&lt;li>Etcd&lt;/li>
&lt;li>Consul&lt;/li>
&lt;li>……&lt;/li>
&lt;/ul>
&lt;p>Starting from Dubbo 3.0, only the following registry centers are supported by default:&lt;/p>
&lt;ul>
&lt;li>Zookeeper&lt;/li>
&lt;li>Nacos&lt;/li>
&lt;/ul>
&lt;p>For registry centers, Dubbo can only fully trust the data they push. Therefore, if there are security vulnerabilities in the registry center, it may lead to malicious registration or data being maliciously pushed, causing service attacks.
To ensure the security of the registry center, Dubbo officially recommends:&lt;/p></description></item><item><title>Remote Configuration File</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/configuration/remote/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/configuration/remote/</guid><description>&lt;p>The Dubbo framework supports preloading the contents of the configuration file &amp;lsquo;dubbogo.yaml&amp;rsquo; into the configuration center, and then merging it with local configurations through remote loading, thus achieving some dynamic and centralized management of configurations.&lt;/p>


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

 Applications that have correctly configured the config-center address will prioritize loading the entire configuration file from the configuration center.

&lt;/div>

&lt;p>You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/config_center" target="_blank">full example source code here&lt;/a>. This article demonstrates using Zookeeper, and the usage of Nacos is similar, with specific source code examples available at the above address.&lt;/p></description></item><item><title>Request Retry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/retry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/retry/</guid><description>&lt;p>When a service call fails, we can allow the framework to automatically retry a few times, which can improve the success rate of requests seen by users. In failover cluster mode, dubbo-go supports automatic retries.&lt;/p>
&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;p>This example demonstrates how to configure the retry function when a client-side call fails. &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/retry" target="_blank">Full example source code&lt;/a>&lt;/p>
&lt;h2 id="2-how-to-use-the-retry-feature">2. How to Use the Retry Feature&lt;/h2>
&lt;p>When creating a client using &lt;code>client.NewClient()&lt;/code>, you can set the retry count using &lt;code>client.WithClientRetries()&lt;/code> method.&lt;/p></description></item><item><title>Publishing REST-style Services</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/rest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/rest/</guid><description>&lt;div class="alert alert-primary" role="alert">


 The &amp;ldquo;rest protocol&amp;rdquo; discussed in this article is not a true protocol implementation, but rather a way to make the triple protocol support direct access via REST-style HTTP requests.
We will demonstrate how to access Dubbo services using REST requests.

&lt;/div>



&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, with the triple protocol providing more comprehensive support for REST. The built-in protocol implementations now only include triple and dubbo.
&lt;br>Therefore, when we mention REST, we are referring to the REST access support capabilities of the triple protocol. For more details, see &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/tripe-rest-manual/">Triple REST User Manual&lt;/a>

&lt;/div>

&lt;p>When discussing the &lt;a href="../triple/interface/#curl">triple protocol example&lt;/a>, we mentioned that the triple protocol supports direct access in &lt;code>application/json&lt;/code> format:&lt;/p></description></item><item><title>Script Routing Rules</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/script-rule/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/script-rule/</guid><description>&lt;p>Script routing provides maximum flexibility for traffic management. All traffic will dynamically execute a rule script before performing load balancing selection, and the available address subset is determined based on the script execution results.&lt;/p>
&lt;p>Script routing only affects consumers and only supports application-level management. Therefore, the &lt;code>key&lt;/code> must be set to the consumer application name. The script syntax supports multiple languages. Taking the Dubbo Java SDK as an example, the script syntax supports Javascript, Groovy, Kotlin, etc. For specific limitations, refer to the implementation of each language.&lt;/p></description></item><item><title>Sentinel Rate Limiting and Downgrade</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/sentinel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/traffic/sentinel/</guid><description>&lt;p>Dubbo-go provides a built-in rate limiting component, allowing users to adjust rate limiting values and post-limiting behaviors according to their business scenarios. The specifics can be defined and implemented in &lt;a href="https://github.com/apache/dubbo-go/blob/main/filter/tps_limiter.go#L52">TpsLimiter&lt;/a>. Users can set a simple rate limiting strategy on the server side in a manner similar to the following:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>server.&lt;span style="color:#268bd2">WithTpsLimiter&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;method-service&amp;#34;&lt;/span>) &lt;span style="color:#586e75">// Currently supports implementations like method-service, polaris, etc.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>server.&lt;span style="color:#268bd2">WithTpsLimiterXxx&lt;/span>() &lt;span style="color:#586e75">// Set rate limiting related thresholds, please fill in according to the specific method
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//tps.limit.strategy: &amp;#34;slidingWindow&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//tps.limit.rejected.handler: &amp;#34;default&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//tps.limit.interval: 1000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//tps.limit.rate: 3
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The built-in rate limiting strategy in Dubbo-go is relatively simple. For more complex scenarios, we recommend using professional third-party frameworks like Sentinel to achieve richer and more flexible rate limiting strategies.&lt;/p></description></item><item><title>Service Governance</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/governance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/governance/</guid><description>&lt;h2 id="traffic-control">Traffic Control&lt;/h2>
&lt;p>Beyond address discovery and load balancing mechanisms, Dubbo&amp;rsquo;s rich traffic control rules can manage the flow direction and API calls between services. Based on these rules, you can dynamically adjust service behaviors such as timeout periods, retry counts, and rate limiting parameters during runtime. By controlling traffic distribution, you can achieve A/B testing, canary releases, multi-version traffic allocation by ratio, conditional routing, black and white lists, etc., thereby improving system stability.&lt;/p></description></item><item><title>Service Management Commands</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/service-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/service-management/</guid><description>&lt;p>The service management feature provides a series of commands to manage Dubbo services.&lt;/p>
&lt;h2 id="service-management">Service Management&lt;/h2>
&lt;h3 id="ls-command">ls Command&lt;/h3>
&lt;p>List Consumers and Providers&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;ls
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>As Provider side:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+------------------------------------------------------------------------+---------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| Provider Service Name | PUB |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+------------------------------------------------------------------------+---------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|DubboInternal - UserRead/org.apache.dubbo.metadata.MetadataService:1.0.0| |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+------------------------------------------------------------------------+---------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| com.dubbo.dubbointegration.UserReadService |nacos-A(Y)/nacos-I(Y)|
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+------------------------------------------------------------------------+---------------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>As Consumer side:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+-----------------------------------------+-----------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| Consumer Service Name | NUM |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+-----------------------------------------+-----------------+
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>|com.dubbo.dubbointegration.BackendService|nacos-AF(I-2,A-2)|
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+-----------------------------------------+-----------------+
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This command lists the services provided and consumed by Dubbo, as well as the number of addresses for the consumed services.&lt;/p></description></item><item><title>Deploying Dubbo Applications to a Virtual Machine Environment</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes-service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes-service/</guid><description>&lt;p>This model maps Dubbo Service to the concept of &lt;code>Kubernetes Service&lt;/code>, eliminating the need for traditional registries like Nacos, with the Kubernetes APISERVER taking on the role of the registry.&lt;/p>
&lt;img src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes-service.png" style="max-width:650px;height:auto;" />
&lt;h2 id="install-control-plane">Install Control Plane&lt;/h2>
&lt;p>In this model, we need to install &lt;code>dubbo-control-plane&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Should it work with istio (providing xds push capability), or should dubbo-control-plane implement the xds server itself?&lt;/p>
&lt;/blockquote>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubboctl manifests install --profile=control-plane
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="deploy-application">Deploy Application&lt;/h2>
&lt;h3 id="package-image">Package Image&lt;/h3>
&lt;h3 id="define-yaml">Define YAML&lt;/h3>
&lt;p>Please refer to dubbo-samples for examples.&lt;/p></description></item><item><title>Overview of Admin Service Testing Features</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/test/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/test/</guid><description>&lt;p>The service testing feature is usually provided for developers of Dubbo services to perform self-testing on their published services. By simulating a real consumer process on the Admin console, calls can be made to the service provider, and the results can be verified to meet expectations.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="prepare-test-cases">Prepare Test Cases&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>Start the test case&lt;/p>
&lt;p>You can refer to &lt;a href="../../../quickstart/java/">Quick Start&lt;/a> to start a simple Dubbo service. For service testing, you only need to start the provider.&lt;/p></description></item><item><title>Skywalking</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/skywalking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/skywalking/</guid><description>&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>You can quickly install Skywalking using the example configuration provided by the Dubbo community.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-kubernetes/master/deploy/kubernetes/skywalking.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>This installation is only suitable for testing or experimental use; for production-level installation, please refer to the official Skywalking installation documentation.&lt;/p>
&lt;/blockquote></description></item><item><title>Spring Boot</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/spring-boot/</guid><description>&lt;p>For details about Spring Boot annotations and basic usage, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/develop/springboot/">User Guide - Spring Boot&lt;/a>. Below are the configuration details and starter list supported by Spring Boot.&lt;/p>
&lt;h2 id="applicationyaml">application.yaml&lt;/h2>
&lt;p>Below is the list of configuration components supported by the Dubbo framework, which can be specified in the Spring Boot configuration file.&lt;/p>
&lt;h3 id="configuration-example">Configuration Example&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">application&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: dubbo-springboot-demo-provider
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">logger&lt;/span>: slf4j
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">50052&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registry&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: nacos://${nacos.address:127.0.0.1}:8848?username=nacos&amp;amp;password=nacos
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="dubbo">dubbo&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="../../properties#dubboapplication">&lt;strong>dubbo.application&lt;/strong> - &lt;code>org.apache.dubbo.config.ApplicationConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#config-center">&lt;strong>dubbo.config-center&lt;/strong> - &lt;code>org.apache.dubbo.config.ConfigCenterConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubboconsumer">&lt;strong>dubbo.consumer&lt;/strong> - &lt;code>org.apache.dubbo.config.ConsumerConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbometadata-report">&lt;strong>dubbo.metadata-report&lt;/strong> - &lt;code>org.apache.dubbo.config.MetadataReportConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubboprotocol">&lt;strong>dubbo.protocol&lt;/strong> - &lt;code>org.apache.dubbo.config.ProtocolConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubboprovider">&lt;strong>dubbo.provider&lt;/strong> - &lt;code>org.apache.dubbo.config.ProviderConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbo.registry">&lt;strong>dubbo.registry&lt;/strong> - &lt;code>org.apache.dubbo.config.RegistryConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbometrics">&lt;strong>dubbo.metrics&lt;/strong> - &lt;code>org.apache.dubbo.config.MetricsConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbo.tracing">&lt;strong>dubbo.tracing&lt;/strong> - &lt;code>org.apache.dubbo.config.TracingConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbossl">&lt;strong>dubbo.ssl&lt;/strong> - &lt;code>org.apache.dubbo.config.SslConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;del>&lt;a href="../../properties#dubbomonitor">&lt;strong>dubbo.monitor&lt;/strong> - &lt;code>org.apache.dubbo.config.MonitorConfig&lt;/code>&lt;/a>&lt;/del>&lt;/li>
&lt;li>&lt;del>&lt;a href="../../properties#dubbomodule">&lt;strong>dubbo.module&lt;/strong> - &lt;code>org.apache.dubbo.config.ModuleConfig&lt;/code>&lt;/a>&lt;/del>&lt;/li>
&lt;/ul>
&lt;h3 id="dubbometrics">dubbo.metrics&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="../../properties#dubbometricsaggregation">&lt;strong>dubbo.metrics.aggregation&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.AggregationConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbometricshistogram">&lt;strong>dubbo.metrics.histogram&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.HistogramConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbometricsprometheus">&lt;strong>dubbo.metrics.prometheus&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.PrometheusConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbometricsprometheusexporter">&lt;strong>dubbo.metrics.prometheus.exporter&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.PrometheusConfig$Exporter&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbometricsprometheuspushgateway">&lt;strong>dubbo.metrics.prometheus.pushgateway&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.PrometheusConfig$Pushgateway&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="dubbotracing">dubbo.tracing&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="../../properties#dubbo.tracing.baggage.correlation">&lt;strong>dubbo.tracing.baggage.correlation&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.BaggageConfig$Correlation&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbotracingtracing-exporterotlp-config">&lt;strong>dubbo.tracing.tracing-exporter.otlp-config&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.ExporterConfig$OtlpConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbotracingtracing-exporterzipkin-config">&lt;strong>dubbo.tracing.tracing-exporter.zipkin-config&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.ExporterConfig$ZipkinConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbotracingbaggage">&lt;strong>dubbo.tracing.baggage&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.BaggageConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbotracingpropagation">&lt;strong>dubbo.tracing.propagation&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.PropagationConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbotracingsampling">&lt;strong>dubbo.tracing.sampling&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.SamplingConfig&lt;/code>&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../properties#dubbotracingtracing-exporter">&lt;strong>dubbo.tracing.tracing-exporter&lt;/strong> - &lt;code>org.apache.dubbo.config.nested.ExporterConfig&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="starter-list">Starter List&lt;/h2>
&lt;h3 id="dubbo-spring-boot-starter">dubbo-spring-boot-starter&lt;/h3>
&lt;p>Here are some version mappings of the dubbo-spring-boot-starter that correspond to Spring Boot and JDK dependencies:&lt;/p></description></item><item><title>Startup Process and Module Dependency</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/workflow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/multi-instance/workflow/</guid><description>&lt;ol>
&lt;li>Application Startup Process&lt;br>
Initialize application configuration, start internal modules, and start other modules.&lt;br>
The application startup methods include: DubboBootstrap.start(), ApplicationModel.getDeployer().start()&lt;br>
&lt;img alt="Dubbo start process.svg" src="https://cdn.nlark.com/yuque/0/2021/svg/2391732/1634895625292-99fdac6f-3371-4147-9ad5-9428296cb083.svg#clientId=u82d0d5c2-bff3-4&amp;from=drop&amp;id=u8db161d3&amp;originHeight=2594&amp;originWidth=1050&amp;originalType=binary&amp;ratio=1&amp;size=64242&amp;status=done&amp;style=none&amp;taskId=u8976fa81-5bc5-469a-ab4a-b4cda12cd6d">&lt;/li>
&lt;li>Module Startup Process&lt;br>
Starting from ModuleDeployer.start() in the diagram above, automatically initialize application configuration, start internal modules, and then start the current module.&lt;br>
Module startup methods include:&lt;/li>
&lt;/ol>
&lt;ol>
&lt;li>Spring context loads dubbo xml configuration or annotations&lt;/li>
&lt;li>Manually start the module: ModuleModel.getDeployer().start()&lt;/li>
&lt;/ol>
&lt;ol start="3">
&lt;li>Service Interface API Startup&lt;br>
ServiceConfig.export() or ReferenceConfig.get() first automatically starts the module, and then executes export/refer service interfaces&lt;/li>
&lt;/ol></description></item><item><title>Streaming Communication Model</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/streaming/</guid><description>&lt;p>See the full &lt;a href="https://github.com/apache/dubbo-python/tree/main/samples/stream">example here&lt;/a>&lt;/p>
&lt;p>Dubbo-Python supports streaming calls, including &lt;code>ClientStream&lt;/code>, &lt;code>ServerStream&lt;/code>, and &lt;code>BidirectionalStream&lt;/code> modes.&lt;/p>
&lt;p>Streaming calls can be divided into write-streams and read-streams. For &lt;code>ClientStream&lt;/code>, it’s multiple writes with a single read; for &lt;code>ServerStream&lt;/code>, a single write with multiple reads; and &lt;code>BidirectionalStream&lt;/code> allows multiple writes and reads.&lt;/p>
&lt;h3 id="write-stream">Write-Stream&lt;/h3>
&lt;p>Write operations in streaming calls can be divided into single write (&lt;code>ServerStream&lt;/code>) and multiple writes (&lt;code>ClientStream&lt;/code> and &lt;code>BidirectionalStream&lt;/code>).&lt;/p>
&lt;h4 id="single-write">Single Write&lt;/h4>
&lt;p>Single write calls are similar to unary mode. For example:&lt;/p></description></item><item><title>Streaming Communication Model</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/rust-sdk/streaming/</guid><description>&lt;p>This article focuses on the Dubbo Rust Streaming communication pattern. Please refer to the &lt;a href="../quick-start">Quick Start&lt;/a> to understand the basic usage of Dubbo Rust and view the &lt;a href="https://github.com/apache/dubbo-rust/tree/main/examples/greeter">complete example&lt;/a> for this article.&lt;/p>
&lt;h2 id="1-adding-streaming-model-definitions-in-idl">1 Adding Streaming Model Definitions in IDL&lt;/h2>
&lt;p>The complete Greeter service definition is as follows, which includes a Unary, Client stream, Server stream, and Bidirectional stream model for Dubbo services.&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-protobuf" data-lang="protobuf">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// ./proto/greeter.proto
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>syntax &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">&amp;#34;proto3&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">option&lt;/span> java_multiple_files &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#cb4b16">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org&lt;span style="color:#719e07">.&lt;/span>apache.dubbo.sample.tri;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// The request message containing the user&amp;#39;s name.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">GreeterRequest&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> name &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// The response message containing the greetings
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">GreeterReply&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> &lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">service&lt;/span> Greeter{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// unary
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">rpc&lt;/span> greet(GreeterRequest) &lt;span style="color:#719e07">returns&lt;/span> (GreeterReply);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// clientStream
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">rpc&lt;/span> greetClientStream(stream GreeterRequest) &lt;span style="color:#719e07">returns&lt;/span> (GreeterReply);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// serverStream
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">rpc&lt;/span> greetServerStream(GreeterRequest) &lt;span style="color:#719e07">returns&lt;/span> (stream GreeterReply);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// bi streaming
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> &lt;span style="color:#719e07">rpc&lt;/span> greetStream(stream GreeterRequest) &lt;span style="color:#719e07">returns&lt;/span> (stream GreeterReply);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="2-writing-logic-with-streaming-model-definitions">2 Writing Logic with Streaming Model Definitions&lt;/h2>
&lt;h3 id="21-writing-the-streaming-server">2.1 Writing the Streaming Server&lt;/h3>
&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-rust" data-lang="rust">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// ./src/greeter/server.rs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#719e07">pub&lt;/span> &lt;span style="color:#719e07">mod&lt;/span> protos {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> include!(concat!(env!(&lt;span style="color:#2aa198">&amp;#34;OUT_DIR&amp;#34;&lt;/span>), &lt;span style="color:#2aa198">&amp;#34;/org.apache.dubbo.sample.tri.rs&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> futures_util::StreamExt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> protos::{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> greeter_server::{register_server, Greeter},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterReply, GreeterRequest,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> std::{io::ErrorKind, pin::Pin};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> async_trait::async_trait;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> futures_util::Stream;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> tokio::sync::mpsc;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> tokio_stream::wrappers::ReceiverStream;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> dubbo_config::RootConfig;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> dubbo::{codegen::&lt;span style="color:#719e07">*&lt;/span>, Dubbo};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">type&lt;/span> &lt;span style="color:#268bd2">ResponseStream&lt;/span> &lt;span style="color:#719e07">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Pin&lt;span style="color:#719e07">&amp;lt;&lt;/span>&lt;span style="color:#b58900">Box&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>&lt;span style="color:#719e07">dyn&lt;/span> Stream&lt;span style="color:#719e07">&amp;lt;&lt;/span>Item &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#b58900">Result&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterReply, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> &lt;span style="color:#b58900">Send&lt;/span>&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">#[tokio::main]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">main&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> register_server(GreeterServerImpl {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;greeter&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// Dubbo::new().start().await;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> Dubbo::new()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .with_config({
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> r &lt;span style="color:#719e07">=&lt;/span> RootConfig::new();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">match&lt;/span> r.load() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(config) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> config,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(_err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> panic!(&lt;span style="color:#2aa198">&amp;#34;err: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, _err), &lt;span style="color:#586e75">// response was dropped
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> })
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .start()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .&lt;span style="color:#719e07">await&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">#[allow(dead_code)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">#[derive(Default, Clone)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">struct&lt;/span> &lt;span style="color:#268bd2">GreeterServerImpl&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#b58900">String&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// #[async_trait]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#719e07">#[async_trait]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">impl&lt;/span> Greeter &lt;span style="color:#719e07">for&lt;/span> GreeterServerImpl {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">greet&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>&lt;span style="color:#268bd2">self&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> request: &lt;span style="color:#268bd2">Request&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterRequest&lt;span style="color:#719e07">&amp;gt;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ) -&amp;gt; &lt;span style="color:#b58900">Result&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>Response&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterReply&lt;span style="color:#719e07">&amp;gt;&lt;/span>, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;GreeterServer::greet &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, request.metadata);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(Response::new(GreeterReply {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: &lt;span style="color:#2aa198">&amp;#34;hello, dubbo-rust&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">greet_client_stream&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>&lt;span style="color:#268bd2">self&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> request: &lt;span style="color:#268bd2">Request&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>Decoding&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterRequest&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ) -&amp;gt; &lt;span style="color:#b58900">Result&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>Response&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterReply&lt;span style="color:#719e07">&amp;gt;&lt;/span>, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#719e07">mut&lt;/span> s &lt;span style="color:#719e07">=&lt;/span> request.into_inner();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">loop&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> result &lt;span style="color:#719e07">=&lt;/span> s.next().&lt;span style="color:#719e07">await&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">match&lt;/span> result {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Some&lt;/span>(&lt;span style="color:#b58900">Ok&lt;/span>(val)) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> println!(&lt;span style="color:#2aa198">&amp;#34;result: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, val),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Some&lt;/span>(&lt;span style="color:#b58900">Err&lt;/span>(val)) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> println!(&lt;span style="color:#2aa198">&amp;#34;err: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, val),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">None&lt;/span> &lt;span style="color:#719e07">=&amp;gt;&lt;/span> &lt;span style="color:#719e07">break&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(Response::new(GreeterReply {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: &lt;span style="color:#2aa198">&amp;#34;hello client streaming&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">type&lt;/span> &lt;span style="color:#268bd2">greetServerStreamStream&lt;/span> &lt;span style="color:#719e07">=&lt;/span> ResponseStream;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">greet_server_stream&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>&lt;span style="color:#268bd2">self&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> request: &lt;span style="color:#268bd2">Request&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterRequest&lt;span style="color:#719e07">&amp;gt;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ) -&amp;gt; &lt;span style="color:#b58900">Result&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>Response&lt;span style="color:#719e07">&amp;lt;&lt;/span>&lt;span style="color:#268bd2">Self&lt;/span>::greetServerStreamStream&lt;span style="color:#719e07">&amp;gt;&lt;/span>, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;greet_server_stream: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, request.into_inner());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> data &lt;span style="color:#719e07">=&lt;/span> vec![
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Result&lt;/span>::&lt;span style="color:#719e07">&amp;lt;&lt;/span>_, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span>::&lt;span style="color:#b58900">Ok&lt;/span>(GreeterReply {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: &lt;span style="color:#2aa198">&amp;#34;msg1 from server&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Result&lt;/span>::&lt;span style="color:#719e07">&amp;lt;&lt;/span>_, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span>::&lt;span style="color:#b58900">Ok&lt;/span>(GreeterReply {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: &lt;span style="color:#2aa198">&amp;#34;msg2 from server&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Result&lt;/span>::&lt;span style="color:#719e07">&amp;lt;&lt;/span>_, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span>::&lt;span style="color:#b58900">Ok&lt;/span>(GreeterReply {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: &lt;span style="color:#2aa198">&amp;#34;msg3 from server&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> resp &lt;span style="color:#719e07">=&lt;/span> futures_util::stream::iter(data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(Response::new(&lt;span style="color:#b58900">Box&lt;/span>::pin(resp)))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">type&lt;/span> &lt;span style="color:#268bd2">greetStreamStream&lt;/span> &lt;span style="color:#719e07">=&lt;/span> ResponseStream;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">greet_stream&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>&lt;span style="color:#268bd2">self&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> request: &lt;span style="color:#268bd2">Request&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>Decoding&lt;span style="color:#719e07">&amp;lt;&lt;/span>GreeterRequest&lt;span style="color:#719e07">&amp;gt;&amp;gt;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ) -&amp;gt; &lt;span style="color:#b58900">Result&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>Response&lt;span style="color:#719e07">&amp;lt;&lt;/span>&lt;span style="color:#268bd2">Self&lt;/span>::greetStreamStream&lt;span style="color:#719e07">&amp;gt;&lt;/span>, dubbo::status::Status&lt;span style="color:#719e07">&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;GreeterServer::greet_stream, grpc header: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> request.metadata
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> );
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#719e07">mut&lt;/span> in_stream &lt;span style="color:#719e07">=&lt;/span> request.into_inner();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> (tx, rx) &lt;span style="color:#719e07">=&lt;/span> mpsc::channel(&lt;span style="color:#2aa198">128&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tokio::spawn(&lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">move&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">while&lt;/span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#b58900">Some&lt;/span>(result) &lt;span style="color:#719e07">=&lt;/span> in_stream.next().&lt;span style="color:#719e07">await&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">match&lt;/span> result {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(v) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tx.send(&lt;span style="color:#b58900">Ok&lt;/span>(GreeterReply {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: &lt;span style="color:#268bd2">format&lt;/span>&lt;span style="color:#719e07">!&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;server reply: {:?}&amp;#34;&lt;/span>, v.name),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .&lt;span style="color:#719e07">await&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .expect(&lt;span style="color:#2aa198">&amp;#34;working rx&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">if&lt;/span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#b58900">Some&lt;/span>(io_err) &lt;span style="color:#719e07">=&lt;/span> match_for_io_error(&lt;span style="color:#719e07">&amp;amp;&lt;/span>err) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">if&lt;/span> io_err.kind() &lt;span style="color:#719e07">==&lt;/span> ErrorKind::BrokenPipe {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> eprintln!(&lt;span style="color:#2aa198">&amp;#34;&lt;/span>&lt;span style="color:#cb4b16">\t&lt;/span>&lt;span style="color:#2aa198">client disconnected: broken pipe&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">match&lt;/span> tx.send(&lt;span style="color:#b58900">Err&lt;/span>(err)).&lt;span style="color:#719e07">await&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(_) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> (),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(_err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> &lt;span style="color:#719e07">break&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;&lt;/span>&lt;span style="color:#cb4b16">\t&lt;/span>&lt;span style="color:#2aa198">stream ended&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> });
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> out_stream &lt;span style="color:#719e07">=&lt;/span> ReceiverStream::new(rx);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(Response::new(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Box&lt;/span>::pin(out_stream) &lt;span style="color:#719e07">as&lt;/span> &lt;span style="color:#268bd2">Self&lt;/span>::greetStreamStream
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">match_for_io_error&lt;/span>(err_status: &lt;span style="color:#719e07">&amp;amp;&lt;/span>&lt;span style="color:#268bd2">dubbo&lt;/span>::status::Status) -&amp;gt; &lt;span style="color:#b58900">Option&lt;/span>&lt;span style="color:#719e07">&amp;lt;&amp;amp;&lt;/span>std::io::Error&lt;span style="color:#719e07">&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#719e07">mut&lt;/span> err: &lt;span style="color:#719e07">&amp;amp;&lt;/span>(&lt;span style="color:#719e07">dyn&lt;/span> std::error::Error &lt;span style="color:#719e07">+&lt;/span> &lt;span style="color:#b58900">&amp;#39;static&lt;/span>) &lt;span style="color:#719e07">=&lt;/span> err_status;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">loop&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">if&lt;/span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#b58900">Some&lt;/span>(io_err) &lt;span style="color:#719e07">=&lt;/span> err.downcast_ref::&lt;span style="color:#719e07">&amp;lt;&lt;/span>std::io::Error&lt;span style="color:#719e07">&amp;gt;&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#b58900">Some&lt;/span>(io_err);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> err &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">match&lt;/span> err.source() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Some&lt;/span>(err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> err,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">None&lt;/span> &lt;span style="color:#719e07">=&amp;gt;&lt;/span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#b58900">None&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> };
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="22-writing-the-streaming-client">2.2 Writing the Streaming Client&lt;/h3>
&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-rust" data-lang="rust">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// ./src/greeter/client.rs
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>&lt;span style="color:#719e07">pub&lt;/span> &lt;span style="color:#719e07">mod&lt;/span> protos {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> include!(concat!(env!(&lt;span style="color:#2aa198">&amp;#34;OUT_DIR&amp;#34;&lt;/span>), &lt;span style="color:#2aa198">&amp;#34;/org.apache.dubbo.sample.tri.rs&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> dubbo::codegen::&lt;span style="color:#719e07">*&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> futures_util::StreamExt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">use&lt;/span> protos::{greeter_client::GreeterClient, GreeterRequest};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">#[tokio::main]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">async&lt;/span> &lt;span style="color:#719e07">fn&lt;/span> &lt;span style="color:#268bd2">main&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#719e07">mut&lt;/span> cli &lt;span style="color:#719e07">=&lt;/span> GreeterClient::new().with_uri(&lt;span style="color:#2aa198">&amp;#34;http://127.0.0.1:8888&amp;#34;&lt;/span>.to_string());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;# unary call&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> resp &lt;span style="color:#719e07">=&lt;/span> cli
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .greet(Request::new(GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;message from client&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .&lt;span style="color:#719e07">await&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> resp &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">match&lt;/span> resp {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(resp) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> resp,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> &lt;span style="color:#719e07">return&lt;/span> println!(&lt;span style="color:#2aa198">&amp;#34;&lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, err),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> };
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> (_parts, body) &lt;span style="color:#719e07">=&lt;/span> resp.into_parts();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;Response: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, body);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;# client stream&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> data &lt;span style="color:#719e07">=&lt;/span> vec![
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;msg1 from client streaming&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;msg2 from client streaming&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;msg3 from client streaming&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> req &lt;span style="color:#719e07">=&lt;/span> futures_util::stream::iter(data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> resp &lt;span style="color:#719e07">=&lt;/span> cli.greet_client_stream(req).&lt;span style="color:#719e07">await&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> client_streaming_resp &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">match&lt;/span> resp {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(resp) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> resp,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> &lt;span style="color:#719e07">return&lt;/span> println!(&lt;span style="color:#2aa198">&amp;#34;&lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, err),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> };
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> (_parts, resp_body) &lt;span style="color:#719e07">=&lt;/span> client_streaming_resp.into_parts();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;client streaming, Response: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, resp_body);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;# bi stream&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> data &lt;span style="color:#719e07">=&lt;/span> vec![
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;msg1 from client&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;msg2 from client&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;msg3 from client&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> req &lt;span style="color:#719e07">=&lt;/span> futures_util::stream::iter(data);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> bidi_resp &lt;span style="color:#719e07">=&lt;/span> cli.greet_stream(req).&lt;span style="color:#719e07">await&lt;/span>.unwrap();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> (parts, &lt;span style="color:#719e07">mut&lt;/span> body) &lt;span style="color:#719e07">=&lt;/span> bidi_resp.into_parts();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;parts: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, parts);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">while&lt;/span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#b58900">Some&lt;/span>(item) &lt;span style="color:#719e07">=&lt;/span> body.next().&lt;span style="color:#719e07">await&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">match&lt;/span> item {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(v) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;reply: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, v);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;err: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, err);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> trailer &lt;span style="color:#719e07">=&lt;/span> body.trailer().&lt;span style="color:#719e07">await&lt;/span>.unwrap();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;trailer: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, trailer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;# server stream&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> resp &lt;span style="color:#719e07">=&lt;/span> cli
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .greet_server_stream(Request::new(GreeterRequest {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: &lt;span style="color:#2aa198">&amp;#34;server streaming req&amp;#34;&lt;/span>.to_string(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .&lt;span style="color:#719e07">await&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> .unwrap();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> (parts, &lt;span style="color:#719e07">mut&lt;/span> body) &lt;span style="color:#719e07">=&lt;/span> resp.into_parts();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;parts: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, parts);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">while&lt;/span> &lt;span style="color:#268bd2">let&lt;/span> &lt;span style="color:#b58900">Some&lt;/span>(item) &lt;span style="color:#719e07">=&lt;/span> body.next().&lt;span style="color:#719e07">await&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">match&lt;/span> item {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Ok&lt;/span>(v) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;reply: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, v);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#b58900">Err&lt;/span>(err) &lt;span style="color:#719e07">=&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;err: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, err);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">let&lt;/span> trailer &lt;span style="color:#719e07">=&lt;/span> body.trailer().&lt;span style="color:#719e07">await&lt;/span>.unwrap();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> println!(&lt;span style="color:#2aa198">&amp;#34;trailer: &lt;/span>&lt;span style="color:#2aa198">{:?}&lt;/span>&lt;span style="color:#2aa198">&amp;#34;&lt;/span>, trailer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-running-the-example">3 Running the Example&lt;/h2>
&lt;ol>
&lt;li>Build&lt;/li>
&lt;/ol>
&lt;p>Run &lt;code>cargo build&lt;/code> to compile the server and client.&lt;/p></description></item><item><title>Specify timeout duration for service calls</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/timeout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/timeout/</guid><description>&lt;p>Setting a timeout for RPC calls can improve the overall stability of the cluster, avoiding resource occupation caused by waiting indefinitely for response results (e.g., a large number of long-running unresponsive requests occupying the thread pool). In cases of no response, for example, after 5 seconds, the Dubbo framework will automatically terminate the call wait process (throwing a TimeoutException) and release the resources occupied by this call.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>There are multiple ways to configure the RPC call timeout, from coarse-grained global defaults to independent configurations at the specific service or method level:&lt;/p></description></item><item><title>Traffic Management</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/traffic_management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/traffic_management/</guid><description>&lt;p>In this section, we will continue from the previous task &lt;a href="../deploy/">【Deploying Dubbo-go Applications in Istio Environment】&lt;/a>.&lt;/p>
&lt;p>In the previous task, we deployed a set of Dubbo-go Server and Client applications in the cluster and verified that service discovery and invocation were successful. In this section, we will create a new version of the server application. By configuring VirtualService and DestinationRule, we will achieve routing management and traffic shifting capabilities.&lt;/p>
&lt;h2 id="1-preparation">1. Preparation&lt;/h2>
&lt;ul>
&lt;li>The dubbo-go CLI tool and dependencies have been installed, as well as grpc_cli (for local debugging if needed).&lt;/li>
&lt;li>Docker, Helm, and kubectl environments have been installed. (Arm machines need to support docker buildx)&lt;/li>
&lt;li>The task &lt;a href="../deploy/">【Deploying Dubbo-go Applications in Istio Environment】&lt;/a> has been completed.&lt;/li>
&lt;/ul>
&lt;h2 id="2-develop-multi-version-dubbo-go-applications">2. Develop Multi-Version Dubbo-go Applications.&lt;/h2>
&lt;h3 id="21-create-another-project-template-using-dubbogo-cli">2.1 Create Another Project Template Using dubbogo-cli&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ dubbogo-cli newApp . 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="22-develop-and-deploy-client-dubbo-go-application-v2">2.2 Develop and Deploy Client Dubbo-go Application v2:&lt;/h3>
&lt;h4 id="write-business-logic">Write Business Logic&lt;/h4>
&lt;ul>
&lt;li>Modify the implementation method of package/service/service.go to return version number v2.0.0&lt;/li>
&lt;/ul>
&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (s &lt;span style="color:#719e07">*&lt;/span>GreeterServerImpl) &lt;span style="color:#268bd2">SayHello&lt;/span>(ctx context.Context, in &lt;span style="color:#719e07">*&lt;/span>api.HelloRequest) (&lt;span style="color:#719e07">*&lt;/span>api.User, &lt;span style="color:#dc322f">error&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>api.User{Name: &lt;span style="color:#2aa198">&amp;#34;Hello &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> in.Name, Id: &lt;span style="color:#2aa198">&amp;#34;v2.0.0&amp;#34;&lt;/span>}, &lt;span style="color:#cb4b16">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;p>Modify the following configuration file to use the xds protocol as the registration center, loading the service structure named GreeterServerImpl.&lt;/p></description></item><item><title>Access Dubbo Backend Services via Gateway for HTTP Traffic</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/triple/</guid><description>&lt;p>In the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protocols/triple-spec/">triple protocol specification&lt;/a>, we detailed the friendly design of the triple protocol for browsers and gateways, one very important aspect being that triple supports running on both HTTP/1 and HTTP/2:&lt;/p>
&lt;ul>
&lt;li>Use the efficient triple binary protocol between backend services.&lt;/li>
&lt;li>For the frontend access layer, it supports all standard HTTP tools like cURL to request backend services in standard &lt;code>application/json&lt;/code>, &lt;code>application/yaml&lt;/code>, etc.&lt;/li>
&lt;/ul>
&lt;p>Next, let’s see how to quickly access the backend triple microservice system through some common gateway products for frontend HTTP traffic.&lt;/p></description></item><item><title>Upgrade from 3.1 to 3.2</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.1-to-3.2-compatibility-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.1-to-3.2-compatibility-guide/</guid><description>&lt;p>For the vast majority of users, upgrading to Dubbo 3.2.0 is completely smooth, requiring only changes to the dependency version.&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;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.dubbo&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>dubbo&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.2.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;p>Or&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;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.dubbo&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>dubbo-spring-boot-starter&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.2.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;h1 id="compatibility-checklist">Compatibility CheckList&lt;/h1>
&lt;h2 id="1-serialization-check-mode-important">1. Serialization Check Mode (Important!!!)&lt;/h2>
&lt;p>In Dubbo 3.2.0, Dubbo will enable strong validation of the serialization whitelist by default to improve security and avoid remote command execution issues. For users with large service scales or those using generics, we recommend adding the configuration &lt;code>-Ddubbo.application.serialize-check-status=WARN&lt;/code>. After monitoring for a while (via logs, QoS commands), if no security warnings are triggered, strong validation mode can be configured.&lt;/p></description></item><item><title>Upgrade to Application-Level Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-service-discovery/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 &lt;ul>
&lt;li>The contents of this document are not mandatory for upgrading to Dubbo 3. You can absolutely just upgrade the framework and use the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/migration-service-discovery/">default behavior of the framework&amp;rsquo;s service discovery&lt;/a>.&lt;/li>
&lt;li>This document is more suitable for old Dubbo 2 users to understand the transition process and working principle of the service discovery model in the framework after upgrading to Dubbo 3. New users should directly &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/nacos/">configure to enable application-level service discovery&lt;/a>.&lt;/li>
&lt;/ul>


&lt;/div>

&lt;p>For old Dubbo 2 users, there are two choices when upgrading to Dubbo 3, and the only consideration for the decision is performance.&lt;/p></description></item><item><title>Users</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v2.x/introduction/users/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v2.x/introduction/users/</guid><description/></item><item><title>Users</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v3.x/introduction/users/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v3.x/introduction/users/</guid><description/></item><item><title>Using the dubbogo-cli Tool</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/use_dubbogo_cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/use_dubbogo_cli/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Deprecation Warning&lt;/h4>

 Starting from version 3.1.0 of dubbo-go, this tool is no longer applicable. This tool has been discontinued and will be replaced by dubboctl in the future. Please stay updated with community news to learn about the latest developments of dubboctl.

&lt;/div>

&lt;h2 id="1-installation">1. Installation&lt;/h2>
&lt;p>dubbogo-cli is a subproject of the Apache/dubbo-go ecosystem, providing convenient application template creation, tool installation, interface debugging, and other functions to improve developer efficiency.&lt;/p>
&lt;p>To install dubbogo-cli to $GOPATH/bin, run the following command:&lt;/p></description></item><item><title>Achieving Automatic Service Discovery with Zookeeper as a Registry Center</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/zookeeper/</guid><description>&lt;p>This example demonstrates the automatic service discovery using Zookeeper as a registry center, based on a Spring Boot application. You can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-zookeeper">full sample code&lt;/a>&lt;/p>
&lt;h2 id="1-basic-configuration">1 Basic Configuration&lt;/h2>
&lt;h3 id="11-adding-maven-dependencies">1.1 Adding Maven Dependencies&lt;/h3>
&lt;p>Add dependencies for dubbo, zookeeper, etc. &lt;code>dubbo-spring-boot-starter&lt;/code> will automatically add relevant client dependencies for Zookeeper, reducing the cost for users.&lt;/p>
&lt;p>For Spring Boot applications, you can use the following dependencies:&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;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.dubbo&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>dubbo-spring-boot-starter&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.3.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;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Use this dependency only when Zookeeper Server version is 3.4.x and below --&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>org.apache.dubbo&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>dubbo-zookeeper-spring-boot-starter&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.3.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;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Use this dependency only when Zookeeper Server version is 3.5.x and above
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&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;groupId&amp;gt;org.apache.dubbo&amp;lt;/groupId&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> &amp;lt;artifactId&amp;gt;dubbo-zookeeper-curator5-spring-boot-starter&amp;lt;/artifactId&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> &amp;lt;version&amp;gt;3.3.0&amp;lt;/version&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;/dependency&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">--&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Here, dubbo-zookeeper-spring-boot-starter or &lt;code>dubbo-zookeeper-curator5-spring-boot-starter&lt;/code> manages the zookeeper-related dependencies.&lt;/p></description></item><item><title>Website Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/website-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/website-guide_dev/</guid><description>&lt;ol>
&lt;li>The Apache Dubbo website repository is &lt;a href="https://github.com/apache/dubbo-website">https://github.com/apache/dubbo-website&lt;/a>&lt;/li>
&lt;li>Once the website is built, it will be automatically published to dubbo.apache.org, and you can also trigger it manually via &lt;a href="https://selfserve.apache.org">https://selfserve.apache.org&lt;/a> (requires logging in with an Apache account)&lt;/li>
&lt;/ol></description></item><item><title>Zipkin</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/zipkin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/zipkin/</guid><description>&lt;p>This example demonstrates a basic example of Dubbo integrating Zipkin for end-to-end tracing. For the complete code, please refer to &lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-spring-boot3-tracing" target="_blank">dubbo-samples-tracing-zipkin&lt;/a>, which consists of three parts:&lt;/p>
&lt;ul>
&lt;li>dubbo-samples-spring-boot3-tracing-provider&lt;/li>
&lt;li>dubbo-samples-spring-boot3-tracing-consumer&lt;/li>
&lt;li>dubbo-samples-spring-boot3-tracing-interface&lt;/li>
&lt;/ul>
&lt;h2 id="quick-start">Quick Start&lt;/h2>
&lt;h3 id="install--launch-zipkin">Install &amp;amp; Launch Zipkin&lt;/h3>
&lt;p>Refer to &lt;a href="https://zipkin.io/pages/quickstart.html">Zipkin&amp;rsquo;s quick start&lt;/a> to install Zipkin.&lt;/p>
&lt;p>Here we use Docker to demonstrate how to quickly start the Zipkin service.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker run -d -p 9411:9411 --name zipkin openzipkin/zipkin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Next, you can confirm that Zipkin is working properly through the following link: &lt;code>[http://localhost:9411](http://localhost:9411)&lt;/code>&lt;/p></description></item><item><title>Use Zookeeper as a Registration Center to Achieve Automatic Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/zookeeper/</guid><description>&lt;p>This example demonstrates how Zookeeper is used as a registration center for automatic service discovery, based on a Spring Boot application. You can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-zookeeper">full example code&lt;/a>.&lt;/p>
&lt;h2 id="1-basic-configuration">1 Basic Configuration&lt;/h2>
&lt;h3 id="11-Add-Maven-dependencies">1.1 Add Maven Dependencies&lt;/h3>
&lt;p>Add dependencies like dubbo and zookeeper. The &lt;code>dubbo-spring-boot-starter&lt;/code> will automatically add Zookeeper-related client dependencies for the application, reducing the cost of using Zookeeper. If you encounter version compatibility issues, you can also choose to add Curator, Zookeeper Client, and other dependencies manually.&lt;/p></description></item><item><title>Zookeeper</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/zookeeper/</guid><description>&lt;h2 id="1-preparation">1 Preparation&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/spring-boot/">Dubbo Basic Development Steps&lt;/a>&lt;/li>
&lt;li>Install and start &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/zookeeper/">Zookeeper&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="2-instructions">2 Instructions&lt;/h2>
&lt;h3 id="21-adding-maven-dependency">2.1 Adding Maven Dependency&lt;/h3>
&lt;p>If the project has already enabled Zookeeper as the registry center, no additional configuration is needed.&lt;/p>
&lt;p>If Zookeeper is not used as the registry center, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/zookeeper#11-Add-Maven-dependencies">Add Zookeeper-related dependencies for the registry center&lt;/a>.&lt;/p>
&lt;h3 id="22-enable-zookeeper-configuration-center">2.2 Enable Zookeeper Configuration Center&lt;/h3>
&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:metadata-report&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;zookeeper://127.0.0.1:2181&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&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> metadata-report
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: zookeeper://127.0.0.1:2181
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-properties" data-lang="properties">&lt;span style="display:flex;">&lt;span>dubbo.metadata-report.address&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">zookeeper://127.0.0.1:2181&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>MetadataReportConfig metadataConfig &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> MetadataReportConfig();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>metadataConfig.setAddress(&lt;span style="color:#2aa198">&amp;#34;zookeeper://127.0.0.1:2181&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For the format of &lt;code>address&lt;/code>, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/zookeeper#13-Configure-and-enable-Zookeeper">zookeeper register center - Enable Configuration&lt;/a>&lt;/p></description></item><item><title>快速开始</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v2.x/quick-start/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v2.x/quick-start/quick-start/</guid><description>&lt;p>链接到各个生态的quick-start&lt;/p></description></item><item><title>用户列表</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v2.x/concepts-and-architecture/users/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v2.x/concepts-and-architecture/users/</guid><description/></item><item><title>用户列表</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v3.x/concepts-and-architecture/users/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/java-sdk/v3.x/concepts-and-architecture/users/</guid><description/></item><item><title>网站向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/website-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/website-guide_dev/</guid><description>&lt;ol>
&lt;li>Apache Dubbo 的网站仓库是 &lt;a href="https://github.com/apache/dubbo-website">https://github.com/apache/dubbo-website&lt;/a>&lt;/li>
&lt;li>网站构建完毕后，它会被自动发布到 dubbo.apache.org，您也可以通过 &lt;a href="https://selfserve.apache.org">https://selfserve.apache.org&lt;/a> 手动触发（需要使用 Apache 账号登陆）&lt;/li>
&lt;/ol></description></item><item><title>邮件列表订阅向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/mailing-list-subscription-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/mailing-list-subscription-guide_dev/</guid><description>&lt;p>Apache incubator 的 Dubbo 开发者邮件列表（dev@dubbo.apache.org）已经建立，请随时订阅并参考[^1]获取更多细节。&lt;/p>
&lt;p>你也可以直接查看&lt;a href="https://lists.apache.org/list.html?dev@dubbo.apache.org">历史邮件&lt;/a>&lt;/p>
&lt;p>下面是一个关于 Dubbo 邮件列表订阅的简短指南：&lt;/p>
&lt;ol>
&lt;li>发一封邮件到 &lt;a href="mailto:dev-subscribe@dubbo.apache.org">dev-subscribe@dubbo.apache.org&lt;/a>，其内容和标题均可为空。随后，您会收到一封邮件，其内容如下：&lt;/li>
&lt;/ol>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>from: dev-help@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>reply-to: dev-sc.xxxxxxx.xxxxxxxx-hello=example.com@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to: hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>date: Sat, Feb 24, 2018 at 3:12 PM
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subject: confirm subscribe to dev@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mailed-by: apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hi! This is the ezmlm program. I&amp;#39;m managing the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dev@dubbo.apache.org mailing list.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&amp;#39;m working for my owner, who can be reached
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>at dev-owner@dubbo.apache.org.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>To confirm that you would like
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>added to the dev mailing list, please send
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>a short reply to this address:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dev-sc.xxxxxxx.xxxxxxxx-hello=example.com@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Usually, this happens when you just hit the &amp;#34;reply&amp;#34; button.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>If this does not work, simply copy the address and paste it into
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>the &amp;#34;To:&amp;#34; field of a new message.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>or click here:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mailto:dev-sc.xxxxxxx.xxxxxxxx-hello=example.com@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>直接回复邮件，其内容和标题仍然可以为空，随后，您将再次收到一封邮件，其内容如下：&lt;/li>
&lt;/ol>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>from: dev-help@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to: hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>date: Sat, Feb 24, 2018 at 3:14 PM
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subject: WELCOME to dev@dubbo.apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mailed-by: apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hi! This is the ezmlm program. I&amp;#39;m managing the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dev@dubbo.apache.org mailing list.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&amp;#39;m working for my owner, who can be reached
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>at dev-owner@dubbo.apache.org.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Acknowledgment: I have added the address
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> hello@example.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to the dev mailing list.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Welcome to dev@dubbo.apache.org!
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please save this message so that you know the address you are
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subscribed under, in case you later want to unsubscribe or change your
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subscription address.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>
&lt;p>到此，邮件列表订阅完毕，从现在开始，您将收到很多发送到该邮件列表的邮件，如果您有更多的问题，只需发送邮件到dev@dubbo.apache.org，就会有人回答您的问题。&lt;/p></description></item><item><title>给问题打标签</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/label-an-issue-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/label-an-issue-guide_dev/</guid><description>&lt;p>如果您正在处理一个问题，请记得&lt;strong>给这个问题标记一个或者多个您认为有意义的标签&lt;/strong>。有了标签，其他开发人员就会很轻松地识别出问题，以便对其进行分类并跟踪进度。&lt;/p>
&lt;p>对于需要编码和发版修复的 issues 和 pull requests，需要您&lt;strong>将其标记为 &lt;a href="https://github.com/apache/dubbo/milestones">milestone&lt;/a>&lt;/strong>。&lt;/p>
&lt;p>一些常用的标签：&lt;/p>
&lt;ul>
&lt;li>请求帮助
&lt;ul>
&lt;li>help wanted&lt;/li>
&lt;li>good first issue&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>优先级
&lt;ul>
&lt;li>priority/blocker&lt;/li>
&lt;li>priority/high&lt;/li>
&lt;li>priority/low&lt;/li>
&lt;li>priority/normal&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>状态
&lt;ul>
&lt;li>status/need-triage&lt;/li>
&lt;li>status/DO-NOT-MERGE&lt;/li>
&lt;li>status/READY-TO-MERGE&lt;/li>
&lt;li>status/invalid&lt;/li>
&lt;li>status/wontfix&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>类型
&lt;ul>
&lt;li>type/bug&lt;/li>
&lt;li>type/documentation&lt;/li>
&lt;li>type/enhancement&lt;/li>
&lt;li>type/feature&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Metrics tracking</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/metrics/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/metrics/</guid><description>&lt;h1 id="overview">Overview&lt;/h1>
&lt;h2 id="1-metrics-access-instructions">1. Metrics Access Instructions&lt;/h2>
&lt;h2 id="2-metrics-system-design">2. Metrics System Design&lt;/h2>
&lt;p>The metrics system of Dubbo involves three aspects: metrics collection, local aggregation, and metrics pushing.&lt;/p>
&lt;ul>
&lt;li>Metrics Collection: Push metrics that need to be monitored internally in Dubbo to a unified Collector for storage.&lt;/li>
&lt;li>Local Aggregation: Basic metrics are obtained from metrics collection, while some quantile metrics need to be calculated through local aggregation.&lt;/li>
&lt;li>Metrics Pushing: Collected and aggregated metrics are pushed to a third-party server in a specific manner, currently only involving Prometheus.&lt;/li>
&lt;/ul>
&lt;h2 id="3-structural-design">3. Structural Design&lt;/h2>
&lt;ul>
&lt;li>Remove the original classes related to Metrics&lt;/li>
&lt;li>Create new modules dubbo-metrics/dubbo-metrics-api, dubbo-metrics/dubbo-metrics-prometheus, with MetricsConfig as the configuration class for these modules&lt;/li>
&lt;li>Use micrometer, and in the Collector, use basic types to represent metrics, such as Long, Double, etc., and introduce micrometer in dubbo-metrics-api to convert internal metrics.&lt;/li>
&lt;/ul>
&lt;h2 id="4-data-flow">4. Data Flow&lt;/h2>
&lt;p>&lt;img alt="img.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/java-sdk/observability/dataflow.png">&lt;/p></description></item><item><title>Dingxiaomi Upgrades to Triple Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/dingxiaomi-upgrades-to-triple-protocol/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/dingxiaomi-upgrades-to-triple-protocol/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>Alibaba Cloud - DAMO Academy - Cloud Xiaomi conversational robot product is based on deep machine learning technology, natural language understanding technology, and dialogue management technology, providing enterprises with multi-engine, multi-channel, and multi-modal conversational robot services. In 2017, Cloud Xiaomi&amp;rsquo;s conversational robot started public testing on the public cloud, and continuously expanded in hybrid cloud scenarios. To ensure efficiency and stability in public and hybrid cloud releases, we adopted a major version iteration every 1-2 months after much consideration.&lt;/p></description></item><item><title>Guazi Used Car Dubbo Practice</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/guazi-used-car-dubbo-practice/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/guazi-used-car-dubbo-practice/</guid><description>&lt;h2 id="preface">Preface&lt;/h2>
&lt;p>  With the continuous development of Guazi&amp;rsquo;s business, the system scale is gradually expanding. Currently, there are hundreds of Dubbo applications and thousands of Dubbo instances running on Guazi’s private cloud. Various departments at Guazi are rapidly developing their businesses, and the versions have not had the chance to unify, leading to different usage styles across departments. With the construction of the second data center, the demand for a unified Dubbo version has become increasingly urgent. A production incident related to Dubbo occurred months ago, which became the catalyst for upgrading the Dubbo version in the company.&lt;/p></description></item><item><title>Xiaomi's Collaboration with the Dubbo Community</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/xiaomis-collaboration-with-the-dubbo-community/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/xiaomis-collaboration-with-the-dubbo-community/</guid><description>&lt;p>Xiaomi is devoted to making continuous contributions to the open-source community. Since the introduction of Dubbo3, internal projects are rapidly upgrading to the latest version of Dubbo. Currently, the number of instances has been upgraded to a certain proportion. Not only have performance improvements been seen, but services are also running smoothly with improvements in availability. Statistics provide proof that Dubbo’s switch from API-level discovery to application-level discovery has improved the availability and reliability of service discovery, leading to lower operation costs. In addition, using ProtoBuf for serialization and deserialization has reduced the data exchange size. Lastly, full compatibility with gRPC provides convenience to Xiaomi’s multi-language development environment.&lt;/p></description></item><item><title>Zhonglun Network Dubbo3 Upgrade Practice</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/zhonglun-network-dubbo3-upgrade-practice/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/zhonglun-network-dubbo3-upgrade-practice/</guid><description>&lt;p>Zhonglun Network completed a full upgrade from Dubbo2 to Dubbo3 in 2022, deeply utilizing core capabilities such as application-level service discovery, Kubernetes native service deployment, and service governance. The technical leader from Zhonglun Network, Lai Binbin, provided an in-depth summary of the selection, upgrade process, and benefits of Dubbo3.&lt;/p>
&lt;p>It&amp;rsquo;s worth mentioning that the recent &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/">Dubbo3 official documentation&lt;/a> has undergone significant enhancements, and the community has committed substantial effort to improving the documentation in the near term, which is crucial for the use of Dubbo3 and the enhancement of user confidence.&lt;/p></description></item><item><title>0-4 - Cache Entry Limit Exceeded</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/4/</guid><description>&lt;p>Other modules reuse the file-based caching mechanism of the Common layer (currently the metadata module), and the Common layer&amp;rsquo;s file cache mechanism has &amp;ldquo;detected&amp;rdquo; that the entry limit has been exceeded.&lt;/p>
&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Users have irrationally configured the &lt;strong>Java System Property&lt;/strong> (configured with -D) &lt;code>dubbo.mapping.cache.entrySize&lt;/code> or &lt;code>dubbo.meta.cache.entrySize&lt;/code>.&lt;/p>
&lt;p>&lt;strong>Default Values&lt;/strong>&lt;/p>
&lt;style>
 .sheet-border, .sheet-border tr, .sheet-border tr td {
 border-width: 1px;
 border-color: black;
 text-align: center;
 }

 .sheet-border tr td {
 height: 48px;
 width: 83px;
 border-style: solid;
 padding: 0.6rem 0.6rem;
 }

 .sheet-header td {
 font-weight: bold;
 background: #cccccc;
 }
&lt;/style>
&lt;table class="sheet-border">
 &lt;tr class="sheet-header">
 &lt;td>dubbo.mapping.cache.entrySize&lt;/td>
 &lt;td>dubbo.meta.cache.entrySize&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>10000&lt;/td>
 &lt;td>100&lt;/td>
 &lt;/tr>
&lt;/table>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Try reconfiguring the above &lt;strong>Java System Property (configured with -D)&lt;/strong>.&lt;/li>
&lt;li>If these &lt;strong>System Properties&lt;/strong> are not configured at all, please issue a report on the &lt;a href="https://github.com/apache/dubbo/issues">GitHub Issue Tracker&lt;/a>.&lt;/li>
&lt;/ol></description></item><item><title>1-4 - Empty Address</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The 1-4 error in &lt;code>registry.integration.RegistryDirectory&lt;/code> is caused by &lt;code>invokerUrls&lt;/code> being empty during the &lt;code>refreshInvoker&lt;/code> process, which can be ignored.&lt;/li>
&lt;li>The 1-4 error in &lt;code>registry.support.CacheableFailbackRegistry&lt;/code> may be caused by a mismatch between the consumer and provider, and the “empty protection” being disabled.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Ensure that the service group configurations on both the Provider and Consumer sides correspond.&lt;/li>
&lt;li>Ensure that the service version configurations on both the Provider and Consumer sides correspond.&lt;/li>
&lt;li>Check whether &lt;code>enable-empty-protection&lt;/code> in the registry center is set to true (default is true).&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Reference Manual&lt;/a>&lt;/p></description></item><item><title>2-4 - Merger interface loading failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>Dubbo provides the SPI extension Merger interface, which aggregates responses from all downstream providers. Dubbo fails to load the configuration when loading user-defined extension Merger interfaces.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Refer to the community SPI extension usage manual to check the implementation of the user-defined extension Merger interface &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/">“SPI Extension Usage Manual”&lt;/a> .&lt;/p>
&lt;/blockquote></description></item><item><title>3-4 - Client request timeout</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The client has too many connections, causing slow response times and unable to timely send requests to the server.&lt;/li>
&lt;li>Some network issues.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the network is functioning properly.&lt;/li>
&lt;li>You can analyze stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnostics.&lt;/li>
&lt;/ol></description></item><item><title>4-4 - Unsafe Serialization Method</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Currently using an unsafe serializer, which is not recommended. The specific configuration is: &lt;code>serialization=&amp;quot;java&amp;quot;&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>Java serialization is unsafe. The Dubbo team does not recommend anyone to use it. If you still want to use it, please follow &lt;a href="https://openjdk.java.net/jeps/290">JEP 290&lt;/a> to set up a serialization filter to prevent deserialization leaks.&lt;/p>
&lt;/blockquote>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Modify the &lt;code>serialization&lt;/code> parameter value. Change the serialization parameter value within the protocol to something else, such as hessian2, fastjson2, etc.&lt;/p></description></item><item><title>5-4 - Method not found in service interface</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The interface name/method called by the consumer does not exist.&lt;/li>
&lt;li>The server has not correctly exposed the current interface.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether the interface name/method called by the consumer exists.&lt;/li>
&lt;li>Check whether it is listed in the services exposed by the server.&lt;/li>
&lt;/ol></description></item><item><title>6-4 - Unknown Exception in Network Communication Layer</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;blockquote>
&lt;p>The meaning of this error code has been adjusted. For the error of this error code in Dubbo 3.1.4, 3.2.0-beta.3, and earlier versions, please refer to error code &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/faq/99/0/">99-0&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>(This error code currently has no details)&lt;/p></description></item><item><title>7-4 - QOS Service Startup Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The QOS parameter values are not set correctly. The main parameters are &lt;code>qos.host&lt;/code> and &lt;code>qos.port&lt;/code>.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Please refer to the QOS operation manual &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/overview/">QOS Overview&lt;/a>.&lt;/p>
&lt;/blockquote></description></item><item><title>81-4 - Embedded ZooKeeper Runtime Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/81/4/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The ZooKeeper service is running abnormally or has crashed.&lt;/li>
&lt;li>The version of the ZooKeeper client is incompatible with the version of the server and cannot connect.&lt;/li>
&lt;li>The application server is disconnected from the ZooKeeper service.&lt;/li>
&lt;li>Restricted firewall or third-party protection tools.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the health status of the ZooKeeper service and the server it is on.&lt;/li>
&lt;li>Check for compatibility issues between the ZooKeeper client version and the server&amp;rsquo;s startup version, keeping the versions consistent.&lt;/li>
&lt;li>Check if the port between the application server and the ZooKeeper service is open.&lt;/li>
&lt;li>Check the settings of the firewall or third-party protection tools to see if they have been blocked.&lt;/li>
&lt;/ol></description></item><item><title>Apollo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/apollo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/apollo/</guid><description>&lt;h2 id="1-preconditions">1 Preconditions&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="../../../quick-start/spring-boot/">the basic development steps of Dubbo&lt;/a>&lt;/li>
&lt;li>Install and start &lt;a href="https://www.apolloconfig.com/#/zh/README">Apollo&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="2-usage-instructions">2 Usage Instructions&lt;/h2>
&lt;p>View the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/configcenter/dubbo-samples-configcenter-apollo">complete example code&lt;/a>&lt;/p>
&lt;h3 id="21-add-maven-dependency">2.1 Add Maven Dependency&lt;/h3>
&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.dubbo&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>dubbo&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.0.9&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;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.ctrip.framework.apollo&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>apollo-openapi&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>2.0.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;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.ctrip.framework.apollo&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>apollo-client&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>2.0.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;h3 id="22-enable-apollo-configuration-center">2.2 Enable Apollo Configuration Center&lt;/h3>
&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:config-center&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;apollo://localhost:8080&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&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> config-center
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: apollo://localhost:8080
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-properties" data-lang="properties">&lt;span style="display:flex;">&lt;span>dubbo.config-center.address&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">apollo://localhost:8080&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>ConfigCenterConfig configCenter &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> ConfigCenterConfig();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>configCenter.setAddress(&lt;span style="color:#2aa198">&amp;#34;apollo://localhost:8080&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-advanced-configuration">3 Advanced Configuration&lt;/h2>
&lt;p>A core concept in Apollo is the namespace, which is different from the namespace concepts of Zookeeper and Nacos. Therefore, the usage is somewhat special; it is recommended to fully understand Apollo&amp;rsquo;s usage before reading the following document content.&lt;/p></description></item><item><title>Software Donation Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/software-donation-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/software-donation-guide_dev/</guid><description>&lt;p>Before you read this guide, please ensure that you have confirmed the actual SGA needed with the PMC.&lt;/p>
&lt;p>If you are donating a significant amount of code or documentation to Apache Dubbo, you will need to sign the &lt;a href="https://www.apache.org/licenses/#grants">Software Grant&lt;/a> before merging the code or documentation.&lt;/p>
&lt;h3 id="steps-to-follow">Steps to Follow&lt;/h3>
&lt;ol>
&lt;li>Download this &lt;a href="https://www.apache.org/licenses/software-grant-template.pdf">pdf document&lt;/a>&lt;/li>
&lt;li>Print the downloaded document&lt;/li>
&lt;li>Fill out the form as required (see the example below)&lt;/li>
&lt;li>Have your supervisor sign above&lt;/li>
&lt;li>Scan the document&lt;/li>
&lt;li>Email the scanned document to &lt;a href="mailto:secretary@apache.org">secretary@apache.org&lt;/a>, with a copy to &lt;a href="mailto:private@dubbo.apache.org">private@dubbo.apache.org&lt;/a>&lt;/li>
&lt;/ol>
&lt;h3 id="example">Example&lt;/h3>
&lt;p>Below is a text example; the original text can be found &lt;a href="https://www.apache.org/licenses/software-grant.txt">here&lt;/a>&lt;/p></description></item><item><title>Dubbo Admin Security</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/admin/</guid><description>&lt;p>To facilitate the use of Dubbo, the official Dubbo team provides the Dubbo Admin console to manage Dubbo applications.&lt;/p>
&lt;h2 id="risks">Risks&lt;/h2>
&lt;p>Dubbo Admin by default has the permission to query and invoke the entire cluster, so it must be used more cautiously in a production environment. Additionally, to reduce the risk of arbitrary access to Dubbo Admin, a simple authentication mechanism is provided. To make Dubbo Admin more secure, please refer to the following documentation.&lt;/p></description></item><item><title>Configuration Rule</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/configuration-rule/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/configuration-rule/</guid><description>&lt;p>Configuration Rule (ConfigurationRule) is a capability designed by Dubbo to dynamically adjust RPC call behavior without restarting the application. It is also known as a dynamic override rule because it changes RPC call behavior by overriding various parameter values of Dubbo instances or URLs within Dubbo instances at runtime.&lt;/p>
&lt;p>When using configuration rules, there are several key points to note:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Set rule effective filter conditions.&lt;/strong> Configuration rules support a series of filter conditions to limit the rules to only apply to services, applications, or instances that meet specific conditions.&lt;/li>
&lt;li>&lt;strong>Set rule effective scope.&lt;/strong> An RPC service has two roles: the service initiator (consumer) and the service handler (provider). Rules defined for a service can be specifically limited to take effect on either the consumer or the provider.&lt;/li>
&lt;li>&lt;strong>Choose rule management granularity.&lt;/strong> Dubbo supports managing and issuing rules from both service and application granularities.&lt;/li>
&lt;/ul>
&lt;p>The following is an application-level configuration example. After the configuration takes effect, all services provided under the &lt;code>shop-detail&lt;/code> application will enable accesslog, and it will take effect on all instances deployed under &lt;code>shop-detail&lt;/code>.&lt;/p></description></item><item><title>Dynamically Specify IP Call</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/specify-ip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/specify-ip/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>When initiating an RPC request, it is necessary to specify the server for this call. Common scenarios include message callbacks, traffic isolation, etc.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="plugin-dependency">Plugin Dependency&lt;/h3>
&lt;p>First, add the following plugin dependency to your project&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;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.dubbo.extensions&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>dubbo-cluster-specify-address-dubbo3&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.3.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;p>For Dubbo 2 version&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;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.dubbo.extensions&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>dubbo-cluster-specify-address-dubbo2&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>1.0.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;h3 id="call-example">Call Example&lt;/h3>
&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>ReferenceConfig&lt;span style="color:#719e07">&amp;lt;&lt;/span>DemoService&lt;span style="color:#719e07">&amp;gt;&lt;/span> referenceConfig &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> ReferenceConfig&lt;span style="color:#719e07">&amp;lt;&amp;gt;&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// ... init&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DemoService demoService &lt;span style="color:#719e07">=&lt;/span> referenceConfig.get();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// for invoke&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// 1. find 10.10.10.10:20880 exist&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// 2. if not exist, create a invoker to 10.10.10.10:20880 if `needToCreate` is true (only support in Dubbo 3.x&amp;#39;s implementation)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>UserSpecifiedAddressUtil.setAddress(&lt;span style="color:#719e07">new&lt;/span> Address(&lt;span style="color:#2aa198">&amp;#34;10.10.10.10&amp;#34;&lt;/span>, 20880, &lt;span style="color:#cb4b16">true&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>demoService.sayHello(&lt;span style="color:#2aa198">&amp;#34;world&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// for invoke&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// 1. find 10.10.10.10:any exist&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// 2. if not exist, create a invoker to 10.10.10.10:20880 if `needToCreate` is true (only support in Dubbo 3.x&amp;#39;s implementation)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>UserSpecifiedAddressUtil.setAddress(&lt;span style="color:#719e07">new&lt;/span> Address(&lt;span style="color:#2aa198">&amp;#34;10.10.10.10&amp;#34;&lt;/span>, 0, &lt;span style="color:#cb4b16">true&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>demoService.sayHello(&lt;span style="color:#2aa198">&amp;#34;world&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="parameter-description">Parameter Description&lt;/h3>
&lt;p>The parameters for specifying IP calls revolve around the &lt;code>Address&lt;/code> object. The parameter types are as follows:&lt;/p></description></item><item><title>Export Listener Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/exporter-listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/exporter-listener/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>This event is triggered when services are exposed.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.ExporterListener&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Service export listener --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:service&lt;/span> listener=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default listener for service export --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> listener=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extension">Known Extension&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.registry.directory.RegistryExporterListener&lt;/code>&lt;/p>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxExporterListener.java (implements ExporterListener interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.ExporterListener (plain text file, content: xxx=com.xxx.XxxExporterListener)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxExporterListener.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.ExporterListener;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.Exporter;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.RpcException;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxExporterListener&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> ExporterListener {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">exported&lt;/span>(Exporter&lt;span style="color:#719e07">&amp;lt;?&amp;gt;&lt;/span> exporter) &lt;span style="color:#268bd2">throws&lt;/span> RpcException {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">unexported&lt;/span>(Exporter&lt;span style="color:#719e07">&amp;lt;?&amp;gt;&lt;/span> exporter) &lt;span style="color:#268bd2">throws&lt;/span> RpcException {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.rpc.ExporterListener:&lt;/p></description></item><item><title>More Implementations of Configuration Center Extensions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/others/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config-center/others/</guid><description>&lt;p>The Dubbo framework also provides default implementations for configuration centers such as etcd and consul.&lt;/p>
&lt;h2 id="etcd">Etcd&lt;/h2>
&lt;p>The Etcd configuration center is maintained by the community ecosystem library, for more details see &lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-configcenter-extensions/dubbo-configcenter-etcd">&lt;/a>.&lt;/p>
&lt;p>Add dependency:&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;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.dubbo.extensions&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>dubbo-configcenter-etcd&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.3.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;p>Adjust configuration:&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> config-center
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: etcd://127.0.0.1:1111
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="consul">Consul&lt;/h2>
&lt;p>The Consul configuration center is maintained by the community ecosystem library, for more details see &lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-configcenter-extensions/dubbo-configcenter-consul">&lt;/a>.&lt;/p>
&lt;p>Add dependency:&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;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.dubbo.extensions&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>dubbo-configcenter-consul&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.3.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;p>Adjust configuration:&lt;/p></description></item><item><title>More Metadata Center Extension Implementations</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/others/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/metadata-center/others/</guid><description>&lt;p>The Dubbo framework also provides default implementations for metadata center adapters such as Redis, etcd, and Consul.&lt;/p>
&lt;h2 id="redis">Redis&lt;/h2>
&lt;p>The Redis implementation is provided by the core library but requires the following dependency:&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;dependency&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>redis.clients&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>jedis&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.10.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;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;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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> metadata-report
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: redis://127.0.0.1:1111
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-properties" data-lang="properties">&lt;span style="display:flex;">&lt;span>dubbo.metadata-report.address&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">redis://127.0.0.1:1111&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="etcd">Etcd&lt;/h2>
&lt;p>The etcd metadata center is maintained by the community ecosystem library. For details, see &lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-metadata-report-extensions/dubbo-metadata-report-etcd">&lt;/a>.&lt;/p>
&lt;p>Add the dependency:&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;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.dubbo.extensions&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>dubbo-metadata-report-etcd&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.3.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;p>Adjust the configuration:&lt;/p></description></item><item><title>Fastjson</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fastjson/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fastjson/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>Fastjson is a Java library used to convert Java objects to their JSON representation. It can also be used to convert JSON strings to equivalent Java objects. Fastjson can handle any Java object, including pre-existing objects for which you do not have source code.&lt;/p>
&lt;h2 id="2-how-to-use">2 How to Use&lt;/h2>
&lt;h3 id="21-adding-dependencies">2.1 Adding Dependencies&lt;/h3>
&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>org.apache.dubbo.extensions&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>dubbo-serialization-fastjson&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.3.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;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.alibaba&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>fastjson&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>1.2.83&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-configuration-enabling">2.2 Configuration Enabling&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">serialization&lt;/span>: fastjson
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&lt;/p></description></item><item><title>Reporting Security Issues</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/reporting-security-issues_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/reporting-security-issues_dev/</guid><description>&lt;p>The Apache Software Foundation takes a strict stance on eliminating security issues in its software projects. Apache Dubbo is very sensitive to issues related to its functionality and features and addresses them promptly.&lt;/p>
&lt;h2 id="reporting-vulnerabilities">Reporting Vulnerabilities&lt;/h2>
&lt;p>If you have concerns about the security of Dubbo, or if you discover vulnerabilities or potential threats, please email the Apache Dubbo security team at &lt;a href="mailto:security@dubbo.apache.org">security@dubbo.apache.org&lt;/a>. In your email, specify a description of the issue or potential threat. You are also encouraged to suggest ways to reproduce and replicate the issue. The Dubbo community will reach out to you after evaluating and analyzing the investigation results.&lt;/p></description></item><item><title>Framework status commands</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/probe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/probe/</guid><description>&lt;h3 id="startup-command">startup command&lt;/h3>
&lt;p>Check whether the current framework has started completely&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;startup
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="ready-command">ready command&lt;/h3>
&lt;p>Check whether the current framework can provide services normally (it may be temporarily offline)&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;ready
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="live-command">live command&lt;/h3>
&lt;p>Check whether the current framework is running normally (it may be permanently abnormal)&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;live
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Multicast</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/multicast/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/multicast/</guid><description>&lt;p>The Multicast registry center does not require starting any central node; as long as the broadcast addresses are the same, they can discover each other.&lt;/p>
&lt;p>&lt;img alt="/user-guide/images/multicast.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/multicast.jpg">&lt;/p>
&lt;h2 id="1-usage-instructions">1 Usage Instructions&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;dubbo:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;multicast://224.5.6.7:1234&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&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;multicast&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;224.5.6.7:1234&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="note">Note:&lt;/h4>
&lt;p>To reduce broadcast volume, Dubbo defaults to sending provider address information to consumers via unicast. If multiple consumer processes are started on one machine, the consumer must declare &lt;code>unicast=false&lt;/code>, otherwise only one consumer will receive the message; when the provider and consumer run on the same machine, the consumer also needs to declare &lt;code>unicast=false&lt;/code>, otherwise the consumer cannot receive messages, leading to the No provider available for the service exception:&lt;/p></description></item><item><title>Multiple Protocols</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/multi-protocols/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/multi-protocols/</guid><description>&lt;p>Unlike ordinary RPC frameworks, Dubbo, as a microservices framework, provides very flexible protocol support and does not bind to a single communication protocol. Therefore, you &lt;strong>can publish multiple RPC protocols simultaneously in one process and call different RPC protocols&lt;/strong>. Next, we will detail the specific use cases and methods for multiple protocols.&lt;/p>
&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>There are many scenarios where different protocols may be needed, including security, performance, and interaction with third-party systems. This article does not analyze specific business requirements but instead explores the multi-protocol capabilities provided by the Dubbo framework:&lt;/p></description></item><item><title>Use Nacos as a Registry for Automatic Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/nacos/</guid><description>&lt;p>This example demonstrates automatic service discovery using Nacos as a registry based on a Spring Boot application. You can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-nacos">complete example code&lt;/a>.&lt;/p>
&lt;h2 id="1-basic-configuration">1 Basic Configuration&lt;/h2>
&lt;h3 id="11-Add-Dependency">1.1 Add Dependencies&lt;/h3>
&lt;p>For Spring Boot applications, use the following spring-boot-starter:&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;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.dubbo&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>dubbo-spring-boot-starter&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.3.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;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.dubbo&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>dubbo-nacos-spring-boot-starter&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.3.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;p>Non-Spring Boot users can add dubbo and nacos-client dependencies:&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>org.apache.dubbo&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>dubbo&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.3.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;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.alibaba.nacos&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>nacos-client&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>2.1.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;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="Nacos-Version">1.2 Nacos Version Mapping&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Dubbo&lt;/th>
 &lt;th style="text-align: left">Recommended Nacos Version&lt;/th>
 &lt;th style="text-align: left">Nacos Compatibility Range&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">3.3.0&lt;/td>
 &lt;td style="text-align: left">2.3.0&lt;/td>
 &lt;td style="text-align: left">2.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">3.2.21&lt;/td>
 &lt;td style="text-align: left">2.1.0&lt;/td>
 &lt;td style="text-align: left">2.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">3.1.11&lt;/td>
 &lt;td style="text-align: left">2.0.9&lt;/td>
 &lt;td style="text-align: left">2.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">3.0.10&lt;/td>
 &lt;td style="text-align: left">2.0.9&lt;/td>
 &lt;td style="text-align: left">2.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">2.7.21&lt;/td>
 &lt;td style="text-align: left">Latest 1.x Version&lt;/td>
 &lt;td style="text-align: left">1.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">2.6.0&lt;/td>
 &lt;td style="text-align: left">Latest 1.x Version&lt;/td>
 &lt;td style="text-align: left">1.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="13-configure-and-enable-nacos">1.3 Configure and Enable Nacos&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> registry
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: nacos://localhost:8848
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&lt;/p></description></item><item><title>Non-Protobuf Mode Protocol Interoperability (Applicable to Old Version Dubbo Java Applications)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java_protocol_dubbo_non_protobuf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java_protocol_dubbo_non_protobuf/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Before reading this document, please remember that we recommend using the protobuf+triple model to write services that are interoperable between Java and Go. This article only applies if you already have an old version of a Dubbo Java application; otherwise, please refer to the previous documentation for developing services using protobuf+triple.

&lt;/div>

&lt;p>You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/java_interop/non-protobuf-dubbo">complete example source code&lt;/a> here.&lt;/p>
&lt;h2 id="go-client-calling-java-server">Go-client Calling Java-server&lt;/h2>
&lt;p>If you are an old user of Dubbo Java, your Dubbo Java application may not be using Protobuf (defining services directly using Java interfaces). In this case, you need to develop the Dubbo Go-client as follows to call the older version of Dubbo services.&lt;/p></description></item><item><title>Passing Additional Parameters</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/attachments/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/attachments/</guid><description>&lt;p>&lt;strong>The most straightforward way to understand implicit parameter passing is through the HTTP header, which works exactly like an HTTP header, allowing any number of header parameters to be passed outside of the GET or POST request body.&lt;/strong> For RPC calls, the context provides the ability to pass additional parameters outside of the method signature&amp;rsquo;s parameters. The implementation varies slightly between different protocols:&lt;/p>
&lt;ul>
&lt;li>For the triple protocol, the attachment is converted into standard HTTP headers for transmission.&lt;/li>
&lt;li>For the Dubbo protocol, the attachment is encoded in a fixed location within the protocol body; please refer to the Dubbo protocol specification.&lt;/li>
&lt;/ul>
&lt;p>&lt;img alt="/user-guide/images/context.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/context.png">&lt;/p></description></item><item><title>Production Environment Verification</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/production-ready/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/advantages/production-ready/</guid><description>&lt;p>Apache Dubbo is an international open-source project with tens of thousands of enterprise users. It has been tested in large-scale cluster production environments for many years, influencing millions of developers and driving the development of a large microservices open-source ecosystem. Dubbo was incubated from enterprise practices and then open-sourced, quickly achieving success in the open-source community. A large number of production practice users are the core driving force for Dubbo&amp;rsquo;s long-term advancement, stability, and activity.&lt;/p></description></item><item><title>Intercommunication of the triple protocol based on protobuf (suitable for scenarios developed with protobuf on both sides)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java_protocol_triple_protobuf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java_protocol_triple_protobuf/</guid><description>&lt;p>Here we provide an example demonstrating how to implement intercommunication between dubbo-java and dubbo-go using the triple protocol. The complete source code can be viewed &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/java_interop/protobuf-triple">here&lt;/a>.&lt;/p>
&lt;p>The main content of the example is as follows:&lt;/p>
&lt;ul>
&lt;li>Go: RPC server and client implemented in Go&lt;/li>
&lt;li>Java: RPC server and client implemented in Java&lt;/li>
&lt;/ul>
&lt;h2 id="shared-protobuf-service-definition">Shared protobuf service definition&lt;/h2>
&lt;p>The shared service definition is as follows. Please pay attention to the specific definitions of &lt;code>package&lt;/code>, &lt;code>go_package&lt;/code>, and &lt;code>java_package&lt;/code>:&lt;/p></description></item><item><title>Redis Protocol</title><link>https://deploy-preview-3202--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-3202--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>Router</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/extensibility/router/</guid><description>&lt;p>By customizing the router, specific routing methods can be implemented based on the characteristics of business scenarios. Please refer to the source code for the router extension implementation in the example at &lt;a href="https://github.com/apache/dubbo-samples/blob/master/10-task/dubbo-samples-extensibility/">dubbo-samples-extensibility&lt;/a> .&lt;/p>
&lt;h2 id="before-you-begin">Before You Begin&lt;/h2>
&lt;h2 id="task-details">Task Details&lt;/h2>
&lt;p>Use the first provided service Provider for all requests. If this Provider goes offline, choose a new Provider.&lt;/p>
&lt;h2 id="implementation-method">Implementation Method&lt;/h2>
&lt;p>In the Consumer, customize a Router that saves the Provider used in the first call. If there are subsequent requests and the Provider list includes the Provider used in the first call, continue to use that Provider; otherwise, select a new Provider.&lt;/p></description></item><item><title>Same Data Center/Region Priority</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/region/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/region/</guid><description>&lt;p>To ensure the overall high availability of services, we often adopt a strategy of deploying services across multiple availability zones (data centers). Through this redundancy/disaster recovery deployment model, we can still guarantee the overall availability of services when a region experiences a failure.&lt;/p>
&lt;p>When applications are deployed across multiple different data centers/regions, cross-region calls may occur between applications, which can increase response times and impact user experience. Same data center/region priority means that when an application calls a service, it prefers to call service providers in the same data center/region, avoiding network delays caused by cross-region calls and thereby reducing response times.&lt;/p></description></item><item><title>Serialization Configuration Options</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/serialization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/erlang-sdk/serialization/</guid><description>&lt;p>Currently, this library only implements the &lt;code>dubbo://&lt;/code> communication protocol.&lt;/p>
&lt;p>Two serialization methods are implemented: &lt;code>hessian&lt;/code> and &lt;code>json&lt;/code>.&lt;/p>
&lt;h2 id="configuration-example">Configuration Example&lt;/h2>
&lt;p>The serialization configuration needs to be added to the &lt;code>dubboerl&lt;/code> application configuration in the &lt;code>sys.config&lt;/code> file.&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-erlang" data-lang="erlang">&lt;span style="display:flex;">&lt;span>{dubboerl,[
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#586e75">%% other config ...
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>	{protocol,hessian}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">ConfigName&lt;/th>
 &lt;th style="text-align: left">Type&lt;/th>
 &lt;th style="text-align: left">DefaultValue&lt;/th>
 &lt;th style="text-align: left">Remarks&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">protocol&lt;/td>
 &lt;td style="text-align: left">atom()&lt;/td>
 &lt;td style="text-align: left">hessian&lt;/td>
 &lt;td style="text-align: left">hessian,json&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/python-sdk/service-discovery/</guid><description>&lt;p>See the full &lt;a href="https://github.com/apache/dubbo-python/tree/main/samples/registry">example here&lt;/a>&lt;/p>
&lt;p>Using service registration and discovery is very simple. In fact, it only requires two additional lines of code compared to point-to-point calls. Before using this feature, we need to install the relevant registry client. Currently, Dubbo-python only supports &lt;code>Zookeeper&lt;/code>, so the following demonstration will use &lt;code>Zookeeper&lt;/code>.&lt;/p>
&lt;p>Similar to before, we need to clone the Dubbo-python source code and install it. However, in this case, we also need to install the &lt;code>Zookeeper&lt;/code> client. The commands are:&lt;/p></description></item><item><title>Service Invocation Extension Points</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/service-invocation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/service-invocation/</guid><description>&lt;p>&lt;img alt="dubbo-architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/concepts/invoke-arch.jpg">&lt;/p>
&lt;p>As shown in the figure above, from the perspective of service invocation, Dubbo provides a wealth of extension points in the call chain, covering load balancing methods, interceptors before and after service location, server processing interceptors, and more.
In simple terms, when Dubbo initiates a remote call, the main workflow can be divided into two parts: the consumer side and the server side.&lt;/p>
&lt;p>The workflow of the consumer side is as follows:&lt;/p></description></item><item><title>Introduction to Admin Service Mock Functionality</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/mock/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/mock/</guid><description>&lt;p>The mock functionality is designed to enhance the efficiency of microservices development and testing. It can short circuit remote calls initiated by the consumer side and return pre-set mock values in advance, allowing the consumer to continue development and testing even when no provider is available. Additionally, mocking can be used for quickly simulating test data responsible for return values and simulating server exceptions.&lt;/p>
&lt;p>It is important to note that the mock capability is limited to the testing environment and should be avoided in the production environment.&lt;/p></description></item><item><title>Skywalking</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/skywalking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/observability/tracing/skywalking/</guid><description>&lt;p>This article demonstrates how to integrate Dubbo with the Skywalking full-link monitoring system. For complete examples, please refer to &lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-spring-boot-tracing-skywalking" target="_blank">dubbo-samples-tracing-skywalking&lt;/a>. The required Skywalking Agent version is &lt;a href="https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/application-toolkit-micrometer-1.10/">skywalking micrometer-1.10 api&lt;/a>.&lt;/p>
&lt;h2 id="1-add-micrometer-observation-dependency-to-your-project">1. Add Micrometer Observation dependency to your project&lt;/h2>
&lt;p>To add Micrometer and related Metrics dependencies to the classpath, you need to include the &lt;code>dubbo-metrics-api&lt;/code> dependency as follows:&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>&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>org.apache.dubbo&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>dubbo-metrics-api&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;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="2-add-skywalking-micrometer-110-api-to-the-project">2. Add Skywalking Micrometer-1.10 Api to the project&lt;/h2>
&lt;p>To integrate Dubbo Micrometer tracing data into Skywalking, add the following dependency.&lt;/p></description></item><item><title>Startup check</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/start-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/start-check/</guid><description>&lt;p>The Dubbo framework, by default, checks the availability of dependent services at startup (whether the registry has available addresses). If not available, it throws an exception to prevent the application from completing initialization, allowing early detection of problems during deployment. The default is check=&amp;ldquo;true&amp;rdquo; and waits for 3 seconds.&lt;/p>
&lt;p>You can disable the check with check=&amp;ldquo;false&amp;rdquo;. For example, during testing, some services may not be of concern, or there may be circular dependencies, requiring one party to start first.&lt;/p></description></item><item><title>Streaming Communication</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</guid><description>&lt;p>In the section &lt;a href="../../protocol/">Choosing RPC Communication Protocol&lt;/a>, it is mentioned that Streaming is a new RPC data transmission model provided by Dubbo3, suitable for the following scenarios:&lt;/p>
&lt;ul>
&lt;li>The interface needs to send a large amount of data that cannot be placed in a single RPC request or response and needs to be sent in batches. If the application layer cannot solve sequence and performance issues using traditional multiple RPC methods, it can only be sent serially to ensure order.&lt;/li>
&lt;li>In streaming scenarios, data needs to be processed in the order it is sent, and the data itself does not have fixed boundaries.&lt;/li>
&lt;li>In push scenarios, multiple messages are sent and processed within the same call context.&lt;/li>
&lt;/ul>
&lt;p>Streaming is divided into the following three types:&lt;/p></description></item><item><title>Thrift Protocol</title><link>https://deploy-preview-3202--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-3202--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>Upgrade from 3.2 to 3.3</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.2-to-3.3-compatibility-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/upgrades-and-compatibility/version/3.2-to-3.3-compatibility-guide/</guid><description>&lt;p>For the vast majority of users, upgrading to Dubbo 3.3.0 is completely smooth, requiring only a change in the dependency version.&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;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.dubbo&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>dubbo&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.3.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;p>or&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;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.dubbo&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>dubbo-spring-boot-starter&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.3.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;h1 id="compatibility-checklist">Compatibility Checklist&lt;/h1>
&lt;h2 id="1-default-serialization-switch">1. Default Serialization Switch&lt;/h2>
&lt;p>Starting with Dubbo 3.3.0, the default serialization method changes from &lt;code>fastjson2&lt;/code> to &lt;code>hessian2&lt;/code>. For applications upgrading to 3.3.0, Dubbo will automatically attempt to use &lt;code>hessian2&lt;/code> for serialization.&lt;/p>
&lt;h3 id="q1-why-switch-the-default-serialization-method">Q1: Why switch the default serialization method?&lt;/h3>
&lt;p>&lt;code>hessian2&lt;/code> was the default serialization in Dubbo versions 3.1.x and below, proven stable and compatible in long-term production. After evaluating backward compatibility and long-term maintainability, the Dubbo team decided to upgrade &lt;code>hessian-lite&lt;/code> to the latest &lt;code>hessian4&lt;/code>, supporting JDK17 and JDK21.&lt;/p></description></item><item><title>Using Nacos as Registration Center for Automatic Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/nacos/</guid><description>&lt;p>This example demonstrates Nacos as a registration center for automatic service discovery, based on a Spring Boot application. You can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/registry/dubbo-samples-nacos">complete sample code&lt;/a> here.&lt;/p>
&lt;h2 id="1-basic-configuration">1 Basic Configuration&lt;/h2>
&lt;h3 id="11-add-dependency">1.1 Add Dependency&lt;/h3>
&lt;p>Add the dependencies for dubbo and nacos-client:&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>org.apache.dubbo&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>dubbo&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.3.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;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.alibaba.nacos&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>nacos-client&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>2.1.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;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;p>For Spring Boot applications, you can use the following spring-boot-starter:&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;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.dubbo&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>dubbo-spring-boot-starter&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.3.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;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.dubbo&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>dubbo-nacos-spring-boot-starter&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.3.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;h3 id="12-nacos-version">1.2 Nacos Version&lt;/h3>
&lt;p>Nacos version mapping:&lt;/p></description></item><item><title>Version and Group</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/version_group/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/version_group/</guid><description>&lt;p>In Dubbo services, an interface cannot uniquely identify a service. Only the tuple &lt;code>interface + group + version&lt;/code> can uniquely identify a service.&lt;/p>
&lt;ul>
&lt;li>When the same interface is used for different business scenarios, usage needs, or functional modules, service groups can be used to distinguish different implementations. At the same time, these different implementations can coexist and call each other.&lt;/li>
&lt;li>When the interface implementation needs upgrading while retaining the original implementation, we can distinguish them using different version numbers.&lt;/li>
&lt;/ul>
&lt;p>The complete source code of this article&amp;rsquo;s examples can be found at the following links:&lt;/p></description></item><item><title>XML Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/xml/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/spring/xml/</guid><description>&lt;p>Dubbo has a custom configuration component based on Spring Schema, and the configuration options supported by XML correspond to those described in the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">configuration reference manual&lt;/a>. Please refer to the examples used in this article at &lt;a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-spring-xml">dubbo-samples-spring-xml&lt;/a>.&lt;/p>
&lt;h2 id="complete-xml-example">Complete XML Example&lt;/h2>
&lt;h3 id="service-provider">Service Provider&lt;/h3>
&lt;h4 id="define-service-interface">Define Service Interface&lt;/h4>
&lt;p>DemoService.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org.apache.dubbo.demo;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">DemoService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> String &lt;span style="color:#268bd2">sayHello&lt;/span>(String name);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="implement-interface-in-service-provider">Implement Interface in Service Provider&lt;/h4>
&lt;p>DemoServiceImpl.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org.apache.dubbo.demo.provider;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.demo.DemoService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">DemoServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> DemoService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> String &lt;span style="color:#268bd2">sayHello&lt;/span>(String name) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#2aa198">&amp;#34;Hello &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> name;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="declare-service-exposure-with-spring-configuration">Declare Service Exposure with Spring Configuration&lt;/h4>
&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:#719e07">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;beans&lt;/span> xmlns:xsi=&lt;span style="color:#2aa198">&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xmlns:dubbo=&lt;span style="color:#2aa198">&amp;#34;http://dubbo.apache.org/schema/dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xmlns=&lt;span style="color:#2aa198">&amp;#34;http://www.springframework.org/schema/beans&amp;#34;&lt;/span> xmlns:context=&lt;span style="color:#2aa198">&amp;#34;http://www.springframework.org/schema/context&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xsi:schemaLocation=&lt;span style="color:#2aa198">&amp;#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd&amp;#34;&lt;/span>&lt;span style="color:#268bd2">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;context:property-placeholder/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;dubbo:application&lt;/span> name=&lt;span style="color:#2aa198">&amp;#34;demo-provider&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;dubbo:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;zookeeper://${zookeeper.address:127.0.0.1}:2181&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> token=&lt;span style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;bean&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;demoService&amp;#34;&lt;/span> class=&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.samples.basic.impl.DemoServiceImpl&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;dubbo:service&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.samples.basic.api.DemoService&amp;#34;&lt;/span> ref=&lt;span style="color:#2aa198">&amp;#34;demoService&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/beans&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="load-spring-configuration">Load Spring Configuration&lt;/h4>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">Application&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">static&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">main&lt;/span>(String&lt;span style="color:#719e07">[]&lt;/span> args) &lt;span style="color:#268bd2">throws&lt;/span> InterruptedException {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ClassPathXmlApplicationContext context &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> ClassPathXmlApplicationContext(&lt;span style="color:#2aa198">&amp;#34;spring/dubbo-demo-provider.xml&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> context.start();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System.out.println(&lt;span style="color:#2aa198">&amp;#34;dubbo service started&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// to hang up main thread&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">new&lt;/span> CountDownLatch(1).await();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="service-consumer">Service Consumer&lt;/h3>
&lt;h4 id="reference-remote-service-through-spring-configuration">Reference Remote Service through Spring Configuration&lt;/h4>
&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:#719e07">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;beans&lt;/span> xmlns:xsi=&lt;span style="color:#2aa198">&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xmlns:dubbo=&lt;span style="color:#2aa198">&amp;#34;http://dubbo.apache.org/schema/dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xmlns=&lt;span style="color:#2aa198">&amp;#34;http://www.springframework.org/schema/beans&amp;#34;&lt;/span> xmlns:context=&lt;span style="color:#2aa198">&amp;#34;http://www.springframework.org/schema/context&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xsi:schemaLocation=&lt;span style="color:#2aa198">&amp;#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd&amp;#34;&lt;/span>&lt;span style="color:#268bd2">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;context:property-placeholder/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;dubbo:application&lt;/span> name=&lt;span style="color:#2aa198">&amp;#34;demo-consumer&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;dubbo:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;zookeeper://${zookeeper.address:127.0.0.1}:2181&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&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;demoService&amp;#34;&lt;/span> check=&lt;span style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.samples.basic.api.DemoService&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/beans&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="load-spring-configuration-and-call-remote-service">Load Spring Configuration and Call Remote Service&lt;/h4>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">Application&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">static&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">main&lt;/span>(String&lt;span style="color:#719e07">[]&lt;/span> args) &lt;span style="color:#268bd2">throws&lt;/span> IOException {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ClassPathXmlApplicationContext context &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> ClassPathXmlApplicationContext(&lt;span style="color:#2aa198">&amp;#34;spring/dubbo-demo-consumer.xml&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> context.start();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GreetingsService greetingsService &lt;span style="color:#719e07">=&lt;/span> (GreetingsService) context.getBean(&lt;span style="color:#2aa198">&amp;#34;greetingsService&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> String message &lt;span style="color:#719e07">=&lt;/span> greetingsService.sayHi(&lt;span style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System.out.println(&lt;span style="color:#2aa198">&amp;#34;Receive result ======&amp;gt; &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> message);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System.in.read();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> System.exit(0);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="more-examples">More Examples&lt;/h2>
&lt;h3 id="version-and-group">Version and Group&lt;/h3>
&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:service&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;com.foo.BarService&amp;#34;&lt;/span> version=&lt;span style="color:#2aa198">&amp;#34;1.0.0&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:service&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.example.service.DemoService&amp;#34;&lt;/span> group=&lt;span style="color:#2aa198">&amp;#34;demo2&amp;#34;&lt;/span>&lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="cluster-fault-tolerance">Cluster Fault Tolerance&lt;/h3>
&lt;p>Configure failover retry count:&lt;/p></description></item><item><title>Zipkin</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/zipkin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/zipkin/</guid><description>&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>You can quickly install Zipkin using the example configuration provided by the Dubbo community.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl create -f https://raw.githubusercontent.com/apache/dubbo-kubernetes/master/deploy/kubernetes/zipkin.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>This installation is only suitable for testing or demonstration purposes. For production-level installations, please refer to the official Zipkin installation documentation.&lt;/p>
&lt;/blockquote></description></item><item><title>报告安全问题</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/reporting-security-issues_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/reporting-security-issues_dev/</guid><description>&lt;p>Apache Software Foundation 在消除其软件项目中的安全性问题方面采取严格的立场。Apache Dubbo 对与其功能和特性有关的问题非常敏感并很快提出。&lt;/p>
&lt;h2 id="报告漏洞">报告漏洞&lt;/h2>
&lt;p>如果您对 Dubbo 的安全性有担心，或者发现漏洞或潜在威胁，请发送电子邮件至 &lt;a href="mailto:security@dubbo.apache.org">security@dubbo.apache.org&lt;/a> 与 Apache Dubbo 安全团队联系。在邮件中，指定问题或潜在威胁的描述。还敦促您推荐重现和复制问题的方法。Dubbo 社区会在评估和分析调查结果之后与您联系。&lt;/p>
&lt;p>请先注意在安全电子邮件中报告安全问题，然后再在公共领域公开该问题。&lt;/p>
&lt;h2 id="漏洞处理">漏洞处理&lt;/h2>
&lt;p>漏洞处理过程的概述是：&lt;/p>
&lt;ul>
&lt;li>报告者将漏洞秘密报告给 Apache。&lt;/li>
&lt;li>相应项目的安全团队与报告者私下合作来解决漏洞。&lt;/li>
&lt;li>制作了包含该修复程序的有关 Apache 产品的新版本。&lt;/li>
&lt;li>该漏洞已公开宣布。&lt;/li>
&lt;/ul>
&lt;p>有关此过程的详细说明，请参见&lt;a href="https://www.apache.org/security/committers.html">此处&lt;/a>&lt;/p></description></item><item><title>软件捐献向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/software-donation-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/software-donation-guide_dev/</guid><description>&lt;p>在您阅读这篇指南之前，请确保您已经向PMC确认了实际需要的 SGA。&lt;/p>
&lt;p>如果您向 Apache Dubbo 捐赠了大量的代码或文档，则需要在合并代码或者文档之前签署&lt;a href="https://www.apache.org/licenses/#grants">软件授权书&lt;/a>。&lt;/p>
&lt;h3 id="操作步骤">操作步骤&lt;/h3>
&lt;ol>
&lt;li>下载这篇&lt;a href="https://www.apache.org/licenses/software-grant-template.pdf">pdf文档&lt;/a>&lt;/li>
&lt;li>打印下载好的文档&lt;/li>
&lt;li>按要求填充表格（请看下边示例）&lt;/li>
&lt;li>请您的领导在上边签字&lt;/li>
&lt;li>扫描&lt;/li>
&lt;li>将扫描好的文档以邮件的方式发送给secretary@apache.org，并抄送给private@dubbo.apache.org&lt;/li>
&lt;/ol>
&lt;h3 id="示例">示例&lt;/h3>
&lt;p>下边是一个文本示例，原始文本可以在&lt;a href="https://www.apache.org/licenses/software-grant.txt">这里&lt;/a>找到&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>License Agreement
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> This License Agreement is entered into as of the _12th_ day of
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>___April____, __2018__ by ___ABC Software Co., Ltd.____ (&amp;#34;Licensor&amp;#34;),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>in favor of The Apache Software Foundation, a Delaware nonstock
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>membership corporation (the &amp;#34;Foundation&amp;#34;).
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> WHEREAS, Licensor owns or has sufficient rights to contribute the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>software source code and other related intellectual property as
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>itemized on Exhibit A (&amp;#34;Software&amp;#34;) under the terms of this agreement
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to the Foundation for use within Foundation software development
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>projects (&amp;#34;Projects&amp;#34;).
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> NOW, THEREFORE, FOR GOOD AND VALUABLE CONSIDERATION, the receipt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>and legal sufficiency of which are hereby acknowledged, the parties
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hereto, intending to be legally bound, agree as follows:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>1. Subject to the terms and conditions of this License, Licensor
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hereby grants to the Foundation:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> a) a non-exclusive, worldwide, royalty-free, irrevocable
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> copyright license to reproduce, prepare derivative works of,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> publicly display, publicly perform, distribute and sublicense,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> internally and externally, the Software and such derivative
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> works, in source code and object code form; and,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> b) a non-exclusive, worldwide, royalty-free, irrevocable
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> patent license under Licensed Patents to make, use, sell,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> offer to sell, import and otherwise transfer the Software
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> in source code and object code form. &amp;#34;Licensed Patents&amp;#34; mean
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> patent claims owned by Licensor which are necessarily
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> infringed by the use or sale of the Software alone.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2. Licensor represents that, to Licensor&amp;#39;s knowledge, Licensor is
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>legally entitled to grant the above license. Licensor agrees to notify
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>the Foundation of any facts or circumstances of which Licensor becomes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>aware and which makes or would make Licensor&amp;#39;s representations in this
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>License Agreement inaccurate in any respect.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>3. This Software is provided AS-IS, WITHOUT WARRANTIES OR CONDITIONS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OR FITNESS FOR A PARTICULAR PURPOSE. NEITHER THE LICENSOR NOR ITS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SUPPLIERS WILL BE LIABLE TO THE FOUNDATION OR ITS LICENSEES FOR ANY
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>THE USE OR DISTRIBUTION OF THE WORK OR THE EXERCISE OF ANY RIGHTS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This License Agreement is the entire agreement of the parties
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>with respect to its subject matter, and may only be amended by a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>writing signed by each party. This License Agreement may be
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>executed in one or more counterparts, each of which shall be
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>considered an original.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> IN WITNESS WHEREOF, Licensor has executed this License Agreement
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>as of the date first written above.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> LICENSOR:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Signed By: _____________________________________ &amp;lt;--- Your boss&amp;#39;s sign here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Print Name: _____Lei Li_________________________ &amp;lt;--- Your boss&amp;#39;s name here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Title: ____Director_____________________________ &amp;lt;--- Your boss&amp;#39;s title here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Representing: ____ABC Software Co., Ltd. _______ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ________________________________________________
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Contact Name: ____Lei Li________________________ &amp;lt;--- Your boss&amp;#39;s name here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Contact Email: ____lilei@abc.com________________ &amp;lt;--- Your boss&amp;#39;s email here
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Exhibit A
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>List of software and other intellectual property covered by this agreement:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>* Github address where your code is hosted
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>* Pull request link
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Adaptive Load Balancing and Flow Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/heuristic-flow-control/</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/heuristic-flow-control/</guid><description>&lt;h1 id="overview">Overview&lt;/h1>
&lt;p>The flexible services discussed in this article mainly refer to the functions of &lt;strong>load balancing on the consumer side&lt;/strong> and &lt;strong>traffic limiting on the provider side&lt;/strong>. In previous versions of Dubbo,&lt;/p>
&lt;ul>
&lt;li>The load balancing focused more on fairness, meaning the consumer chooses equally from the provider, which didn’t perform ideally in some cases.&lt;/li>
&lt;li>The traffic limiting only provided static schemes, requiring users to set a static maximum concurrency value on the provider, which was not easy for users to determine.&lt;/li>
&lt;/ul>
&lt;p>We made improvements to address these issues.&lt;/p></description></item><item><title>The Migration Journey of Ping An Health to Dubbo3</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/the-migration-journey-of-ping-an-health-to-dubbo3/</link><pubDate>Sun, 15 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/15/the-migration-journey-of-ping-an-health-to-dubbo3/</guid><description>&lt;h1 id="1-background">1 Background&lt;/h1>
&lt;p>Our company has used Dubbo as a microservice framework since 2015. When the community launched Dubbo3, we immediately followed suit and conducted in-depth research. We found that the application/instance-level service registration and discovery model of Dubbo3 could alleviate some pressure faced by our current registration center, addressing stability and security issues. At the same time, Dubbo3 has upgraded service governance, aligning with cloud-native architecture, and is backward compatible with Dubbo2, which lowers the cost and risk of upgrading.&lt;/p></description></item><item><title>0-5 - Cache file size exceeded</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/5/</guid><description>&lt;p>Other modules reuse the file-based caching mechanism of the Common layer (currently the metadata module), and the file caching mechanism of the Common layer has &amp;ldquo;detected&amp;rdquo; that the file size has exceeded the limit.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The user has improperly configured the Java System Property (configured with -D) &lt;code>dubbo.mapping.cache.maxFileSize&lt;/code> or &lt;code>dubbo.meta.cache.maxFileSize&lt;/code>.&lt;/li>
&lt;li>The cache file has been corrupted due to a file system or disk error.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>&lt;code>dubbo.mapping.cache.maxFileSize&lt;/code> and &lt;code>dubbo.meta.cache.maxFileSize&lt;/code> do not have explicitly stated default values, while the maximum file size default value found based on the logic of &lt;code>org.apache.dubbo.common.cache.FileCacheStore.LimitedLengthBufferedWriter&lt;/code> is: &lt;code>Long.MAX_VALUE&lt;/code> (2&lt;sup>63&lt;/sup>-1) .&lt;/p></description></item><item><title>1-5 - Received URL with no parameters</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>When calling &lt;code>CacheableFailbackRegistry.toUrlsWithoutEmpty&lt;/code>, if the parameter &lt;code>Collection&amp;lt;String&amp;gt; providers&lt;/code> contains a provider that has no parameters, a URL with no parameters will be received.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This error is an internal error of Dubbo. If you encounter it, you can create an issue on GitHub and provide the error information along with reproduction steps. We will assist you in resolving the issue.&lt;/p>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://github.com/apache/dubbo">Dubbo Community&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-5 - Filtering Provider Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>Dubbo selects a provider from the list of providers to make a call during load balancing. If the provider list changes during the selection process, read/write conflicts may occur, leading to filtering exceptions.&lt;/li>
&lt;li>When the Dubbo retry mechanism encounters a failure in calling the provider, it will re-filter another provider for the call, and exceptions may occur during the re-filtering process.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the list of providers in the registry and the availability of the corresponding providers.&lt;/li>
&lt;li>Raise an issue in the community, providing on-site environment information and reproduction steps.&lt;/li>
&lt;/ol></description></item><item><title>3-5 - Asynchronous response raises exceptions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>There is indeed a runtime exception in the business logic.&lt;/li>
&lt;li>Network issues, such as connection being refused.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Please trace back based on the stack trace prompt line to locate and investigate the business code.&lt;/li>
&lt;li>Check if the network of the service provider is functioning properly.&lt;/li>
&lt;/ol></description></item><item><title>4-5 - Stream Closure Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Prompt information that does not affect the execution result of the program.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can use some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to analyze stack information for diagnosis.&lt;/p></description></item><item><title>5-5 - Unable to get env variable</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Environment variables cannot be retrieved.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the variable name prompted to see if it is configured and can be properly read and loaded.&lt;/p></description></item><item><title>6-5 - Network disconnection failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Timeout occurs when the caller is unable to receive the corresponding response within the specified time after the request is sent, leading to the client actively disconnecting.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>It is generally a warning message that does not affect the subsequent execution of the program.&lt;/p></description></item><item><title>7-5 - QOS command not found</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/5/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The QOS command is misspelled.&lt;/p>
&lt;h2 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h2>
&lt;p>The QOS command does not exist.&lt;/p>
&lt;blockquote>
&lt;p>Please refer to the QOS operation manual &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/command/">Basic Command Manual&lt;/a> for more information.&lt;/p>
&lt;/blockquote></description></item><item><title>Avro</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/avro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/avro/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>Avro is a remote procedure call and data serialization framework developed within the Apache Hadoop project. It uses JSON to define data types and communication protocols, and a compact binary format to serialize data. It is primarily used with Hadoop, providing a serialization format for persistent data and serving as a protocol for communication between Hadoop nodes and from client programs to Hadoop services.&lt;/p>
&lt;h2 id="2-usage">2 Usage&lt;/h2>
&lt;h3 id="21-add-dependency">2.1 Add Dependency&lt;/h3>
&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>org.apache.dubbo.extensions&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>dubbo-serialization-avro&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.3.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;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.avro&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>avro&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>1.11.1&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-configuration-enable">2.2 Configuration Enable&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">serialization&lt;/span>: avro
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&lt;/p></description></item><item><title>Cluster extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/cluster/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>When there are multiple service providers, organize them into a cluster and masquerade as a single provider.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.cluster.Cluster&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> cluster=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default configuration; if &amp;lt;dubbo:protocol&amp;gt; does not configure cluster, this configuration will be used --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> cluster=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.FailoverCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.FailfastCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.FailsafeCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.FailbackCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.ForkingCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.AvailableCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.MergeableCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.BroadcastCluster&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxCluster.java (implements Cluster interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.cluster.Cluster (plain text file with content: xxx=com.xxx.XxxCluster)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxCluster.java:&lt;/p></description></item><item><title>Communication Protocols</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/protocols/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/protocols/</guid><description>&lt;p>The Dubbo framework provides a custom high-performance RPC communication protocol: the Triple protocol based on HTTP/2 and the Dubbo2 protocol based on TCP. In addition, the Dubbo framework supports any third-party communication protocol, such as the officially supported gRPC, Thrift, REST, JsonRPC, Hessian2, etc. More protocols can be implemented through custom extensions. This is very useful for multi-protocol communication scenarios often encountered in microservice practices.&lt;/p>
&lt;p>&lt;strong>The Dubbo framework does not bind to any communication protocol. In implementation, Dubbo&amp;rsquo;s support for multiple protocols is very flexible. It allows you to publish multiple services using different protocols within one application and supports publishing all protocols externally using the same port.&lt;/strong>&lt;/p></description></item><item><title>Conditional Traffic Routing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/route/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/route/</guid><description>&lt;p>Routing is the core traffic control mechanism in Dubbo. Based on it, we can implement canary releases, proportional traffic forwarding, same-region prioritization, full-link grayscale, and other traffic strategies. The design and basic principles of the routing (Router) mechanism in Dubbo, along with several built-in routing rules.&lt;/p>
&lt;h2 id="common-traffic-control-scenarios">Common Traffic Control Scenarios&lt;/h2>
&lt;p>The built-in traffic strategies in Dubbo are very flexible, but there is also a certain understanding and usage cost. Therefore, we summarize some common usage scenarios and provide configuration methods:&lt;/p></description></item><item><title>Configuration Working Principle</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/principle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/principle/</guid><description>&lt;p>This article mainly explains the APIs and working principles related to Dubbo configuration, learning about Dubbo&amp;rsquo;s multiple configuration sources, the specific configuration methods for each source, and the priority and coverage relationships between different configuration sources.&lt;/p>
&lt;h2 id="implementation-principles">Implementation Principles&lt;/h2>
&lt;p>To better manage various configurations, Dubbo abstracts a structured configuration component set, dividing the components by purpose to control behaviors in different scopes.&lt;/p>
&lt;p>&lt;img alt="dubbo-config" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/dubbo-config.jpg">&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Component Name&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;th style="text-align: left">Scope&lt;/th>
 &lt;th style="text-align: left">Is Configuration Required&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">application&lt;/td>
 &lt;td style="text-align: left">Specifies application name and other application-level related information&lt;/td>
 &lt;td style="text-align: left">Only one allowed per application&lt;/td>
 &lt;td style="text-align: left">Required&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">service&lt;/td>
 &lt;td style="text-align: left">Declares a normal interface or implementation class as a Dubbo service&lt;/td>
 &lt;td style="text-align: left">Can have 0 to multiple services in an application&lt;/td>
 &lt;td style="text-align: left">At least one service/reference&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">reference&lt;/td>
 &lt;td style="text-align: left">Declares a normal interface as a Dubbo service&lt;/td>
 &lt;td style="text-align: left">Can have 0 to multiple references in an application&lt;/td>
 &lt;td style="text-align: left">At least one service/reference&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">protocol&lt;/td>
 &lt;td style="text-align: left">RPC protocol to be exposed and related configurations like port number&lt;/td>
 &lt;td style="text-align: left">Multiple allowed in an application, a protocol can apply to a group of services &amp;amp; references&lt;/td>
 &lt;td style="text-align: left">Optional, default is dubbo&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">registry&lt;/td>
 &lt;td style="text-align: left">Registry type, address, and related configurations&lt;/td>
 &lt;td style="text-align: left">Multiple allowed in an application, a registry can apply to a group of services &amp;amp; references&lt;/td>
 &lt;td style="text-align: left">Required&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">config-center&lt;/td>
 &lt;td style="text-align: left">Configuration center type, address, and related configurations&lt;/td>
 &lt;td style="text-align: left">Multiple allowed in an application, shared by all services&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">metadata-report&lt;/td>
 &lt;td style="text-align: left">Metadata center type, address, and related configurations&lt;/td>
 &lt;td style="text-align: left">Multiple allowed in an application, shared by all services&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">consumer&lt;/td>
 &lt;td style="text-align: left">Default configuration shared between references&lt;/td>
 &lt;td style="text-align: left">Multiple allowed in an application, a consumer can apply to a group of references&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">provider&lt;/td>
 &lt;td style="text-align: left">Default configuration shared between services&lt;/td>
 &lt;td style="text-align: left">Multiple allowed in an application, a provider can apply to a group of services&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">monitor&lt;/td>
 &lt;td style="text-align: left">Monitoring system type and address&lt;/td>
 &lt;td style="text-align: left">Only one allowed in an application&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">metrics&lt;/td>
 &lt;td style="text-align: left">Configuration related to data collection module&lt;/td>
 &lt;td style="text-align: left">Only one allowed in an application&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ssl&lt;/td>
 &lt;td style="text-align: left">Configuration related to ssl/tls secure links, etc.&lt;/td>
 &lt;td style="text-align: left">Only one allowed in an application&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">method&lt;/td>
 &lt;td style="text-align: left">Method-level configuration&lt;/td>
 &lt;td style="text-align: left">Sub-configuration of service and reference&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">argument&lt;/td>
 &lt;td style="text-align: left">Argument configuration for a method&lt;/td>
 &lt;td style="text-align: left">Sub-configuration of method&lt;/td>
 &lt;td style="text-align: left">Optional&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>From the perspective of implementation principles, all configuration items in Dubbo will ultimately be assembled into URLs, using URLs as carriers during subsequent startup and RPC calls to control framework behaviors.&lt;/p></description></item><item><title>Consul</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/consul/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/consul/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/">Dubbo basic development steps&lt;/a>&lt;/li>
&lt;li>Install and start the &lt;a href="http://consul.io">Consul&lt;/a> service&lt;/li>
&lt;/ul>
&lt;h2 id="instructions">Instructions&lt;/h2>
&lt;h3 id="add-dependencies">Add Dependencies&lt;/h3>
&lt;p>Starting from Dubbo 3, the Consul registration center adaptation is no longer embedded in Dubbo. It needs to be separately introduced with an independent &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/download/spi-extensions/#dubbo-registry">module&lt;/a>.&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;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.dubbo.extensions&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>dubbo-registry-consul&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.3.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;h3 id="basic-configuration">Basic Configuration&lt;/h3>
&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:registry&lt;/span> address=&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>or&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:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12: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>or&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;redis&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;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>or&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;redis&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Direct Connection Provider</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/explicit-target/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/explicit-target/</guid><description>&lt;p>In development and testing environments, it is often necessary to bypass the registry and only test specific service providers. In this case, point-to-point direct connection may be required. The point-to-point direct connection method will ignore the provider list from the registry on a service interface basis. Configuring point-to-point for interface A will not affect interface B from obtaining the list from the registry.&lt;/p>
&lt;p>&lt;img alt="/user-guide/images/dubbo-directly.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/dubbo-directly.jpg">&lt;/p>
&lt;p>If point-to-point communication is needed in a production environment, you can configure the &lt;code>reference&lt;/code> node to point to the provider URL, bypassing the registry. Multiple addresses can be separated by semicolons, configured as follows:&lt;/p></description></item><item><title>Achieving Traffic Isolation Environments Through Tags (Canary Releases, Multiple Development Environments, etc.)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/isolation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/isolation/</guid><description>&lt;p>Whether in daily development and testing environments or in pre-production environments, the need for traffic isolation environments often arises.&lt;/p>
&lt;ul>
&lt;li>In daily development, to avoid mutual interference during testing, we need to set up multiple independent testing environments, but building physical clusters is very costly and not flexible enough.&lt;/li>
&lt;li>During production releases, to ensure that the new version is fully validated, we need to set up a completely isolated online canary environment to deploy new version services. The online canary environment can fully simulate production runtime conditions, but only a fixed amount of traffic with specific tags will flow to the canary environment, minimizing the risk of online changes while thoroughly validating the new version.&lt;/li>
&lt;/ul>
&lt;p>Using Dubbo&amp;rsquo;s tag routing capability allows for very flexible traffic isolation. It can separately isolate a specific application in a cluster or an entire microservice cluster; it can statically mark the isolation environment during deployment or dynamically isolate part of the machine environment through rules during runtime.&lt;/p></description></item><item><title>Etcd</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/etcd/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/">basic development steps of Dubbo&lt;/a>&lt;/li>
&lt;li>Install and start the Etcd service&lt;/li>
&lt;/ul>
&lt;h2 id="instructions">Instructions&lt;/h2>
&lt;h3 id="adding-dependencies">Adding Dependencies&lt;/h3>
&lt;p>Starting from Dubbo 3, the Etcd registry adapter is no longer embedded in Dubbo and needs to be included as a separate &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/download/spi-extensions/#dubbo-registry">module&lt;/a>.&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;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.dubbo.extensions&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>dubbo-registry-etcd&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.3.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;h3 id="basic-configuration">Basic Configuration&lt;/h3>
&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:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;etcd://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>or&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:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;etcd://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12: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>or&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;etcd&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;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>or&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;etcd&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Extending Dubbo Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/dubbo-extension-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/dubbo-extension-guide_dev/</guid><description>&lt;p>Dubbo uses a microkernel + plugin design pattern. The kernel is only responsible for assembling plugins, and all of Dubbo’s functionalities are implemented by extension points (plugins), which means that all of Dubbo’s features can be replaced by user-defined extensions.&lt;/p>
&lt;h3 id="dubbo-ecosystem">Dubbo Ecosystem&lt;/h3>
&lt;p>We recommend adding extensions to the Dubbo ecosystem. Using this model can keep the core repository cleaner and reduce maintenance work. Less code can also improve the build speed of the core repository.&lt;/p></description></item><item><title>Intercommunication with gRPC applications</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-grpc/call_grpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-grpc/call_grpc/</guid><description>&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;p>The triple protocol is 100% compatible with gRPC. This example demonstrates using dubbo-go to develop applications that interoperate with gRPC. You can view the &lt;a href="https://github.com/apache/dubbo-go-samples/tree/main/rpc/grpc" target="_blank">complete example source code&lt;/a> here.&lt;/p>
&lt;h2 id="2-how-to-intercommunicate">2. How to Intercommunicate&lt;/h2>
&lt;p>The Triple protocol of Dubbo-go is compatible with the gRPC protocol. When creating the server, you can set &lt;code>protocol.WithTriple()&lt;/code> to use the Triple protocol.&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>	srv, err &lt;span style="color:#719e07">:=&lt;/span> server.&lt;span style="color:#268bd2">NewServer&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> server.&lt;span style="color:#268bd2">WithServerProtocol&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> protocol.&lt;span style="color:#268bd2">WithPort&lt;/span>(&lt;span style="color:#2aa198">20000&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> protocol.&lt;span style="color:#268bd2">WithTriple&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> )
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="3-example">3. Example&lt;/h2>
&lt;h3 id="31-server-introduction">3.1 Server Introduction&lt;/h3>
&lt;h4 id="server-proto-file">Server proto File&lt;/h4>
&lt;p>Source file path: dubbo-go-sample/rpc/grpc/proto/greet.proto&lt;/p></description></item><item><title>Memcached Protocol</title><link>https://deploy-preview-3202--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-3202--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>Nacos</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/nacos/</guid><description>&lt;p>This document explains how to install and configure Nacos, covering local, docker, and kubernetes environments. The following is just a quick example installation guide; for setting up a production-ready cluster, please refer to the official Nacos documentation.&lt;/p>
&lt;h2 id="local-download">Local Download&lt;/h2>
&lt;p>Nacos depends on the &lt;a href="https://sdkman.io/" target="_blank">Java environment&lt;/a> to run, currently supporting environments such as Linux, MacOS, and Windows.&lt;/p>
&lt;p>You can &lt;a href="https://github.com/alibaba/nacos/releases" target="_blank">download the latest stable version of Nacos&lt;/a> and extract the binary package:&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>unzip nacos-server-&lt;span style="color:#268bd2">$version&lt;/span>.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> nacos/bin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">#tar -xvf nacos-server-$version.tar.gz&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="startup-command">Startup Command&lt;/h4>
&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>&lt;span style="color:#586e75"># Linux/Unix/Mac&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sh startup.sh -m standalone
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># Ubuntu&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bash startup.sh -m standalone
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># Windows&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>startup.cmd -m standalone
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="verify-nacos-started-normally">Verify Nacos Started Normally&lt;/h4>
&lt;p>Access the console via the browser at the following link: http://127.0.0.1:8080/index.html&lt;/p></description></item><item><title>New Features of Tripe 3.3</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/triple-3.3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/triple-3.3/</guid><description>&lt;p>&lt;a name="lipv5">&lt;/a>&lt;/p>
&lt;h2 id="brand-new-rest-support">Brand New REST Support&lt;/h2>
&lt;p>&lt;a name="BrKuK">&lt;/a>&lt;/p>
&lt;h3 id="features">Features&lt;/h3>
&lt;p>In version 3.3, based on the existing HTTP protocol stack, triple implements comprehensive REST-style service export capabilities without the need for generic or gateway layer protocol conversion. Users can directly access backend Triple protocol services via HTTP protocol in a decentralized manner without configuration. It provides rich annotations and SPI extension support for advanced REST usage such as path customization, output format customization, and exception handling. Its main features include:&lt;/p></description></item><item><title>Maintenance of the official Dubbo homepage</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/apache-dubbo-page_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/committer/apache-dubbo-page_dev/</guid><description>&lt;p>Apache has an official website to maintain information about all incubator projects. Each incubator project has an information page under this site. The information page for Dubbo is &lt;a href="https://incubator.apache.org/projects/dubbo.html">https://incubator.apache.org/projects/dubbo.html&lt;/a>.&lt;/p>
&lt;p>When significant changes occur in the project, such as the addition of new committers, the election of new PMC members, or new version releases, this update information needs to be maintained on this page.&lt;/p>
&lt;p>The project address for this official website is &lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk">https://svn.apache.org/repos/asf/incubator/public/trunk&lt;/a>.&lt;/p></description></item><item><title>Implicit Parameter Passing in Call Chain</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/attachment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/attachment/</guid><description>&lt;p>Parameters can be implicitly passed between service consumers and providers using &lt;code>setAttachment&lt;/code> and &lt;code>getAttachment&lt;/code> on &lt;code>RpcContext&lt;/code> without modifying method signatures and parameter definitions. Implicit parameter passing supports the following two directions:&lt;/p>
&lt;ul>
&lt;li>From consumer to provider, i.e., additional parameters are passed via attachment when the request is initiated, outside of method parameters.&lt;/li>
&lt;li>From provider to consumer, i.e., additional parameters are passed via attachment when the response is returned, outside of the response result.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>The most direct way to understand implicit parameter passing is the HTTP header, which works exactly like an HTTP header. Any number of header parameters can be passed outside of the GET or POST request body.&lt;/strong> Regarding implementation principles, the implementation of attachments varies slightly for different protocols:&lt;/p></description></item><item><title>Develop gRPC Services with Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/grpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/protocols/triple/grpc/</guid><description>&lt;p>This example demonstrates how to implement mutual calls between Dubbo services and standard gRPC services using the triple protocol. You can view the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-triple-grpc">complete source code of the example&lt;/a>.&lt;/p>
&lt;p>&lt;img alt="triple-grpc.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/protocol/triple-grpc.png">&lt;/p>
&lt;p>As described in the &lt;a href="https://dubbo.apache.org/zh-cn/overview/reference/protocols/triple/">Triple Protocol Specification&lt;/a>, the triple protocol is 100% compatible with the gRPC protocol, while significantly improving usability (e.g., support for cURL, direct browser access, etc.). It can be said that triple is a more user-friendly design and implementation of gRPC.&lt;/p></description></item><item><title>Rate Limiting &amp; Circuit Breaking</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/circuit-breaking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/circuit-breaking/</guid><description>&lt;p>Due to the distributed nature of microservices, building a stable microservice cluster is a significant challenge. Two critical points to focus on are:&lt;/p>
&lt;ul>
&lt;li>Rate Limiting&lt;/li>
&lt;li>Circuit Breaking&lt;/li>
&lt;/ul>
&lt;h2 id="rate-limiting">Rate Limiting&lt;/h2>
&lt;p>&lt;strong>Rate limiting is more about ensuring service stability from the perspective of Dubbo service providers&lt;/strong>. By explicitly setting request upper thresholds for Dubbo services, it ensures that the number of requests handled by the service is always within a reasonable range, thereby ensuring the overall stability of the system.&lt;/p></description></item><item><title>Redis</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/redis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/others/redis/</guid><description>&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Understand &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/quick-start/starter/">Dubbo basic development steps&lt;/a>&lt;/li>
&lt;li>Install and start the &lt;a href="http://redis.io">Redis&lt;/a> service&lt;/li>
&lt;/ul>
&lt;h2 id="instructions">Instructions&lt;/h2>
&lt;h3 id="add-dependency">Add Dependency&lt;/h3>
&lt;p>Starting from Dubbo3, the Redis registry adaptation is no longer embedded in Dubbo and needs to be separately introduced as an independent &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/download/spi-extensions/#dubbo-registry">module&lt;/a>.&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;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.dubbo.extensions&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>dubbo-registry-redis&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.3.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;h3 id="basic-configuration">Basic Configuration&lt;/h3>
&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:registry&lt;/span> address=&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>or&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:registry&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12: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>or&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;redis&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;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>or&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:registry&lt;/span> protocol=&lt;span style="color:#2aa198">&amp;#34;redis&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;10.20.153.10:6379,10.20.153.11:6379,10.20.153.12: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;h3 id="other-configuration-items">Other Configuration Items&lt;/h3>
&lt;ul>
&lt;li>You can set the prefix for the keys in Redis with &lt;code>&amp;lt;dubbo:registry group=&amp;quot;dubbo&amp;quot; /&amp;gt;&lt;/code>, default is &lt;code>dubbo&lt;/code>.&lt;/li>
&lt;li>You can set the Redis cluster policy with &lt;code>&amp;lt;dubbo:registry cluster=&amp;quot;replicate&amp;quot; /&amp;gt;&lt;/code>, default is &lt;code>failover&lt;/code>:
&lt;ul>
&lt;li>&lt;code>failover&lt;/code>: Only write and read from any one, retry another on failure, data synchronization needs to be configured on the server side.&lt;/li>
&lt;li>&lt;code>replicate&lt;/code>: Write to all servers simultaneously from the client, read from one, no synchronization needed on the server side, the registration center cluster increases and so does performance pressure.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="working-principle">Working Principle&lt;/h2>
&lt;p>The registry is implemented based on Redis [^1].&lt;/p></description></item><item><title>Runtime Management of the Logging Framework</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/logger-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/logger-management/</guid><description>&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 &lt;p>Starting from &lt;code>3.0.10&lt;/code>, dubbo-qos runtime control supports querying logging configurations and dynamically modifying the logging framework and log levels used.&lt;/p>
&lt;p>The logging configurations modified through dubbo-qos are not persistently stored and will be ineffective after application restarts.&lt;/p>


&lt;/div>

&lt;h3 id="query-logging-configuration">Query Logging Configuration&lt;/h3>
&lt;p>Command: &lt;code>loggerInfo&lt;/code>&lt;/p>
&lt;p>Example:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; telnet 127.0.0.1 &lt;span style="color:#2aa198">22222&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; loggerInfo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Output:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Trying 127.0.0.1...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Connected to localhost.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Escape character is &amp;#39;^]&amp;#39;.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ___ __ __ ___ ___ ____ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> / _ \ / / / // _ ) / _ ) / __ \ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> / // // /_/ // _ |/ _ |/ /_/ / 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/____/ \____//____//____/ \____/ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;loggerInfo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Available logger adapters: [jcl, jdk, log4j, slf4j]. Current Adapter: [log4j]. Log level: INFO
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="change-log-level">Change Log Level&lt;/h3>
&lt;p>Command: &lt;code>switchLogLevel {level}&lt;/code>&lt;/p></description></item><item><title>Serialization Protocol Upgrade</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/serialization-upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/serialization-upgrade/</guid><description>&lt;p>In version &lt;code>3.1.0&lt;/code>, Dubbo adds support for Fastjson2 in its default serialization protocols. Some users may consider upgrading the serialization protocol in existing systems, but differences in server and client versions may result in the client not supporting the server&amp;rsquo;s serialization protocol.&lt;/p>
&lt;p>In version &lt;code>3.2.0&lt;/code>, Dubbo&amp;rsquo;s server introduces a new configuration &lt;code>prefer-serialization&lt;/code>, which can perfectly address the risks that may arise during the server serialization upgrade process.&lt;/p>
&lt;h3 id="best-practices">Best Practices&lt;/h3>
&lt;p>Upgrading the serialization protocol requires two steps:&lt;/p></description></item><item><title>Service Discovery Based on Kubernetes Service</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/kubernetes/</guid><description>&lt;p>In the previous two sections, we discussed two registration center patterns: Nacos and Zookeeper, which are more traditional registration center solutions. In a Kubernetes deployment environment, Dubbo supports a service discovery pattern based on Kubernetes Service, which works as shown in the diagram below:&lt;/p>
&lt;img src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes-service.png" style="max-width:650px;height:auto;" />
&lt;p>In this mode, service discovery aligns with the user&amp;rsquo;s deployment and operation tasks. Users define standard Kubernetes Services and Deployments, deploying them to Kubernetes. The Control Plane then monitors the APISERVER resources and interacts with the SDK processes to form a complete service discovery system.&lt;/p></description></item><item><title>官方 Dubbo 主页的维护</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/apache-dubbo-page_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/committer/apache-dubbo-page_dev/</guid><description>&lt;p>Apache 有一个官方的网站，用来维护所有的孵化项目的信息。每一个孵化项目在这个网站下都有一个信息页。
Dubbo 的信息页地址是 &lt;a href="https://incubator.apache.org/projects/dubbo.html">https://incubator.apache.org/projects/dubbo.html&lt;/a>。&lt;/p>
&lt;p>当项目发生比较大的变化，比如新的 committer 的加入，新的 PMC 的当选，或是新版本的 Release 等，都需要将这些更新信息维护到这个页面。&lt;/p>
&lt;p>这个官方网站的项目地址是&lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk">https://svn.apache.org/repos/asf/incubator/public/trunk&lt;/a>。&lt;/p>
&lt;p>维护这个页面的方法如下：&lt;/p>
&lt;p>1.安装 SVN。若是 Mac OS X 系统或是 Linux 系统，则自带了 SVN。若是 Windows 系统，则请首先自行安装 SVN。&lt;/p>
&lt;p>2.用 SVN 将这个&lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk">项目&lt;/a> checkout 下来 。&lt;/p>
&lt;p>3.修改 content/projects/dubbo.xml 文件，并保存。&lt;/p>
&lt;p>4.安装 ANT。执行 trunk 目录下的 build.sh 或者 build.bat 脚本构建项目。&lt;/p>
&lt;p>5.构建完成后，可以用浏览器打开 target/site/projects/dubbo.html 文件，预览修改是否生效。&lt;/p>
&lt;p>6.用 SVN 的 commit 命令将 dubbo.xml 文件提交到服务器，并且不要提交 dubbo.html 文件（因为服务器端会定时自动构建）。
此过程会要求输入Apache id和密码。&lt;/p>
&lt;p>参考:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="http://incubator.apache.org/guides/website.html">http://incubator.apache.org/guides/website.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk/README.txt">https://svn.apache.org/repos/asf/incubator/public/trunk/README.txt&lt;/a>&lt;/li>
&lt;/ol></description></item><item><title>扩展 Dubbo 向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/dubbo-extension-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/dubbo-extension-guide_dev/</guid><description>&lt;p>Dubbo 使用微内核+插件的设计模式。内核只负责组装插件，Dubbo 的功能都是由扩展点（插件）实现，这就意味着 Dubbo 的所有功能都可以被用户定制的扩展所替代。&lt;/p>
&lt;h3 id="dubbo-生态系统">Dubbo 生态系统&lt;/h3>
&lt;p>我们建议您将扩展加入到 Dubbo 生态系统。使用这种模式，可以使 Dubbo 的核心仓库更干净，并且可以减少维护工作。更少的代码也可以提高核心仓库的构建速度。&lt;/p>
&lt;h3 id="依赖">依赖&lt;/h3>
&lt;p>要实现您自己的 Dubbo 扩展，通常只需依赖 API jar 就可以满足您的需求。例如：&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;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.dubbo&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>dubbo-serialization-api&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>${dubbo.version}&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;h3 id="src指导">Src指导&lt;/h3>
&lt;p>通常，要实现特殊的扩展，只需要参考&lt;a href="../new-contributor-guide_dev">开发者指南&lt;/a>，实现Dubbo必要的接口和合适的扩展即可。除此之外，还有一些其它的事项需要注意：&lt;/p>
&lt;ol>
&lt;li>良好的测试，您需要编写单元测试和冒烟测试以消除潜在的 bug。&lt;/li>
&lt;li>没有警告，如有不可避免的警告，请使用 @SuppressWarnings 阻止它，但是请不要乱用。&lt;/li>
&lt;li>README。添加必要的自述以说明如何使用扩展，以及需要注意的事项。&lt;/li>
&lt;li>许可证：请确保使用Apache License 2.0。&lt;/li>
&lt;/ol>
&lt;h3 id="通知社区">通知社区&lt;/h3>
&lt;ol>
&lt;li>提交您的代码到 &lt;a href="https://github.com">github&lt;/a>。&lt;/li>
&lt;li>加入邮件列表（建议）。点击&lt;a href="https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide">这里&lt;/a>查看如何加入邮件列表。&lt;/li>
&lt;li>发送一封邮件到 &lt;a href="mailto:dev@incubator.dubbo.apache.org">dev@incubator.dubbo.apache.org&lt;/a> 通知社区。&lt;/li>
&lt;li>通常，发送邮件之后，社区会对您的扩展进行讨论，dubbo 组的管理员会联系您转移您的项目到 dubbo 生态系统。&lt;/li>
&lt;/ol>
&lt;h3 id="转移项目到dubbo生态系统">转移项目到dubbo生态系统&lt;/h3>
&lt;ol>
&lt;li>dubbo 组的管理员会请您将您的项目的所有者转让给 dubbo。&lt;/li>
&lt;li>dubbo 组的管理员会在 dubbo 组下新建一个项目并邀请您加入到这个项目。&lt;/li>
&lt;li>一旦您接受邀请，您可以将您的项目转移到 dubbo 组下的新项目里。&lt;/li>
&lt;li>dubbo 组的成员会对您的项目进行代码审查。随后，您可以对这些代码进行改进。&lt;/li>
&lt;/ol></description></item><item><title>Dubbo3 Application-level Service Discovery Design</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/service-discovery/</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/service-discovery/</guid><description>&lt;h2 id="objective">Objective&lt;/h2>
&lt;ul>
&lt;li>Significantly reduce the resource consumption during the service discovery process, including improving the capacity limits of the registry center and reducing the resource consumption of address resolution on the consumer side, enabling the Dubbo3 framework to support service governance for larger cluster scales and achieving infinite horizontal scaling.&lt;/li>
&lt;li>Adapt to lower-level infrastructure service discovery models, such as Kubernetes and Service Mesh.&lt;/li>
&lt;/ul>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>&lt;img alt="interface-arc" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/proposals/discovery/arc.png">&lt;/p>
&lt;p>Let&amp;rsquo;s start with the classic working principle diagram of Dubbo. Since its inception, Dubbo has built-in capabilities for service address discovery. The provider registers its address to the registry center, and the consumer subscribes to receive real-time address updates from the registry center. Upon receiving the address list, the consumer initiates RPC calls to the provider based on specific load balancing strategies.&lt;/p></description></item><item><title>0-6 - Thread Interruption Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/6/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>A running thread is explicitly interrupted by calling &lt;code>interrupt()&lt;/code> while it is in &lt;code>wait&lt;/code>, &lt;code>sleep&lt;/code>, or &lt;code>join&lt;/code> states.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>When a normally running thread calls the &lt;code>interrupt()&lt;/code> method, it sets the current thread&amp;rsquo;s interrupt status to true, but the thread&amp;rsquo;s execution will not be affected.
You can take action based on the actual situation or check if the business code has been misused.&lt;/p></description></item><item><title>1-6 - Error clearing URL cache</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/6/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Errors occurring while clearing the URL cache in &lt;code>CacheableFailbackRegistry.RemovalTask&lt;/code> will trigger an error in clearing the URL cache.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This error is an internal Dubbo error. If you encounter it, please create an &lt;strong>issue&lt;/strong> on GitHub and provide the error message along with reproduction steps. We will assist you in resolving the issue.&lt;/p>
&lt;blockquote>
&lt;p>Also refer to
&lt;a href="https://github.com/apache/dubbo">Dubbo Community&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-6 - The list of providers filtered by conditional routing is empty</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/6/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The filtering conditions for the conditional routing provider are empty.&lt;/li>
&lt;li>The list of providers filtered by conditional routing is still empty under forced degradation.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Refer to the community request routing example to adjust the conditional routing configuration.&lt;/p>
&lt;/blockquote></description></item><item><title>3-6 - Proxy execution service encountered an exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/6/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The current service parameter shows the input parameter &lt;code>deprecated&lt;/code>.&lt;/li>
&lt;li>A generic declared class may trigger this warning.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the URL contains the input parameter &lt;code>deprecated=true&lt;/code>&lt;/li>
&lt;li>If this error occurs in a generic declared class, it will attempt to create a proxy without an actual interface class.&lt;/li>
&lt;/ol></description></item><item><title>4-6 - Deserialization Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/6/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>This occurs when using a custom serialization method, and an error happens during the use of the custom SPI &lt;code>org.apache.dubbo.common.serialize.Serialization&lt;/code> serialization method.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Stack trace information can be analyzed using some third-party tools or by using &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to obtain the content of the object that caused the error, and then modify it in conjunction with the custom implementation.&lt;/p>
&lt;blockquote>
&lt;p>Refer to &lt;a href="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/serialize/">Serialization Extension&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>5-6 - Attribute conflict of interface types</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/6/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Improper configuration of the generic definition.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the generic definition is correct.&lt;/p></description></item><item><title>6-6 - Unsupported Message</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/6/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Data serialization errors or exceeding the maximum serialization value.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or by running &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/p>
&lt;p>For specific configuration items supported by each component and their meanings, please refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Manual&lt;/a>&lt;/p></description></item><item><title>7-6 - QOS encountered an unknown exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/6/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>QOS encountered an unknown exception&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether the service for the current request is accessible.&lt;/li>
&lt;li>It is possible that for some reason, the &lt;code>CommandContext&lt;/code> instance could not be loaded or returned correctly. You can troubleshoot and locate the issue based on the error messages in the console.&lt;/li>
&lt;/ol></description></item><item><title>Application Level Service Discovery vs Interface Level Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/service-discovery-application-vs-interface/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/service-discovery-application-vs-interface/</guid><description>&lt;p>Dubbo3 currently supports interface-level service discovery.&lt;/p>
&lt;h2 id="application-level-service-discovery">Application Level Service Discovery&lt;/h2>
&lt;h3 id="design-goals">Design Goals&lt;/h3>
&lt;ul>
&lt;li>Significantly reduce resource consumption during the service discovery process, including enhancing the registration center&amp;rsquo;s capacity and reducing resource usage for consumer address resolution, allowing the Dubbo3 framework to support service governance for larger clusters and achieve unlimited horizontal scaling.&lt;/li>
&lt;li>Adapt to underlying infrastructure service discovery models, such as Kubernetes and Service Mesh.&lt;/li>
&lt;/ul>
&lt;h3 id="comparison-with-interface-level">Comparison with Interface Level&lt;/h3>
&lt;p>&lt;img alt="interface-arc" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/proposals/discovery/arc.png">&lt;/p>
&lt;p>Starting from the most classic working principle diagram of Dubbo, service address discovery has been built into Dubbo since its inception. Providers register addresses with the registration center, and consumers subscribe to real-time updates of these addresses from the registration center. Upon receiving the address list, consumers initiate RPC calls to providers based on specific load balancing strategies.&lt;/p></description></item><item><title>Introduction to Admin Documentation Management Features</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/documentation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/control-plane/documentation/</guid><description>&lt;p>// TBD&lt;/p></description></item><item><title>Extension Adaptation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/extensibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/extensibility/</guid><description>&lt;p>Dubbo is designed to be highly extensible. Through these extension points, you can:&lt;/p>
&lt;ul>
&lt;li>Intercept traffic and control traffic behavior&lt;/li>
&lt;li>Optimize some of Dubbo&amp;rsquo;s default strategies and implementations as needed&lt;/li>
&lt;li>Adapt Dubbo services to internal microservice clusters or other mainstream open-source components&lt;/li>
&lt;/ul>
&lt;h2 id="everything-is-extensible">Everything is Extensible&lt;/h2>
&lt;p>Dubbo&amp;rsquo;s extensibility allows the Dubbo project to be conveniently divided into sub-modules, achieving hot-plug features. Users can completely replace Dubbo&amp;rsquo;s native implementations based on their own needs to meet their business requirements.&lt;/p></description></item><item><title>FST</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fst/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/fst/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>FST serialization stands for Fast Serialization, which is a replacement implementation for Java serialization. Since the previous discussion highlighted two serious shortcomings of Java serialization, these have been significantly improved in FST. The characteristics of FST are as follows:&lt;/p>
&lt;ol>
&lt;li>Improved performance by 10 times compared to JDK serialization, with size reduction of more than 3-4 times&lt;/li>
&lt;li>Supports off-heap Maps and the persistence of off-heap Maps&lt;/li>
&lt;li>Supports serialization to JSON&lt;/li>
&lt;/ol>
&lt;h2 id="2-usage">2 Usage&lt;/h2>
&lt;h3 id="21-adding-dependencies">2.1 Adding Dependencies&lt;/h3>
&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>org.apache.dubbo.extensions&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>dubbo-serialization-fst&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.3.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;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>de.ruedigermoeller&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>fst&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.0.3&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-configuring-activation">2.2 Configuring Activation&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">serialization&lt;/span>: fst
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&lt;/p></description></item><item><title>Higress</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/higress/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/higress/</guid><description>&lt;p>This document explains how to install and configure Higress, covering local, docker, kubernetes, and other environments. Below is a quick sample installation guide; for setting up a production-ready cluster, please refer to the official Higress documentation.&lt;/p>
&lt;h2 id="docker">docker&lt;/h2>
&lt;p>To start Higress using docker, please ensure you have correctly &lt;a href="https://docs.docker.com/engine/install/" target="_blank">installed docker&lt;/a> on your local machine.&lt;/p>
&lt;p>Use the following command to install Higress:&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 -fsSL https://higress.io/standalone/get-higress.sh | bash -s -- -a -c nacos://192.168.0.1:8848 --nacos-username&lt;span style="color:#719e07">=&lt;/span>nacos --nacos-password&lt;span style="color:#719e07">=&lt;/span>nacos
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Please replace &lt;code>192.168.0.1&lt;/code> with the IP of the Nacos server (if Nacos is deployed locally, do not use loopback addresses such as &lt;code>localhost&lt;/code> or &lt;code>127.0.0.1&lt;/code>). Adjust the values of &amp;ndash;nacos-username and &amp;ndash;nacos-password as needed; if Nacos service does not have authentication enabled, these two parameters can be removed.&lt;/p></description></item><item><title>Multi-Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/multiple-registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/registry/multiple-registry/</guid><description>&lt;h2 id="1-associating-services-with-multiple-registries">1 Associating Services with Multiple Registries&lt;/h2>
&lt;h3 id="11-global-default-registry">1.1 Global Default Registry&lt;/h3>
&lt;p>Dubbo registries and services are independently configured, and developers usually do not need to set up the relationship between service and registry components. The Dubbo framework will automatically perform the following actions:&lt;/p>
&lt;ul>
&lt;li>For all Service services, register service addresses with all global default registries.&lt;/li>
&lt;li>For all Reference services, subscribe to service addresses from all global default registries.&lt;/li>
&lt;/ul>
&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-yml" data-lang="yml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> registries
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> beijingRegistry
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: zookeeper://localhost:2181
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shanghaiRegistry
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: zookeeper://localhost:2182
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>&lt;span style="color:#268bd2">@DubboService&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">DemoServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> DemoService {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">@DubboService&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">HelloServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> HelloService {}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The above configuration, developed using Spring Boot (XML and API methods are similar), sets up two global default registries, beijingRegistry and shanghaiRegistry. The services DemoService and HelloService will be registered to the two default registries respectively.&lt;/p></description></item><item><title>Guiding Traffic Distribution Based on Request Parameters</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/arguments/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/arguments/</guid><description>&lt;p>Forwarding traffic based on request parameter values is a very flexible and practical traffic control strategy. For instance, in microservice practices, routing traffic based on parameters (such as user ID) allows a portion of user requests to be directed to the latest product version to validate the stability of the new version and gather user feedback on the product experience, which is a commonly used effective gray mechanism in production practices.&lt;/p></description></item><item><title>Rest Protocol</title><link>https://deploy-preview-3202--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-3202--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>Router Extensions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/router/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Select one from multiple service providers to call.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.RouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.Router&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.ScriptRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.FileRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.condition.config.AppRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.CacheableRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.condition.ConditionRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.mock.MockRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.condition.config.ServiceRouterFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.router.tag.TagRouterFactory&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxRouterFactory.java (implements RouterFactory interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.cluster.RouterFactory (plain text file, content: xxx=com.xxx.XxxRouterFactory)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxRouterFactory.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.cluster.RouterFactory;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.Invoker;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.Invocation;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.RpcException;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxRouterFactory&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> RouterFactory {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Router &lt;span style="color:#268bd2">getRouter&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.rpc.cluster.RouterFactory:&lt;/p></description></item><item><title>Achieving Address Interoperability Based on Application-Level Service Discovery</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-dubbo/service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/interop-dubbo/service-discovery/</guid><description>&lt;p>In the previous two examples, we demonstrated the interoperability capabilities of dubbo java and dubbo go at the protocol level, covering both the triple and dubbo protocols.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="../call_java_protocol_dubbo_non_protobuf">Non-protobuf mode protocol interoperability (triple and dubbo protocols)&lt;/a>&lt;/li>
&lt;li>&lt;a href="../call_java_protocol_triple_protobuf">protobuf+triple protocol interoperability (triple protocol)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>In this document, we will demonstrate the service discovery interoperability between dubbo java and dubbo go. With the combination of protocol compatibility, we can achieve full interoperability between the dubbo java and dubbo go microservice systems.&lt;/p></description></item><item><title>Triple Protocol Backpressure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/triple-backpress/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/triple-backpress/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Backpressure is a core mechanism in streaming communication that coordinates the rate difference between data producers and consumers. When the consumer&amp;rsquo;s processing speed cannot keep up with the producer&amp;rsquo;s sending speed, the backpressure mechanism notifies the producer to slow down, thereby preventing memory overflow and system crashes.&lt;/p>
&lt;p>Triple protocol is built on HTTP/2 and naturally supports streaming communication. In Dubbo 3.3.7, Triple protocol added complete backpressure support with gRPC-compatible APIs, enabling developers to precisely control data sending and receiving rates in streaming calls.&lt;/p></description></item><item><title>Zookeeper</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/zookeeper/</guid><description>&lt;p>This article explains how to install and configure Zookeeper, covering local, docker, kubernetes, and other environments. The following is just a quick example installation guide; for setting up a production-ready cluster, please refer to the Zookeeper official documentation.&lt;/p>
&lt;h2 id="local-download">Local Download&lt;/h2>
&lt;h4 id="download-zookeeper">Download Zookeeper&lt;/h4>
&lt;p>Please go to the Apache Zookeeper &lt;a href="https://zookeeper.apache.org/releases.html" target="_blank">download page&lt;/a> to download the latest version of the Zookeeper release package.&lt;/p>
&lt;p>Unpack the downloaded Zookeeper package:&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>tar -zxvf apache-zookeeper-3.8.3.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> apache-zookeeper-3.8.3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="start-zookeeper">Start Zookeeper&lt;/h4>
&lt;p>Before starting Zookeeper, you need to create the file &lt;code>conf/zoo.cfg&lt;/code> in the root directory:&lt;/p></description></item><item><title>0-7 - Reflection class not found</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/7/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>Generally, this occurs when &lt;code>Class.forName(className)&lt;/code> is executed and the current class &lt;code>className&lt;/code> cannot be found.&lt;/li>
&lt;li>The business logic explicitly excludes the current &lt;code>className&lt;/code> class, resulting in it not being found during loading.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if &lt;code>className&lt;/code> exists in &lt;code>Class.forName(className)&lt;/code>.&lt;/li>
&lt;li>Investigate the business logic to see if any configuration or scanned annotations use &lt;code>exclude&lt;/code> to exclude certain classes or packages.&lt;/li>
&lt;/ol></description></item><item><title>1-7 - Notification registration event failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/7/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>When applied to platforms based on the xDS protocol, it is necessary to notify the consumer when the metadata is updated. If a consumer is offline, it may cause the notification to fail and remove the corresponding consumer&amp;rsquo;s listener.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Please also refer to
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties#dubbo.registry">Registry Center - Configuration Item Reference Manual&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-7 - Condition Routing Execution Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/7/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The condition routing rules are not configured according to the specifications, resulting in execution exceptions when executing the condition routing filter.&lt;/li>
&lt;/ul>
&lt;h2 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h2>
&lt;blockquote>
&lt;p>Refer to community requested routing examples.&lt;/p>
&lt;/blockquote></description></item><item><title>3-7 - Server response result timeout</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/7/</guid><description>&lt;p>The server did not receive a response within the time set by the client.&lt;/p>
&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>The server&amp;rsquo;s business processing logic is too complex to respond within the effective time.&lt;/li>
&lt;li>The connection between the server and client is disconnected, causing network packet loss.&lt;/li>
&lt;li>The server is under heavy load.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if there is indeed a performance bottleneck in the server&amp;rsquo;s business processing capability.&lt;/li>
&lt;li>Ensure the network is functioning normally.&lt;/li>
&lt;li>You can analyze stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/li>
&lt;/ol></description></item><item><title>4-7 - Error Occurred When Closing Client</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/7/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>An error occurs during the &lt;code>close&lt;/code> or &lt;code>destroy&lt;/code> of various &lt;code>Connect Clients&lt;/code>, which does not affect the final outcome.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Stack trace information can be analyzed using some third-party tools or by using &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/p></description></item><item><title>5-7 - Unexpected error occurred while canceling export</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/7/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Unable to connect to the configuration center service.&lt;/li>
&lt;li>The configured protocol, IP, or port is incorrect.&lt;/li>
&lt;li>There is a version conflict between the configuration center client and server, preventing an effective connection.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the status of the configuration center service is normal.&lt;/li>
&lt;li>Verify that the configured protocol, IP, or port is correct.&lt;/li>
&lt;li>Check if the version of the configuration center client in use is compatible with the server version.&lt;/li>
&lt;/ol></description></item><item><title>6-7 - Thread connection count exceeds warning</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/7/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Warning message when the number of connections exceeds the limit, alerting that the configured connection count has been exceeded.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>The default configuration item &lt;code>connect.queue.warning.size=1000&lt;/code> can be adjusted through configuration.&lt;/p></description></item><item><title>7-7 - QOS Unauthorized Access</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/7/7/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The QoS request is unauthorized to access the corresponding resource, which typically occurs in scenarios of malicious attacks.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the request is expected. If not expected, check for any sources of malicious attacks.&lt;/p>
&lt;blockquote>
&lt;p>If it is expected, please refer to the article on &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/overview#security">QoS Security&lt;/a> to configure the corresponding permission information.&lt;/p>
&lt;/blockquote></description></item><item><title>Filter Interceptor</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/rpc/filter/</guid><description>&lt;p>Filters dynamically intercept requests or responses to transform or utilize the information contained in the requests or responses. Filters do not typically create responses themselves but provide generic functions that can be &amp;ldquo;attached&amp;rdquo; to any RPC request. Dubbo Filters are pluggable, allowing us to insert any type and number of filters into a single RPC request.&lt;/p>
&lt;p>The working principle of filters is illustrated in the diagram below:&lt;/p>
&lt;img style="max-width:800px;height:auto;" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/framework/filter.png"/>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="1-concept-of-filter-interceptor">1. Concept of Filter Interceptor&lt;/h3>
&lt;p>Filter is defined as follows:&lt;/p></description></item><item><title>Generic Call</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/generic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/generic/</guid><description>&lt;h2 id="1-dubbo-go-generic-call-java-server">1. Dubbo-go Generic Call Java Server&lt;/h2>
&lt;p>Using Triple protocol + hessian2 serialization scheme&lt;/p>
&lt;h3 id="11-java-server-startup">1.1 Java Server Startup&lt;/h3>
&lt;ol>
&lt;li>Transport Structure Definition&lt;/li>
&lt;/ol>
&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>&lt;span style="color:#719e07">package&lt;/span> org.apache.dubbo;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.io.Serializable;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.Date;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">User&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Serializable {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">private&lt;/span> String id;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> String name;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> &lt;span style="color:#dc322f">int&lt;/span> age;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> Date time &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> Date();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Interface Definition&lt;/li>
&lt;/ol>
&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>&lt;span style="color:#719e07">package&lt;/span> org.apache.dubbo;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.ArrayList;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.List;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.Map;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//import org.apache.dubbo.rpc.filter.GenericFilter;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">UserProvider&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	User &lt;span style="color:#268bd2">GetUser1&lt;/span>(String userId);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="12-go-client-generic-call">1.2 Go Client Generic Call&lt;/h3>
&lt;p>This section shows how to construct a generic interface reference in the form of an API&lt;/p></description></item><item><title>Gson</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/gson/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/gson/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>Gson is an open-source Java library released by Google, primarily used for serializing Java objects to JSON strings or deserializing JSON strings into Java objects.&lt;/p>
&lt;h2 id="2-usage">2 Usage&lt;/h2>
&lt;h3 id="21-add-dependency">2.1 Add Dependency&lt;/h3>
&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>org.apache.dubbo.extensions&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>dubbo-serialization-gson&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.3.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;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.code.gson&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>gson&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>2.10.1&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-configuration-enable">2.2 Configuration Enable&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">serialization&lt;/span>: gson
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-properties" data-lang="properties">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># dubbo.properties&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.protocol.serialization&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">gson&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.consumer.serialization&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">gson&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.reference.com.demo.DemoService.serialization&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">gson&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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:protocol&lt;/span> serialization=&lt;span style="color:#2aa198">&amp;#34;gson&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">&amp;lt;!-- or --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:consumer&lt;/span> serialization=&lt;span style="color:#2aa198">&amp;#34;gson&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">&amp;lt;!-- or --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> serialization=&lt;span style="color:#2aa198">&amp;#34;gson&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Load Balance Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/load-balance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/load-balance/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Select one from multiple service providers for invocation.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.cluster.LoadBalance&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> loadbalance=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value settings, when &amp;lt;dubbo:protocol&amp;gt; does not configure loadbalance, this configuration is used --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> loadbalance=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.loadbalance.RandomLoadBalance&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.loadbalance.ShortestResponseLoadBalance&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxLoadBalance.java (implements LoadBalance interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.cluster.LoadBalance (plain text file, content: xxx=com.xxx.XxxLoadBalance)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxLoadBalance.java：&lt;/p></description></item><item><title>Observability Service</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/observability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/observability/</guid><description>&lt;p>Dubbo internally maintains multiple dimensions of observable metrics and supports various ways of visual monitoring. Observable metrics are generally divided into three measurement dimensions:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Admin&lt;/strong> The Admin console visually displays applications, services, instances, and dependencies in the cluster. It supports the issuance of traffic governance rules and provides tools such as service testing, mock, and document management to improve R&amp;amp;D testing efficiency.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Metrics&lt;/strong> Dubbo collects a series of traffic metrics such as QPS, RT, number of successful requests, number of failed requests, etc., as well as a series of internal component statuses such as thread pool count, service health status, etc.&lt;/p></description></item><item><title>Performance Sampling Command</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/profiler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/profiler/</guid><description>&lt;p>The performance sampling feature can detect the time consumption at various points in the Dubbo processing chain. When a timeout occurs &lt;code>( usageTime / timeout &amp;gt; profilerWarnPercent * 100 )&lt;/code>, the call duration is logged.&lt;/p>
&lt;p>This feature is divided into two modes: &lt;code>simple profiler&lt;/code> and &lt;code>detail profiler&lt;/code>. The &lt;code>simple profiler&lt;/code> mode is enabled by default, while the &lt;code>detail profiler&lt;/code> mode is disabled by default. The &lt;code>detail profiler&lt;/code> collects additional information such as processing time for each filter and specific time consumption on protocols, compared to the &lt;code>simple profiler&lt;/code>. If long processing times are found within the Dubbo framework while in &lt;code>simple profiler&lt;/code>, the &lt;code>detail profiler&lt;/code> can be enabled for better issue diagnosis.&lt;/p></description></item><item><title>Test Coverage Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/test-coverage-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/contact/contributor/test-coverage-guide_dev/</guid><description>&lt;h3 id="benefits-of-writing-unit-tests">Benefits of Writing Unit Tests&lt;/h3>
&lt;ul>
&lt;li>Unit tests help everyone dive into the details of the code and understand its functionality.&lt;/li>
&lt;li>Through test cases, we can discover bugs and enhance the robustness of the code.&lt;/li>
&lt;li>Test cases also serve as demo usage of the code.&lt;/li>
&lt;/ul>
&lt;h3 id="some-design-principles-for-unit-test-cases">Some Design Principles for Unit Test Cases&lt;/h3>
&lt;ul>
&lt;li>Steps, granularity, and combination conditions should be carefully designed.&lt;/li>
&lt;li>Pay attention to boundary conditions.&lt;/li>
&lt;li>Unit tests should also be well-designed; do not write useless code.&lt;/li>
&lt;li>When you find a &lt;code>method&lt;/code> difficult to unit test, if it can be confirmed that this &lt;code>method&lt;/code> is &lt;code>smelly code&lt;/code>, then refactor it together with the developer.&lt;/li>
&lt;li>The mock framework used in Dubbo is: &lt;a href="http://site.mockito.org/">mockito&lt;/a>. Below are some developer guides: &lt;a href="https://www.baeldung.com/bdd-mockito">mockito tutorial&lt;/a>, &lt;a href="https://site.mockito.org/">mockito refcard&lt;/a>&lt;/li>
&lt;li>TDD (optional): When you start writing a new feature, you can try to write the test cases first.&lt;/li>
&lt;/ul>
&lt;h3 id="test-coverage-threshold">Test Coverage Threshold&lt;/h3>
&lt;ul>
&lt;li>At this stage, the test coverage threshold for Delta changes is: &amp;gt;=60%, the higher the better.&lt;/li>
&lt;li>We can see the test report on this page: &lt;a href="https://codecov.io/gh/apache/dubbo">https://codecov.io/gh/apache/dubbo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Triple Rest User Manual</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/tripe-rest-manual/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/protocol/tripe-rest-manual/</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 original Rest protocol has been moved to the Extensions library, with the Triple protocol providing more comprehensive support for Rest. If you need 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;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Since the Dubbo version 3.3, the Triple protocol reuses the existing HTTP protocol stack, achieving comprehensive REST-style service export capabilities. Users can decentralize directly to access backend Triple protocol services via HTTP protocol without using generic or gateway layer protocol conversion or configuration. Additionally, rich annotations and SPI extension support is provided for advanced REST usage, such as path customization, output format customization, and exception handling. Key features include:&lt;/p></description></item><item><title>Proportional Traffic Forwarding Based on Weight Values</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/weight/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/weight/</guid><description>&lt;p>Dubbo provides a weight-based load balancing algorithm that allows for proportional traffic distribution: machines with higher weight receive more request traffic, while those with lower weight receive relatively less.&lt;/p>
&lt;p>Based on a weight-based traffic scheduling algorithm, dynamically adjusting the weight of a single machine or a group of machines via rules can change the distribution of request traffic at runtime, enabling dynamic proportional traffic routing, which is useful for several typical scenarios.&lt;/p></description></item><item><title>测试覆盖率向导</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/test-coverage-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/contribution-guidelines/contributor/test-coverage-guide_dev/</guid><description>&lt;h3 id="写单元测试的收益">写单元测试的收益&lt;/h3>
&lt;ul>
&lt;li>单元测试能帮助每个人深入代码细节，了解代码的功能。&lt;/li>
&lt;li>通过测试用例我们能发现bug，并提交代码的健壮性。&lt;/li>
&lt;li>测试用例同时也是代码的demo用法。&lt;/li>
&lt;/ul>
&lt;h3 id="单元测试用例的一些设计原则">单元测试用例的一些设计原则&lt;/h3>
&lt;ul>
&lt;li>应该精心设计好步骤，颗粒度和组合条件。&lt;/li>
&lt;li>注意边界条件。&lt;/li>
&lt;li>单元测试也应该好好设计，不要写无用的代码。&lt;/li>
&lt;li>当你发现一个&lt;code>方法&lt;/code>很难写单元测试时，如果可以确认这个&lt;code>方法&lt;/code>是&lt;code>臭代码&lt;/code>，那么就和开发者一起重构它。&lt;/li>
&lt;li>Dubbo中用的mock框架是: &lt;a href="http://site.mockito.org/">mockito&lt;/a>. 下面是一些开发向导:&lt;a href="https://www.baeldung.com/bdd-mockito">mockito tutorial&lt;/a>,&lt;a href="https://site.mockito.org/">mockito refcard&lt;/a>&lt;/li>
&lt;li>TDD（可选）：当你开始写一个新的功能时，你可以试着先写测试用例。&lt;/li>
&lt;/ul>
&lt;h3 id="测试覆盖率设定值">测试覆盖率设定值&lt;/h3>
&lt;ul>
&lt;li>在现阶段，Delta更改代码的测试覆盖设定值为：&amp;gt;＝60%，越高越好。&lt;/li>
&lt;li>我们可以在这个页面中看到测试报告: &lt;a href="https://codecov.io/gh/apache/dubbo">https://codecov.io/gh/apache/dubbo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>0-8 - Reflection Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/8/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>When reflecting to call a method, the current method is not set with the correct parameter type values, meaning the parameter types do not match.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if there are any parameter type values that are not correctly set to match.&lt;/p></description></item><item><title>1-8 - Failure to unregister (unsubscribe) address during destruction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/8/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>The error during consumer unregistration or unsubscription may be caused by a failure of the registry center.&lt;/li>
&lt;li>The corresponding provider may not have been successfully published.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether the registry center is operating normally.&lt;/li>
&lt;li>Check whether the provider has been successfully published.&lt;/li>
&lt;li>Check the relevant parameters of the provider for the registry center, such as &lt;code>registry&lt;/code>, &lt;code>config-center&lt;/code>, and &lt;code>metadata-report&lt;/code>, to ensure they are configured correctly.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Reference Manual&lt;/a>&lt;/p></description></item><item><title>2-8 - Provider Returns Exception Response</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/8/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The provider itself throws an exception while handling the result.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the provider program is functioning normally.&lt;/p></description></item><item><title>3-8 - Proxy Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/3/8/</guid><description>&lt;p>Dynamic proxy creation failed.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Dynamic class loading exists&lt;/li>
&lt;li>Abnormal class format&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>If the logs indicate &lt;code>Fallback to use JDK proxy success&lt;/code>, it means that Dubbo successfully created the dynamic proxy by falling back to the JDK proxy. If the program runs normally, this can be ignored.&lt;/li>
&lt;li>If the logs indicate &lt;code>Fallback to use JDK proxy is also failed&lt;/code>, please check the corresponding class loading situation based on the exception stack trace to ensure it is normal. You can use tools like Arthas for assistance in troubleshooting.&lt;/li>
&lt;/ol></description></item><item><title>4-8 - Error occurred when shutting down the server</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/8/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Similar to 4-7, this occurs during shutdown.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack trace information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for locating the issue.&lt;/p></description></item><item><title>5-8 - The protocol will use a randomly available port</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/8/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The port specified by the protocol is occupied, and a random port is selected for startup.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the currently configured port is occupied by other applications.&lt;/p></description></item><item><title>6-8 - Failed to decode return data</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/8/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Incorrect return data format or decoding failure&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can output the specific service class name along with the returned message and stack information by using the debug/warn log mode.&lt;/p></description></item><item><title>Authentication and Authorization</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/security/</guid><description>&lt;p>Dubbo provides a comprehensive mechanism for building a secure microservice communication system (zero-trust system), which includes:&lt;/p>
&lt;ul>
&lt;li>Avoiding man-in-the-middle attacks during communication, Dubbo provides identity authentication and TLS-based communication link encryption capabilities.&lt;/li>
&lt;li>Controlling inter-service access authorization, Dubbo provides mTLS and permission check mechanisms.&lt;/li>
&lt;/ul>
&lt;p>Through this document, you will learn how to use Dubbo&amp;rsquo;s security mechanisms to build a zero-trust microservice system, achieving identity authentication, transparent link encryption, authorization, auditing, and other capabilities. Since building zero trust is a systematic task and Dubbo is only a part of the data communication layer, you may need a series of infrastructure support, including certificate generation, distribution, and security policy management.&lt;/p></description></item><item><title>Cluster Fault Tolerance</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/fault-tolerent-strategy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/fault-tolerent-strategy/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>When cluster calls fail, Dubbo provides various fault tolerance solutions, with failover retry as the default.&lt;/p>
&lt;p>&lt;img alt="cluster" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/cluster.jpg">&lt;/p>
&lt;p>Node relationships:&lt;/p>
&lt;ul>
&lt;li>Here, &lt;code>Invoker&lt;/code> is an abstraction of a callable &lt;code>Service&lt;/code> of &lt;code>Provider&lt;/code>, encapsulating the &lt;code>Provider&lt;/code> address and &lt;code>Service&lt;/code> interface information.&lt;/li>
&lt;li>&lt;code>Directory&lt;/code> represents multiple &lt;code>Invokers&lt;/code>, which can be viewed as &lt;code>List&amp;lt;Invoker&amp;gt;&lt;/code>, but unlike &lt;code>List&lt;/code>, its values may change dynamically, such as changes pushed by the registry.&lt;/li>
&lt;li>&lt;code>Cluster&lt;/code> disguises multiple &lt;code>Invokers&lt;/code> in &lt;code>Directory&lt;/code> as a single &lt;code>Invoker&lt;/code>, transparent to the upper layer, involving fault tolerance logic; if a call fails, it retries another.&lt;/li>
&lt;li>&lt;code>Router&lt;/code> selects a subset from multiple &lt;code>Invokers&lt;/code> based on routing rules, such as read-write separation and application isolation.&lt;/li>
&lt;li>&lt;code>LoadBalance&lt;/code> selects a specific &lt;code>Invoker&lt;/code> for the current call from multiple &lt;code>Invokers&lt;/code>, involving load balancing algorithms; if a call fails, it needs to reselect.&lt;/li>
&lt;/ul>
&lt;h2 id="cluster-fault-tolerance-modes">Cluster Fault Tolerance Modes&lt;/h2>
&lt;p>You can extend the cluster fault tolerance strategy. See: &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/cluster">Cluster Extension&lt;/a>&lt;/p></description></item><item><title>Event Notifications Triggered by Calls</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/events-notify/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/events-notify/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>The events &lt;code>oninvoke&lt;/code>, &lt;code>onreturn&lt;/code>, and &lt;code>onthrow&lt;/code> will be triggered before a call, after a call, and when an exception occurs, respectively. You can configure which class and method to notify when these events happen.&lt;/p>
&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>Before calling the service method, we can log the start time, after the call, calculate the total time consumed, and in case of exceptions, we can trigger alerts or print error logs, or log request and response logs before and after the service call.&lt;/p></description></item><item><title>Generic Invocation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/generic-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/generic-2/</guid><description>&lt;h2 id="1-dubbogo-generic-invocation-to-java-server">1. Dubbogo Generic Invocation to Java Server&lt;/h2>
&lt;p>Using Triple protocol + hessian2 serialization scheme&lt;/p>
&lt;p>Refer to Dubbogo 3.0 &lt;a href="https://www.yuque.com/docs/share/f4e72670-74ab-45b9-bc0c-4b42249ed953?">Generic Invocation Documentation&lt;/a>&lt;/p>
&lt;h3 id="11-java-server-startup">1.1 Java Server Startup&lt;/h3>
&lt;ol>
&lt;li>Transmission structure definition&lt;/li>
&lt;/ol>
&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>&lt;span style="color:#719e07">package&lt;/span> org.apache.dubbo;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.io.Serializable;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.Date;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">User&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Serializable {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#268bd2">private&lt;/span> String id;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> String name;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> &lt;span style="color:#dc322f">int&lt;/span> age;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> Date time &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> Date();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Interface definition&lt;/li>
&lt;/ol>
&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>&lt;span style="color:#719e07">package&lt;/span> org.apache.dubbo;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.ArrayList;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.List;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.Map;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">//import org.apache.dubbo.rpc.filter.GenericFilter;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">UserProvider&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	User &lt;span style="color:#268bd2">GetUser1&lt;/span>(String userId);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="12-go-client-generic-invocation">1.2 Go-Client Generic Invocation&lt;/h3>
&lt;p>Here is the construction of the generic interface reference in the form of API&lt;/p></description></item><item><title>Kryo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/kryo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/kryo/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>Kryo is a very mature serialization implementation that has been widely used in Twitter, Groupon, Yahoo, and several well-known open-source projects (such as Hive, Storm).&lt;/p>
&lt;h2 id="2-how-to-use">2 How to Use&lt;/h2>
&lt;h3 id="21-adding-dependencies">2.1 Adding Dependencies&lt;/h3>
&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>org.apache.dubbo.extensions&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>dubbo-serialization-kryo&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>1.0.1&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;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.esotericsoftware&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>kryo&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>5.4.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;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>de.javakaffee&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>kryo-serializers&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.45&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-configuration-enable">2.2 Configuration Enable&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">serialization&lt;/span>: kryo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&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-properties" data-lang="properties">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># dubbo.properties&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.protocol.serialization&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">kryo&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.consumer.serialization&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">kryo&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.reference.com.demo.DemoService.serialization&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">kryo&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&lt;/p></description></item><item><title>Merger Result Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/merger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/merger/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Merging return results, used for grouping aggregation.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.cluster.Merger&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:method&lt;/span> merger=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.ArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.ListMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.SetMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.MapMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.ByteArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.CharArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.ShortArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.IntArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.LongArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.FloatArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.DoubleArrayMerger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.cluster.merger.BooleanArrayMerger&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxMerger.java (implements Merger interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.cluster.Merger (plain text file, content: xxx=com.xxx.XxxMerger)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxMerger.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.rpc.cluster.Merger;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxMerger&lt;/span>&lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Merger&lt;span style="color:#719e07">&amp;lt;&lt;/span>T&lt;span style="color:#719e07">&amp;gt;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> T &lt;span style="color:#268bd2">merge&lt;/span>(T... results) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.rpc.cluster.Merger：&lt;/p></description></item><item><title>Rmi Protocol</title><link>https://deploy-preview-3202--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-3202--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>Router Status Command</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/router-snapshot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/router-snapshot/</guid><description>&lt;p>Many traffic governance capabilities in Dubbo are implemented based on the Router. In production environments, if traffic results do not meet expectations, you can use the router status command to check the router&amp;rsquo;s status to locate potential issues.&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/router-snapshot/">Router Status Collection&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h3 id="getroutersnapshot-command">getRouterSnapshot Command&lt;/h3>
&lt;p>Retrieve the grouping status of each layer of the router. (Only supports StateRouter)&lt;/p>
&lt;p>Command: &lt;code>getRouterSnapshot {serviceName}&lt;/code>&lt;/p>
&lt;p>&lt;code>serviceName&lt;/code> is the name of the service to collect, supports matching.&lt;/p></description></item><item><title>Service Downgrading for Weak Dependencies Before Major Promotions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/mock/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/mock/</guid><description>&lt;p>Due to the distributed nature of microservice systems, a service often needs to rely on many external services to implement a certain function. Therefore, the stability of a service depends not only on itself but also on the stability of all external dependencies. We can categorize these dependencies based on their importance into strong and weak dependencies: strong dependencies are those that must ensure stability at all costs, as the current service will also be unavailable if they are not; weak dependencies refer to those dependencies that allow the current service to function normally even when they are unavailable, as their unavailability only affects part of the functionality.&lt;/p></description></item><item><title>0-9 - Notification event failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/9/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The custom listener encountered a runtime exception during processing.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the business class that implements the &lt;code>org.apache.dubbo.rpc.ExporterListener&lt;/code> interface, as there may be a logical error in the implementation methods.&lt;/p></description></item><item><title>1-9 - Failure to read and write the registry service cache</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/9/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Multiple Dubbo processes (or other Java processes) are using the same cache file.&lt;/li>
&lt;li>Failure to read and write due to filesystem permission issues on the directory where the cache file is located.&lt;/li>
&lt;li>Incorrect input for the value of &lt;code>dubbo.registry.file&lt;/code>.&lt;/li>
&lt;li>Accidentally specified two registries to use the same file storage.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>&lt;strong>Tip:&lt;/strong>
If &lt;code>dubbo.registry.file&lt;/code> is not specified, the cache path for the registry service defaults to the &lt;code>~/.dubbo&lt;/code> directory
(where &lt;code>~&lt;/code> is the user&amp;rsquo;s HOME directory)&lt;/p></description></item><item><title>2-9 - Timeout check task failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/9/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The Dubbo framework adds a timeout check task to the request invocation, which results in the failure of adding the timeout check task.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>This exception is an internal exception of the Dubbo framework. Please submit an issue in the community, providing environmental information and reproduction steps.&lt;/p>
&lt;/blockquote></description></item><item><title>4-9 - Parsing Failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/9/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Generally, it is due to parameter values not conforming to the rules, resulting in errors during conversion.
For example:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>String timeoutString &lt;span style="color:#719e07">=&lt;/span> httpMetadata.headers().getFirst(TripleHeaderEnum.SERVICE_TIMEOUT.getHeader());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Long timeout &lt;span style="color:#719e07">=&lt;/span> Long.parseLong(timeoutString);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Long timeout &lt;span style="color:#719e07">=&lt;/span> GrpcUtils.parseTimeoutToMills(timeoutString);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>invocation.put(CommonConstants.TIMEOUT_KEY, timeout);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Modify the corresponding configuration according to the key name indicated in the stack information to meet the conversion rules.&lt;/p></description></item><item><title>5-9 - Service configuration export failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/9/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Unable to connect to the configuration center&amp;rsquo;s service.&lt;/li>
&lt;li>Incorrect protocol, IP, or port configured.&lt;/li>
&lt;li>Conflict between the version of the configuration center client and the server version, preventing a valid connection.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the status of the configuration center service is normal.&lt;/li>
&lt;li>Check if the configured protocol, IP, or port is correct.&lt;/li>
&lt;li>Verify whether the version of the configuration center client being used is compatible with the server version.&lt;/li>
&lt;/ol></description></item><item><title>6-9 - Duplicate Serial Number ID</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/9/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>An empty object was returned.&lt;/li>
&lt;li>A custom serial number class, &lt;code>org.apache.dubbo.common.serialize.Serialization#getContentTypeId&lt;/code>, duplicates with the system built-in. In this case, the first loaded SPI instance will prevail. Other entries will be skipped.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the return result.&lt;/li>
&lt;li>Built-in values can refer to the class &lt;code>org.apache.dubbo.common.serialize.Constants&lt;/code>&lt;/li>
&lt;/ol></description></item><item><title>Point-to-point Traffic Redirection to a Single Machine (e.g., Troubleshooting Issues)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/host/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/traffic-management/host/</guid><description>&lt;p>Automatic address discovery and load balancing mechanisms have many advantages; they make it possible to build scalable distributed microservices systems. However, this dynamic traffic allocation also brings a lot of complexity. A typical issue is that we can no longer predict which provider machine a request will hit. Yet, being able to expect or control requests to a specific provider machine can be very useful in certain scenarios. For instance, when developers troubleshoot complex issues in testing or production environments, reliably reproducing issues on a specific machine can greatly aid in final problem resolution.&lt;/p></description></item><item><title>Exposing Dubbo-go services using Pixiu</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/gateway/pixiu-nacos-triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/gateway/pixiu-nacos-triple/</guid><description>&lt;p>The Dubbo-go-pixiu gateway supports calls to Dubbo clusters in GO/Java. In the scenario of Dubbo-go 3.0, we can request the Pixiu gateway over HTTP protocol outside the cluster, perform protocol conversion at the gateway layer, and further call the Dubbo-go services inside the cluster.&lt;/p>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/golang-sdk/samples/pixiu-nacos-triple/triple-pixiu.png">&lt;/p>
&lt;p>The path for users to call Dubbo-go services is http://$(app_name)/$(service_name)/$(method).&lt;/p>
&lt;p>For example, if a proto file has the following definition:&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-protobuf" data-lang="protobuf">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> org&lt;span style="color:#719e07">.&lt;/span>apache.dubbo.quickstart.samples;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">service&lt;/span> UserProvider {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">rpc&lt;/span> SayHello (HelloRequest) &lt;span style="color:#719e07">returns&lt;/span> (User) {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">message&lt;/span> &lt;span style="color:#268bd2">HelloRequest&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">string&lt;/span> name &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>And when the dubbo-go service starts, it configures the application name as my-dubbogo-app in the dubbogo.yml:&lt;/p></description></item><item><title>Generic Call</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/generic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/generic/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 Generic calls are suitable for older versions of the Dubbo communication protocol. If you are using the triple protocol from version 3.3 and onwards, please use the HTTP application/json capabilities provided by the triple protocol to directly initiate service calls. Relevant examples can be found in &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/triple/">Gateway Access Instructions&lt;/a>.

&lt;/div>

&lt;p>A generic call (client generic call) refers to invoking the service when the caller does not have the service provider&amp;rsquo;s API (SDK) and can still obtain the call result. The caller can invoke the corresponding interface through a generic call by knowing the fully qualified class name and method name of the service interface.&lt;/p></description></item><item><title>MessagePack</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/msgpack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/serialization/dubbo/msgpack/</guid><description>&lt;h2 id="1-introduction">1 Introduction&lt;/h2>
&lt;p>MessagePack is a computer data interchange format. It is a binary format used to represent simple data structures such as arrays and associative arrays. MessagePack is designed to be as compact and simple as possible.&lt;/p>
&lt;h2 id="2-how-to-use">2 How to Use&lt;/h2>
&lt;h3 id="21-adding-dependencies">2.1 Adding Dependencies&lt;/h3>
&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>org.apache.dubbo.extensions&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>dubbo-serialization-msgpack&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.3.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;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.msgpack&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>msgpack-core&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.9.3&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>&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>org.msgpack&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>jackson-dataformat-msgpack&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.9.3&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-configuration-enable">2.2 Configuration Enable&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application.yml (Spring Boot)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">serialization&lt;/span>: msgpack
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or&lt;/p></description></item><item><title>Registry Center Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/registry/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Responsible for the registration and discovery of services.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.registry.RegistryFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.registry.Registry&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Define the registry --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:registry&lt;/span> id=&lt;span style="color:#2aa198">&amp;#34;xxx1&amp;#34;&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;xxx://ip:port&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Reference the registry, if the registry attribute is not configured, it will automatically scan the registry configuration in the ApplicationContext --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:service&lt;/span> registry=&lt;span style="color:#2aa198">&amp;#34;xxx1&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Reference the default value of the registry, when &amp;lt;dubbo:service&amp;gt; does not configure the registry attribute, use this configuration --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> registry=&lt;span style="color:#2aa198">&amp;#34;xxx1&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="extension-contracts">Extension Contracts&lt;/h2>
&lt;p>RegistryFactory.java：&lt;/p></description></item><item><title>Serialization Security Audit</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/security/</guid><description>&lt;p>Dubbo supports real-time viewing of current configuration information and the list of trusted/untrusted classes through QoS commands. Currently, two commands are supported: &lt;code>serializeCheckStatus&lt;/code> to view current configuration information, and &lt;code>serializeWarnedClasses&lt;/code> to view the real-time warning list.&lt;/p>
&lt;h3 id="serializecheckstatus-command">&lt;code>serializeCheckStatus&lt;/code> Command&lt;/h3>
&lt;p>Access directly through the console:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; telnet 127.0.0.1 &lt;span style="color:#2aa198">22222&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Trying 127.0.0.1...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Connected to localhost.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Escape character is &lt;span style="color:#2aa198">&amp;#39;^]&amp;#39;&lt;/span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ___ __ __ ___ ___ ____ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> / _ &lt;span style="color:#cb4b16">\ &lt;/span>/ / / // _ &lt;span style="color:#719e07">)&lt;/span> / _ &lt;span style="color:#719e07">)&lt;/span> / __ &lt;span style="color:#cb4b16">\ &lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> / // // /_/ // _ |/ _ |/ /_/ / 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/____/ &lt;span style="color:#cb4b16">\_&lt;/span>___//____//____/ &lt;span style="color:#cb4b16">\_&lt;/span>___/ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;serializeCheckStatus
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>CheckStatus: WARN
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>CheckSerializable: &lt;span style="color:#b58900">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>AllowedPrefix:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DisAllowedPrefix:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>By HTTP request for JSON format results:&lt;/p></description></item><item><title>Server Callback to Client</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/callback-parameter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/callback-parameter/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>The callback parameter method is similar to calling a local callback or listener; you only need to declare which parameter is a callback type in the Spring configuration file. Dubbo will generate a reverse proxy based on a long connection, allowing the server to invoke client logic. You can refer to the &lt;a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-callback">example code in the dubbo project&lt;/a>.&lt;/p>
&lt;h2 id="use-case">Use Case&lt;/h2>
&lt;p>The callback function informs the client of execution results or sends notifications, functioning similarly to asynchronous calls when method execution times are long, such as in approval workflows where the client is notified of approval results.&lt;/p></description></item><item><title>Service Mesh</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/service-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/service-mesh/</guid><description>&lt;p>Dubbo Mesh is Dubbo&amp;rsquo;s comprehensive microservice solution in the context of cloud-native, helping developers integrate Dubbo services with the standard Kubernetes Native Service system, allowing Dubbo applications to seamlessly integrate with mainstream service mesh products like Istio.&lt;/p>
&lt;p>Below is the deployment architecture diagram of Dubbo Mesh&lt;/p>
&lt;p>&lt;img alt="Dubbo-Mesh" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/mesh/mix-mesh.png">&lt;/p>
&lt;ul>
&lt;li>Control Plane. Istio serves as the unified control plane, providing capabilities such as Kubernetes adaptation, service discovery, certificate management, observability, and traffic governance for the cluster.&lt;/li>
&lt;li>Data Plane. Dubbo application instances act as data plane components, supporting two deployment modes:
&lt;ul>
&lt;li>Proxy Mode. The Dubbo process and Envoy are deployed in the same pod, with all traffic to and from Dubbo intercepted by the Envoy proxy, which performs traffic control.&lt;/li>
&lt;li>Proxyless Mode. The Dubbo process is deployed independently, with direct communication between processes, interacting directly with the control plane via the xDS protocol.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>For more information on service mesh architecture and why to integrate with the Istio control plane, please refer to the &lt;a href="https://istio.io/">Istio official website&lt;/a>. This document does not cover these general topics but focuses on the Dubbo Mesh solution itself.&lt;/p></description></item><item><title>The First National Government-Enterprise Procurement Cloud Platform: The Mixed Cloud Cross-Network Solution Practice of Zhengcai Cloud</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/03/22/the-first-national-government-enterprise-procurement-cloud-platform-the-mixed-cloud-cross-network-solution-practice-of-zhengcai-cloud/</link><pubDate>Wed, 22 Mar 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/03/22/the-first-national-government-enterprise-procurement-cloud-platform-the-mixed-cloud-cross-network-solution-practice-of-zhengcai-cloud/</guid><description>&lt;p>For companies with a cloud-island business structure, the cloud platform is an internal, fully controllable local area network, while the island end is an independent internal network with its own security network policy. When cloud-island communication is required, certain ports need to be opened based on demand and customer requirements, which incurs costs and is not completely controllable. If the demand for cross-network communication increases, it will gradually become a pain point. If a transparent cross-network transmission network can be established, along with good top-level design, a better balance can be sought in business support, security control, and operational costs.&lt;/p></description></item><item><title>Dubbo Java 3.1.4 Official Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/12/01/dubbo-java-3.1.4-official-release/</link><pubDate>Thu, 01 Dec 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/12/01/dubbo-java-3.1.4-official-release/</guid><description>&lt;p>Dubbo 3.1.4 is the latest stable version of Dubbo 3, and we recommend all users upgrade to the latest stable version.&lt;/p>
&lt;h1 id="dubbo-314">Dubbo 3.1.4&lt;/h1>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/release/3-1-4.png">&lt;/p>
&lt;h3 id="new-features">New Features&lt;/h3>
&lt;ul>
&lt;li>Dubbo QoS supports a specified whitelist IP list to access all commands&lt;/li>
&lt;/ul>
&lt;h3 id="bugfix">Bugfix&lt;/h3>
&lt;ul>
&lt;li>Fix incorrect collection of method names in Dubbo Metrics during generic calls&lt;/li>
&lt;li>Fix potential overlap issues in interface mapping when using Zookeeper as a metadata center&lt;/li>
&lt;li>Fix support for timeout countdown in Triple protocol&lt;/li>
&lt;li>Fix transparency issue with timeout countdown&lt;/li>
&lt;li>Fix NPE issues caused by no available addresses during multi-registry requests&lt;/li>
&lt;li>Fix null remoteApplicationName issue in Triple under Mesh mode&lt;/li>
&lt;li>Fix support for GraalVM Native Image&lt;/li>
&lt;li>Fix NPE exception caused by SSL connection when port reuse occurs&lt;/li>
&lt;li>Improve output format of JDK compiler error logs&lt;/li>
&lt;li>Fix application startup issues when MetadataReportConfig is partially configured&lt;/li>
&lt;li>Fix ineffectiveness of dubbo.reference as a default parameter in 3.x versions&lt;/li>
&lt;li>Improve logs for Zookeeper connection failures&lt;/li>
&lt;li>Fix potential overwriting of ClassLoader configured in ReferenceConfig&lt;/li>
&lt;li>Fix issues where certain properties were cached in instance-level addresses leading to method-level configuration failures&lt;/li>
&lt;li>Fix onError exception issue in Triple protocol&lt;/li>
&lt;/ul>
&lt;h3 id="faq">FAQ&lt;/h3>
&lt;p>This release includes 3 commits addressing the improvement of exception log FAQ. Refer to the official error code mechanism introduction document for more details. (&lt;a href="https://cn.dubbo.apache.org/zh-cn/overview/java-sdk/reference-manual/faq/intro/">https://cn.dubbo.apache.org/zh-cn/overview/java-sdk/reference-manual/faq/intro/&lt;/a>)&lt;/p></description></item><item><title>Focusing on Stability, Dubbo Java Release Plan Announced</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/10/22/focusing-on-stability-dubbo-java-release-plan-announced/</link><pubDate>Sat, 22 Oct 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/10/22/focusing-on-stability-dubbo-java-release-plan-announced/</guid><description>&lt;h2 id="introduction-to-dubbo">Introduction to Dubbo&lt;/h2>
&lt;p>Apache Dubbo is an RPC service development framework designed to address service governance and communication issues in microservice architectures. Official SDK implementations are available in multiple languages, including Java and Golang. Microservices developed with Dubbo possess built-in capabilities for remote address discovery and communication, leveraging Dubbo&amp;rsquo;s rich service governance features to achieve needs such as service discovery, load balancing, and traffic scheduling. Dubbo is designed for high extensibility, allowing users to easily implement various customized logic for traffic interception and service selection.&lt;/p></description></item><item><title>Dubbo Java 3.0.2 Release Announcement</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/07/18/dubbo-java-3.0.2-release-announcement/</link><pubDate>Sun, 18 Jul 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/07/18/dubbo-java-3.0.2-release-announcement/</guid><description>&lt;h2 id="new-features">New Features&lt;/h2>
&lt;ul>
&lt;li>Support for exposing generalized services via the @DubboService annotation&lt;/li>
&lt;li>XML configuration support for the metadata center with protocol and port attributes&lt;/li>
&lt;li>Compatibility with versions above curator5&lt;/li>
&lt;li>Point-to-point calls support wildcard matching, allowing one provider address to correspond to multiple interfaces&lt;/li>
&lt;li>Dynamic configuration added for application-level service discovery to override rules&lt;/li>
&lt;li>Provides a switch for dynamic configuration override rules for providers, allowing them to ignore dynamic configuration and not re-expose&lt;/li>
&lt;li>Supports native image&lt;/li>
&lt;li>Provides a switch to cancel the execution of the shutdown hook&lt;/li>
&lt;li>Supports service governance rules for Kubernetes Mesh&lt;/li>
&lt;li>Netty connection supports SSL configuration&lt;/li>
&lt;/ul>
&lt;h2 id="bug-fixes">Bug Fixes&lt;/h2>
&lt;ul>
&lt;li>DubboBootStrap start duplication causes dynamic configuration to be overridden&lt;/li>
&lt;li>Dynamic configuration rules remain effective after deletion&lt;/li>
&lt;li>NullPointerException thrown when exposing triple protocol&lt;/li>
&lt;li>ConfigCenterConfig.setAddress method overwrites the username attribute&lt;/li>
&lt;li>DefaultFuture.closeChannel destroys consumer-side thread pool&lt;/li>
&lt;li>TripleClientHandler.writeRequest throws NullPointerException&lt;/li>
&lt;li>NullPointerException thrown when parsing 3.0 migration rules exception&lt;/li>
&lt;li>Order issue with Activated Extensions&lt;/li>
&lt;li>URLAddress.parse method has issues parsing ipv6 addresses&lt;/li>
&lt;li>User-defined parameters in properties configuration are ineffective&lt;/li>
&lt;li>Configuration overlap issue when using API model and Spring model simultaneously&lt;/li>
&lt;li>Application-level service discovery ineffective at startup&lt;/li>
&lt;li>Nacos registry fails to dynamically detect changes in the number of providers&lt;/li>
&lt;li>${dubbo.application} cannot be resolved by the Spring placeholder rules in XML files&lt;/li>
&lt;li>Issue obtaining the order of instance parameters, first obtaining instance-level parameters, then interface-level parameters&lt;/li>
&lt;li>Exception thrown when registering application startup listener if DubboConfigBeanInitializer does not exist&lt;/li>
&lt;li>Mock parameters containing &amp;lsquo;:&amp;rsquo; or &amp;lsquo;=&amp;rsquo; characters are ineffective&lt;/li>
&lt;li>NullPointerException when deleting Mesh rules&lt;/li>
&lt;/ul>
&lt;h2 id="optimization">Optimization&lt;/h2>
&lt;ul>
&lt;li>Catch exceptions in RemovalTask to ensure semaphore can be released&lt;/li>
&lt;li>Check for duplicate ReferenceConfig/ServiceConfig using unique service names&lt;/li>
&lt;li>Optimize random number generation performance&lt;/li>
&lt;li>If users use interface-level service discovery, do not publish application-interface mapping data to the metadata center&lt;/li>
&lt;li>Use StringBuilder#append(Char) to improve performance&lt;/li>
&lt;li>Ensure the order of interfaces in GRPC compiled class files&lt;/li>
&lt;li>Optimize reference bean placeholder resolution&lt;/li>
&lt;li>Utilize CompletableFuture#get(long, TimeUnit) in MergeableClusterInvoker for performance improvement&lt;/li>
&lt;li>Built-in service MetadataService does not delay exposure&lt;/li>
&lt;li>Optimize the startup logic of ConfigBean and Bootstrap&lt;/li>
&lt;li>Optimize logic for checking duplicate Configs&lt;/li>
&lt;li>Use ring data structures for registration notifications&lt;/li>
&lt;li>Optimize initialization logic for dynamic configurations&lt;/li>
&lt;li>ConfigManager uses ConcurrentHashMap to remove locking logic, improving equals and toString performance&lt;/li>
&lt;li>Optimize MetadataInfo equals method and Instance Listener&lt;/li>
&lt;li>Optimize asynchronous export/refer logic&lt;/li>
&lt;li>Use TreeSet data structure to ensure the order of application names during application-level service discovery&lt;/li>
&lt;li>First ten notifications from RegistryNotifier are not delayed&lt;/li>
&lt;li>dubbo-compile compiles using a new format to generate stubs&lt;/li>
&lt;li>Mesh service governance rules unify grouping and other rule groupings in the dynamic configuration center, changing DEFAULT_GROUP to dubbo&lt;/li>
&lt;li>When using nacos as a registration center, parameters can be used in the registration center address to change the grouping in nacos&lt;/li>
&lt;li>When calculating ServiceInfo reversion, remove runtime parameters to avoid generating multiple revisions&lt;/li>
&lt;li>Nacos registry wraps exceptions as RpcException on throw&lt;/li>
&lt;li>Prevent dynamic configuration center from dynamically modifying some permission parameters&lt;/li>
&lt;li>Optimize initialization process of Config Bean and ensure compatibility with spring 3.x/4.1.x&lt;/li>
&lt;li>Bootstrap.start method is reentrant, exposing or referencing new services&lt;/li>
&lt;li>Add classes in the org.apache.dubbo package to the whitelist by default&lt;/li>
&lt;li>Ensure the uniqueness of generated Config Id and check for previous existence&lt;/li>
&lt;li>Javaassist compatible with changing override declaration fields&lt;/li>
&lt;li>Refactor check logic during decoding, throwing exceptions when providers corresponding to path and version are not found&lt;/li>
&lt;li>When ApplicationModel is null, compatible with adaptive extensions&lt;/li>
&lt;/ul>
&lt;h2 id="code-quality-improvements">Code Quality Improvements&lt;/h2>
&lt;p>Thanks for the contributions that enhance the stability of Apache Dubbo.&lt;/p></description></item><item><title>0-10 - Current call is not supported</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/10/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The method currently being called may have been deprecated or marked with &lt;code>@Deprecated&lt;/code>, which does not affect the execution result.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Please use other alternative API methods.&lt;/p></description></item><item><title>1-10 - Failed to read and write the service cache of the registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/10/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Multiple Dubbo processes are using the same cache file.&lt;/li>
&lt;li>In the case of multiple registries, multiple registries are specified to use the same file for storage.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This error often occurs together with error 1-9. Check if multiple Dubbo processes are using the same cache file or if multiple registries are specified to use the same cache file.&lt;/p>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties#dubbo.registry">Configuration Reference Manual for the Registry&lt;/a>&lt;/p></description></item><item><title>2-10 - Failure to call the service provider</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/10/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>Dubbo failed to call the service provider and started retrying.&lt;/li>
&lt;li>Dubbo continuously failed to retry calling the service provider.&lt;/li>
&lt;li>Dubbo reached the retry limit when calling the service provider.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the network connection latency and other network resources between the consumer and the provider.&lt;/li>
&lt;li>Use telnet or other tools to check if the corresponding port of the provider can respond normally.&lt;/li>
&lt;li>Check if the provider program is running normally.&lt;/li>
&lt;/ol></description></item><item><title>4-10 - Triple serialization result failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/10/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Generally an internal error.
Seen in three types of log formats:&lt;/p>
&lt;ol>
&lt;li>An exception occurs during serialization and sending data, log format: &lt;code>Serialize triple request failed, service=%s method=%s&lt;/code>&lt;/li>
&lt;li>Triggered when receiving the response&amp;rsquo;s reset code, log format: &lt;code>Triple Client received remote reset errorCode=xxx&lt;/code>&lt;/li>
&lt;li>Triggered when an exception occurs while processing the response, log format: &lt;code>Meet Exception on ClientResponseHandler, status code is:xxx&lt;/code>&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>For the first type of error, it occurs during the call to {service}#{method}, specifically correlating to sendMessage, and this log appears simultaneously with &lt;code>java.util.concurrent.ExecutionException: org.apache.dubbo.rpc.StatusRpcException: INTERNAL : Serialize request failed&lt;/code>. Check if the custom classes in the parameters of the {method} are implementing the serialization interface, which may lead to serialization failure.&lt;/p></description></item><item><title>5-10 - Service registration interface application mapping failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/10/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The service metadata exposed by the service does not match or has been tampered with the application.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the metadata content in the configuration center matches that within the application.&lt;/p></description></item><item><title>6-10 - Payload Limit Exceeded Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/10/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;blockquote>
&lt;p>Default &lt;code>payload=8M&lt;/code>, please check the configurations.&lt;/p>
&lt;/blockquote>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>For specific configuration items supported by each component and their meanings, please refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Manual&lt;/a>.&lt;/p></description></item><item><title>Default Monitoring Metrics Command</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/default_metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/qos/introduction/default_metrics/</guid><description>&lt;h3 id="query-all-monitoring-metrics">Query All Monitoring Metrics&lt;/h3>
&lt;p>Command: &lt;code>metrics_default&lt;/code>&lt;/p>
&lt;p>Example:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&amp;gt; telnet 127.0.0.1 &lt;span style="color:#2aa198">22222&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt; metrics_default
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Output:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Trying 127.0.0.1...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Connected to localhost.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Escape character is &amp;#39;^]&amp;#39;.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ___ __ __ ___ ___ ____ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> / _ \ / / / // _ ) / _ ) / __ \ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> / // // /_/ // _ |/ _ |/ /_/ / 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/____/ \____//____//____/ \____/ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo&amp;gt;metrics_default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.registry.directory.num.disable.total{application.module.id=1.1,application.name=dubbo-springboot-demo-provider,application.version=,git.commit.id=,hostname=hujundeMacBook-Pro.local,interface=dubbo-springboot-demo-provider/org.apache.dubbo.metrics.service.MetricsService:1.0.0,ip=10.224.214.80,} 0.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo.register.rt.milliseconds.max{application.module.id=1.1,application.name=dubbo-springboot-demo-provider,application.version=,git.commit.id=,hostname=hujundeMacBook-Pro.local,ip=10.224.214.80,} 153.0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="query-monitoring-metrics-by-keyword">Query Monitoring Metrics by Keyword&lt;/h3>
&lt;p>Command: &lt;code>metrics_default {applicationName} {keyword}&lt;/code>&lt;/p></description></item><item><title>Dubbo Body</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-body/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-body/</guid><description>&lt;h1 id="get-the-parameter-from-the-body">Get the parameter from the body&lt;/h1>
&lt;blockquote>
&lt;p>POST request &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/simple/body">samples&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="passthroughs">Passthroughs&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody._all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserProvider&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;CreateUser&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: PUT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody._all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserProvider&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UpdateUser&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user2&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: PUT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody.user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UpdateUserByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>when passthroughs, mapTo: 0 needed&lt;/p></description></item><item><title>Dubbo Body(Http)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-bodyhttp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-bodyhttp/</guid><description>&lt;h1 id="get-the-parameter-from-the-body">Get the parameter from the body&lt;/h1>
&lt;blockquote>
&lt;p>POST request&lt;/p>
&lt;/blockquote>
&lt;h2 id="passthroughs">Passthroughs&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">queryStrings&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>:&lt;span style="color:#2aa198">8889&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: /UserProvider/CreateUser
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="request">Request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl host:port/api/v1/test-dubbo/user -X POST -d &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;name&amp;#34;: &amp;#34;tiecheng&amp;#34;,&amp;#34;id&amp;#34;: &amp;#34;0002&amp;#34;,&amp;#34;code&amp;#34;: 3,&amp;#34;age&amp;#34;: 18}&amp;#39;&lt;/span> --header &lt;span style="color:#2aa198">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="response">Response&lt;/h3>
&lt;ul>
&lt;li>If first add, return like:&lt;/li>
&lt;/ul>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0002&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;code&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">3&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tiecheng&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;age&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">18&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0001-01-01T00:00:00Z&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>If you add user multi, return like:&lt;/li>
&lt;/ul>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;message&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;data is exist&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Dubbo Cluster Center Adapter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/adapter/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/adapter/dubbo/</guid><description/></item><item><title>Dubbo Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-error/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-error/</guid><description>&lt;h1 id="how-to-check-dubbo-error">How to check dubbo error&lt;/h1>
&lt;h2 id="pixiu-bug-condition">Pixiu bug condition&lt;/h2>
&lt;p>Server log.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>2020-11-19T20:30:26.070+0800 ERROR filter_impl/generic_service_filter.go:98 &lt;span style="color:#719e07">[&lt;/span>Generic Service Filter&lt;span style="color:#719e07">]&lt;/span> method:GetUserTimeout invocation arguments number was wrong
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>github.com/apache/dubbo-go/common/logger.Errorf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If this case happens, pixiu will return nil because dubbo server return nil. You can see dubbo log follow when log format is debug.&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>2020-11-19T20:30:26.072+0800 DEBUG pixiu/pixiu.go:172 &lt;span style="color:#719e07">[&lt;/span>makeDubboCallPixiu&lt;span style="color:#719e07">]&lt;/span> result: 0xc0001aeeb0, err: &amp;lt;nil&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2020-11-19T20:30:26.072+0800 DEBUG dubbo/dubbo.go:152 &lt;span style="color:#719e07">[&lt;/span>dubbo-go-pixiu&lt;span style="color:#719e07">]&lt;/span> dubbo client resp:&amp;lt;nil&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2020-11-19T20:30:26.073+0800 DEBUG remote/call.go:117 &lt;span style="color:#719e07">[&lt;/span>dubbo-go-pixiu&lt;span style="color:#719e07">]&lt;/span> client call resp:&amp;lt;nil&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When generic invoke, err will return nil, because wrote the code as below.&lt;/p></description></item><item><title>Dubbo Incomplete</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-incomplete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-incomplete/</guid><description>&lt;h1 id="dubbo-incomplete">Dubbo incomplete&lt;/h1>
&lt;h2 id="args-will-nil">Args will nil&lt;/h2>
&lt;blockquote>
&lt;p>fix in dubbogo 1.5.4&lt;/p>
&lt;/blockquote>
&lt;p>When the response is &lt;code>User&lt;/code>, see below code:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> User &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	ID &lt;span style="color:#dc322f">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	Name &lt;span style="color:#dc322f">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	Age &lt;span style="color:#dc322f">int32&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	Time time.Time
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Although User struct has Time value, generic invoke will return nil. &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-query/#simple-demosimple">the simple response&lt;/a> time field is disappear.&lt;/p>
&lt;p>So I suggest you can use string to time type for a short time.&lt;/p></description></item><item><title>Dubbo Mix</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-mix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-mix/</guid><description>&lt;h1 id="get-the-parameter-from-the-part-of-uriquerybody">Get the parameter from the part of uri,query,body&lt;/h1>
&lt;blockquote>
&lt;p>GET request &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/simple/mix">samples&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user/:name&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.age
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;int&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByNameAndAge&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: PUT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody._all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UpdateUserByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: PUT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody._all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UpdateUserByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="test">Test&lt;/h3>
&lt;ul>
&lt;li>from uri and query&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl localhost:port/api/v1/test-dubbo/user/tc?age&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">99&lt;/span> -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>result&lt;/p></description></item><item><title>Dubbo Multi</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-multi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-multi/</guid><description>&lt;h1 id="get-the-parameter-from-the-part-of-uri">Get the parameter from the part of uri&lt;/h1>
&lt;blockquote>
&lt;p>GET request &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/multi">sample&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/student/:name&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: student
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;StudentService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.StudentService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetStudentByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: PUT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody._all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;StudentService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.StudentService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UpdateStudentByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/teacher/:name&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: teacher
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;TeacherService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.TeacherService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetTeacherByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: PUT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody._all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;object&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;TeacherService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.TeacherService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UpdateTeacherByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="server-config">server config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># dubbo server yaml configure file&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># application config&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">application&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">organization&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dubbogoproxy.com&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;BDTService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">module&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dubbogo user-info server&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">owner&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;ZX&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">environment&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dev&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">registries&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;demoZk1&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;3s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;demoZk2&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;3s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2182&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">services&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;StudentProvider&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registry&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;demoZk1, demoZk2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># Equivalent to the interface in the dubbo.xml file&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.StudentService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">loadbalance&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;random&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">warmup&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;100&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;failover&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetStudentByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">retries&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">loadbalance&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;random&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;TeacherProvider&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registry&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;demoZk1, demoZk2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># Equivalent to the interface in the dubbo.xml file&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.TeacherService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">loadbalance&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;random&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">warmup&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;100&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;failover&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetTeacherByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">retries&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">loadbalance&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;random&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">protocols&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">20000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">protocol_conf&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">dubbo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">session_number&lt;/span>: &lt;span style="color:#2aa198">700&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">session_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;20s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">getty_session_param&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">compress_encoding&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">tcp_no_delay&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">tcp_keep_alive&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">keep_alive_period&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;120s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">tcp_r_buf_size&lt;/span>: &lt;span style="color:#2aa198">262144&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">tcp_w_buf_size&lt;/span>: &lt;span style="color:#2aa198">65536&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">pkg_rq_size&lt;/span>: &lt;span style="color:#2aa198">1024&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">pkg_wq_size&lt;/span>: &lt;span style="color:#2aa198">512&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">tcp_read_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;1s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">tcp_write_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;5s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">wait_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;1s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">max_msg_len&lt;/span>: &lt;span style="color:#2aa198">1024&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">session_name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;server&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="test">Test&lt;/h3>
&lt;ul>
&lt;li>from uri&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl localhost:8888/api/v1/test-dubbo/student/tc-student -X GET 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl localhost:8888/api/v1/test-dubbo/teacher/tc-teacher -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>result&lt;/p></description></item><item><title>Dubbo Query</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-query/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-query/</guid><description>&lt;h1 id="get-the-parameter-from-the-query">Get the parameter from the query&lt;/h1>
&lt;blockquote>
&lt;p>GET request &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/simple/query">samples&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demosimple">Simple Demo{simple}&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/userByName&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/userByNameAndAge&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.age
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;int&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByNameAndAge&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/userByCode&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.code
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;int&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByCode&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="test">Test&lt;/h3>
&lt;ul>
&lt;li>single param string&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl localhost:port/api/v1/test-dubbo/userByName?name&lt;span style="color:#719e07">=&lt;/span>tc -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If exist, will return:&lt;/p></description></item><item><title>Dubbo Query(Http)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-queryhttp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-queryhttp/</guid><description>&lt;h1 id="get-the-parameter-from-the-query">Get the parameter from the query&lt;/h1>
&lt;blockquote>
&lt;p>GET request&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">queryStrings&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>:&lt;span style="color:#2aa198">8889&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: /UserProvider/GetUserByName
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: queryStrings.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="request">Request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl http://localhost:8888/api/v1/test-dubbo/user?name&lt;span style="color:#719e07">=&lt;/span>tc -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="response">Response&lt;/h3>
&lt;ul>
&lt;li>Successful result will return:&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0001&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;code&amp;#34;&lt;/span>: 1,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tc&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;age&amp;#34;&lt;/span>: 18,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;2020-12-24T16:46:31.8409857+08:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Dubbo Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-registry/</guid><description>&lt;h1 id="generate-api-config-automatically-from-dubbogo-registry">Generate API config automatically from dubbogo registry&lt;/h1>
&lt;blockquote>
&lt;p>Doc metions below fit the code in the &lt;code>samples/dubbogo/simple/registry&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;h2 id="define-pixiu-config">Define Pixiu Config&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;net/http&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8881&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster_not_found_response_code&lt;/span>: &lt;span style="color:#2aa198">505&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.apiconfig
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">dynamic&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">dynamic_adapter&lt;/span>: test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># configure the dubbogo registry&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.dubboproxy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">dubboProxyConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registries&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;3s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">username&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">password&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">connect_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">request_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.response
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">server_name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_http_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">generate_request_id&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">idle_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">read_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">write_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">lb_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;RoundRobin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registries&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;3s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">username&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">password&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">shutdown_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;60s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">step_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">reject_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;immediacy&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">adapters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">id&lt;/span>: test
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">name&lt;/span>: dgp.adapter.dubboregistrycenter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registries&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: zookeeper
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;5s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>We should configure the &lt;code>dgp.filter.http.dubboproxy&lt;/code> filter in the configuration file.&lt;/p></description></item><item><title>Dubbo Related</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo/</guid><description>&lt;h1 id="dubbo-catalog">Dubbo Catalog&lt;/h1>
&lt;h3 id="http-to-dubbo-protocol-base-dubbo-request">http to dubbo-protocol-base dubbo request&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-query/">dubbo-query&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-body/">dubbo-body&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-uri/">dubbo-uri&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-mix/">dubbo-mix&amp;hellip;params from uri,query,body&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-universality/">dubbo-universality&amp;hellip;dubbo proxy model&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-error/">dubbo-error&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-incomplete/">dubbo-incomplete&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-registry/">dubbo-registry&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="http-to-http-protocl-base-dubbo-request">http to http-protocl-base dubbo request&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-body/">http-body&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-query/">http-query&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-uri/">http-uri&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Based on &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/simple">samples&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>How do I run a simple test example &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-simple-run/">document&lt;/a>&lt;/p></description></item><item><title>Dubbo Simple Run</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-simple-run/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-simple-run/</guid><description>&lt;h1 id="how-run-dubbo-simple-test-samples">How run dubbo simple test samples&lt;/h1>
&lt;h2 id="start-pixiu">Start Pixiu&lt;/h2>
&lt;ul>
&lt;li>cd sample dir&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> /dubbo-go-pixiu/samples/dubbogo/simple
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>use start.sh to start pixiu and server quickly&lt;/li>
&lt;/ul>
&lt;p>start.sh help for help info&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>./start.sh help 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubbo-go-pixiu start helper
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh action project
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hint:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh prepare body for prepare config file and up docker in body project
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh startPixiu body for start dubbo or http server in body project
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh startServer body for start pixiu in body project
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh startTest body for start unit test in body project
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh clean body for clean
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use &lt;code>./start.sh [action] [project]&lt;/code> to start sample，for exmaple：&lt;/p></description></item><item><title>Dubbo Universality</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-universality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-universality/</guid><description>&lt;h1 id="use-dubbo-request-universality">Use dubbo request universality&lt;/h1>
&lt;blockquote>
&lt;p>POST request &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/simple/proxy">samples&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="suggest">Suggest&lt;/h2>
&lt;blockquote>
&lt;p>In this way, you can request your dubbo rpc service by defined one api for every cluster.&lt;/p>
&lt;/blockquote>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/:application/:interface&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: common
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody.values
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.values
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody.types
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.types
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.application
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.application
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.interface
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.interface
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.method
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.method
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.group
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.group
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.version
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: opt.version
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75"># Notice: this is the really paramTypes to dubbo service, it takes precedence over paramTypes when it is finally called.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="test">Test&lt;/h3>
&lt;ul>
&lt;li>single param string&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl host:port/api/v1/test-dubbo/UserService/com.dubbogo.proxy.UserService?group&lt;span style="color:#719e07">=&lt;/span>test&amp;amp;&lt;span style="color:#268bd2">version&lt;/span>&lt;span style="color:#719e07">=&lt;/span>1.0.0&amp;amp;&lt;span style="color:#268bd2">method&lt;/span>&lt;span style="color:#719e07">=&lt;/span>GetUserByName -X POST -d &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;types&amp;#34;:[&amp;#34;string&amp;#34;],&amp;#34;values&amp;#34;:&amp;#34;tc&amp;#34;}&amp;#39;&lt;/span> --header &lt;span style="color:#2aa198">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>result&lt;/p></description></item><item><title>Dubbo Uri</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-uri/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/dubbo-uri/</guid><description>&lt;h1 id="get-the-parameter-from-the-uri">Get the parameter from the uri&lt;/h1>
&lt;blockquote>
&lt;p>GET request &lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbogo/simple/uri">samples&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user/name/:name&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">uri&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserProvider&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByName&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user/code/:code&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">uri&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: code
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.code
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;int&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserProvider&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByCode&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/user/name/:name/age/:age&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">uri&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: age
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.age
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapType&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;int&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;UserProvider&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.dubbogo.pixiu.UserService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUserByNameAndAge&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">group&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">version&lt;/span>: &lt;span style="color:#2aa198">1.0.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="test">Test&lt;/h3>
&lt;ul>
&lt;li>single param string&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl localhost:port/api/v1/test-dubbo/user/name/tc -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If exist, will return:&lt;/p></description></item><item><title>Pixiu FAQ</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/common/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/common/faq/</guid><description>&lt;h1 id="faq">FAQ&lt;/h1>
&lt;p>If you can not get any help from this doc or &lt;a href="https://github.com/apache/dubbo-go-pixiu/issues?q=is%3Aissue+is%3Aclosed">closed issues&lt;/a>, please &lt;a href="https://github.com/apache/dubbo-go-pixiu/issues/new/choose">submit a new issue&lt;/a>.&lt;/p></description></item><item><title>Hessian Protocol</title><link>https://deploy-preview-3202--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-3202--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>HTTP Body</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-body/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-body/</guid><description>&lt;h1 id="get-the-parameter-from-the-body">Get the parameter from the body&lt;/h1>
&lt;blockquote>
&lt;p>POST request&lt;/p>
&lt;/blockquote>
&lt;h2 id="passthroughs">Passthroughs&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-http/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="request">Request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl host:port/api/v1/test-http/user -X POST -d &lt;span style="color:#2aa198">&amp;#39;{&amp;#34;name&amp;#34;: &amp;#34;tiecheng1&amp;#34;,&amp;#34;code&amp;#34;: 4,&amp;#34;age&amp;#34;: 18}&amp;#39;&lt;/span> --header &lt;span style="color:#2aa198">&amp;#34;Content-Type: application/json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="response">Response&lt;/h3>
&lt;ul>
&lt;li>If first add, return like:&lt;/li>
&lt;/ul>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;XVlBz&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tiecheng1&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;age&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">18&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0001-01-01T00:00:00Z&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>If you add user multi, return like:&lt;/li>
&lt;/ul>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;message&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;data is exist&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Http Query</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-query/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-query/</guid><description>&lt;h1 id="get-the-parameter-from-the-query">Get the parameter from the query&lt;/h1>
&lt;blockquote>
&lt;p>GET request&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-http/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">queryStrings&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="request">Request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl http://localhost:8888/api/v1/test-http/user?name&lt;span style="color:#719e07">=&lt;/span>tc -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="response">Response&lt;/h3>
&lt;ul>
&lt;li>Successful result will return:&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0001&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tc&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;age&amp;#34;&lt;/span>: 18,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;2020-12-30T14:07:07.9432117+08:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>HTTP to Dubbo Default Conversion Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/appendix/http-to-dubbo-default-stragety/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/appendix/http-to-dubbo-default-stragety/</guid><description>&lt;h1 id="background">Background&lt;/h1>
&lt;p>​ By providing a unified service provider view through Http, users need not worry about backend Dubbo service version differences or protocol differences. They just need to pass RPC call parameters in an HTTP request to complete an RPC call, simplifying backend service design complexity by implementing HTTP calls to backend Dubbo services.&lt;/p>
&lt;h1 id="purpose">Purpose&lt;/h1>
&lt;p>​ To unify the format of HTTP calls to backend Dubbo services, facilitating gateway products to achieve HTTP-to-Dubbo call conversion and enhancing the integration of Dubbo with the gateway.&lt;/p></description></item><item><title>Http Uri</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-uri/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/dubbo/http-uri/</guid><description>&lt;h1 id="get-the-parameter-from-the-uri">Get the parameter from the URI&lt;/h1>
&lt;blockquote>
&lt;p>GET request &lt;br>
downstream service url is 127.0.0.1:1314/user?name=tc
downstream service url is 127.0.0.1:1314/user/:name&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>POST request &lt;br>
downstream service url is 127.0.0.1:1314/user
request body as below: &lt;br>
type User struct { &lt;br>
Name string &lt;code>json:&amp;quot;name&amp;quot;&lt;/code> &lt;br>
Age int32 &lt;code>json:&amp;quot;age&amp;quot;&lt;/code>&lt;br>
Time time.Time &lt;code>json:&amp;quot;time&amp;quot;&lt;/code>&lt;br>
}&lt;/p>
&lt;/blockquote>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-http/user&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">queryStrings&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/:name&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">queryStrings&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user/:name&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: POST
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 10s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">host&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:1314&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user/&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: uri.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: requestBody.name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: requestBody.age
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: requestBody.age
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.time
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: requestBody.time
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="sample-requests">Sample Requests&lt;/h2>
&lt;h3 id="passthrough-get-request">Passthrough Get request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl --request GET &lt;span style="color:#2aa198">&amp;#39;localhost:8888/api/v1/test-http/user?name=joe2&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="response">Response&lt;/h4>
&lt;ul>
&lt;li>If exist, will return:&lt;/li>
&lt;/ul>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;XVlBz&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;joe2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;age&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">20&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;2021-01-01T00:00:00Z&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Not found, return: nil&lt;/li>
&lt;/ul>
&lt;h3 id="mix-post-request">Mix Post request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl --request POST &lt;span style="color:#2aa198">&amp;#39;localhost:8888/api/v1/test-http/user/tc2?time=2021-01-01T00:00:00Z&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>--header &lt;span style="color:#2aa198">&amp;#39;Content-Type: application/json&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>--data-raw &lt;span style="color:#2aa198">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;age&amp;#34;: 19
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198">}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="response-1">Response&lt;/h4>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;XVlBz&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tc2&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;age&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">19&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;2021-01-01T00:00:00Z&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="mix-get-request">Mix GET request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl --request GET &lt;span style="color:#2aa198">&amp;#39;localhost:8888/api/v1/test-http/user/tc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="response-2">Response&lt;/h4>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;id&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0001&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;name&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tc&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;age&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">18&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;time&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;2020-12-28T13:38:25.687309+08:00&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Introduction to Dubbo HttpFilter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/dubbo/</guid><description>&lt;h1 id="using-http-to-call-dubbo">Using HTTP to Call Dubbo&lt;/h1>
&lt;h2 id="define-pixiu-configuration-file">Define Pixiu Configuration File&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;http-listener&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8888&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;*&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.dubboproxy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">dubboProxyConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">auto_resolve&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">registries&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;3s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">username&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">password&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">connect_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">request_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;dubbo-server&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">lb_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;lb&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">endpoints&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">id&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">20000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">shutdown_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;60s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">step_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">reject_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;immediacy&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="prepare-dubbo-service">Prepare Dubbo Service&lt;/h2>
&lt;h3 id="start-zookeeper-ensure-docker-and-compose-are-prepared-in-advance-if-available-locally-this-can-be-ignored">Start zookeeper, ensure docker and compose are prepared in advance. If available locally, this can be ignored.&lt;/h3>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/tree/main/dubbohttpproxy/server/dubbo/app">docker-compose.yml&lt;/a>&lt;/p></description></item><item><title>Introduction to Http Listener</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/http/</guid><description>&lt;p>Http Listener is a listener specifically designed to receive HTTP requests. It can set the address and port for HTTP listening. It can be introduced through the following configuration.&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>static_resources:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> listeners:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - name: &amp;#34;net/http&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> protocol_type: &amp;#34;HTTP&amp;#34; # Indicates the HTTP Listener is being introduced
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> address:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> socket_address:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> address: &amp;#34;0.0.0.0&amp;#34; # Address
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> port: 8883 # Port
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The specific implementation of the Http Listener can be referred to in &lt;code>pkg/listener/http&lt;/code>.&lt;/p></description></item><item><title>Introduction to Http NetWorkFilter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/http/</guid><description>&lt;p>Http NetWorkFilter is used to handle HTTP requests. It can receive HTTP requests passed from the HTTP Listener, then process them through the HTTP Filter chain it maintains, and finally return the response to the caller.&lt;/p></description></item><item><title>Introduction to Http Proxy Case</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http_proxy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http_proxy/</guid><description>&lt;h3 id="http-proxy">HTTP Proxy&lt;/h3>
&lt;p>The HTTP Proxy case demonstrates Pixiu&amp;rsquo;s ability to receive external HTTP requests and forward them to the underlying HTTP Server.&lt;/p>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/pixiu/user/samples/http_proxy.png">&lt;/p>
&lt;p>For the case code, please refer to &lt;code>/samples/http/simple&lt;/code>. The directory structure and purpose in the case are as follows:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>- pixiu # Pixiu configuration file
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- server # http server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- test # client or unit test
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Let&amp;rsquo;s take a closer look at the specific configuration file for pixiu.&lt;/p></description></item><item><title>Java</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/java/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/java/</guid><description/></item><item><title>Microservices Ecosystem</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/ecosystem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/ecosystem/</guid><description>&lt;p>The Dubbo community, along with many excellent open-source projects, has established a rich microservices ecosystem around Dubbo. This ensures that developers do not need to worry about subsequent service governance demands from the first day they choose Dubbo as their development framework. Dubbo provides production-grade solutions for every common issue.&lt;/p>
&lt;p>The following table shows the support status of ecosystem components based on the latest Dubbo Java 3.2.x version. It will be continuously updated according to development progress. The completeness of components supported by each language may vary, so please refer to the detailed descriptions in each &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/">language reference manual&lt;/a>.&lt;/p></description></item><item><title>Monitoring Center Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/monitor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/monitor/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Responsible for monitoring service call counts and call times.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.monitor.MonitorFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.monitor.Monitor&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Define the monitoring center --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:monitor&lt;/span> address=&lt;span style="color:#2aa198">&amp;#34;xxx://ip:port&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;p>org.apache.dubbo.monitor.support.dubbo.DubboMonitorFactory&lt;/p>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxMonitorFactory.java (implements the MonitorFactory interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxMonitor.java (implements the Monitor interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.monitor.MonitorFactory (text file, content: xxx=com.xxx.XxxMonitorFactory)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxMonitorFactory.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.monitor.MonitorFactory;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.monitor.Monitor;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.common.URL;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxMonitorFactory&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> MonitorFactory {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Monitor &lt;span style="color:#268bd2">getMonitor&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#719e07">new&lt;/span> XxxMonitor(url);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxMonitor.java：&lt;/p></description></item><item><title>Performance</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/quality/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/quality/performance/</guid><description>&lt;p>Welcome to contribute to this document.&lt;/p></description></item><item><title>Quick Start</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/quickstart/</guid><description>&lt;p>Let&amp;rsquo;s quickly demonstrate Pixiu&amp;rsquo;s capabilities by converting an HTTP request to a Dubbo2 request.&lt;/p>
&lt;h2 id="use-case">Use Case&lt;/h2>
&lt;p>Pixiu converts the Client&amp;rsquo;s HTTP request into a Dubbo2 request, which is then forwarded to the Dubbo Server. It then converts the Dubbo Server&amp;rsquo;s response back into an HTTP response, finally returning it to the Client.&lt;/p>
&lt;h3 id="architecture-diagram">Architecture Diagram&lt;/h3>
&lt;p>&lt;img alt="Architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/pixiu/user/quick_start_architecture.png">&lt;/p>
&lt;h3 id="example">Example&lt;/h3>
&lt;p>The example path can be found at &lt;code>/samples/http/simple/http-http&lt;/code>.&lt;/p>
&lt;h4 id="dubbo-server-implementation-and-startup">Dubbo Server Implementation and Startup&lt;/h4>
&lt;p>The Dubbo Server provides interfaces for adding, deleting, modifying, and querying users. The specific code implementations can be found in the &lt;code>server&lt;/code> directory under the example path.&lt;/p></description></item><item><title>Service Explanation (Local Mock)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/local-mock/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/local-mock/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>In Dubbo3, there is a mechanism for lightweight service downgrading, that is, local mocking.&lt;/p>
&lt;p>Mock is a subset of Stub, facilitating service providers to implement fault tolerance logic on the client side. It is often necessary to handle exceptions during &lt;code>RpcException&lt;/code> (e.g., network failures, timeouts), while fault tolerance is not needed for business exceptions (e.g., login username/password errors). Using Stub may require capturing and depending on &lt;code>RpcException&lt;/code>, whereas Mock does not, since its agreement is to only execute when &lt;code>RpcException&lt;/code> occurs.&lt;/p></description></item><item><title>Stability</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/quality/stability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/quality/stability/</guid><description>&lt;p>Welcome to claim and supplement this document.&lt;/p></description></item><item><title>Start the dubbo-go-pixiu</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/start/</guid><description>&lt;h1 id="start">Start&lt;/h1>
&lt;p>How to start the dubbo-go-pixiu&lt;/p>
&lt;h4 id="1-cd-samples-dir">1 cd samples dir&lt;/h4>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>cd samples/dubbo/simple
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>we can use start.sh to run samples quickly. for more info, execute command as below for more help&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>./start.sh [action] [project]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./start.sh help
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>we run body samples below step&lt;/p>
&lt;h4 id="2-prepare-config-file-and-docker">2 prepare config file and docker&lt;/h4>
&lt;p>prepare command will prepare dubbo-server and pixiu config file and start docker container needed&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>./start.sh prepare body
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>if prepare config file manually, notice:&lt;/p></description></item><item><title>TLS Support</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/tls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/tls/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>The built-in Dubbo Netty Server and the newly introduced gRPC protocol provide TLS-based secure link transmission mechanisms.&lt;/p>
&lt;p>TLS configuration has a unified entry point.&lt;/p>
&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>Users with encryption requirements for end-to-end links can use TLS.&lt;/p>
&lt;blockquote>
&lt;p>Reference Use Case
&lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-ssl">dubbo-samples-ssl&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="provider-side">Provider Side&lt;/h3>
&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>SslConfig sslConfig &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> SslConfig();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sslConfig.setServerKeyCertChainPath(&lt;span style="color:#2aa198">&amp;#34;path to cert&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sslConfig.setServerPrivateKeyPath(args&lt;span style="color:#719e07">[&lt;/span>1&lt;span style="color:#719e07">]&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">// If mutual cert authentication is enabled&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">if&lt;/span> (mutualTls) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sslConfig.setServerTrustCertCollectionPath(args&lt;span style="color:#719e07">[&lt;/span>2&lt;span style="color:#719e07">]&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ProtocolConfig protocolConfig &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> ProtocolConfig(&lt;span style="color:#2aa198">&amp;#34;dubbo/grpc&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>protocolConfig.setSslEnabled(&lt;span style="color:#cb4b16">true&lt;/span>);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If using the gRPC protocol, protocol negotiation will be used when enabling TLS, so a Provider supporting the ALPN mechanism must be used, with netty-tcnative recommended. See the gRPC Java community&amp;rsquo;s &lt;a href="https://github.com/grpc/grpc-java/blob/master/SECURITY.md">summary&lt;/a>.&lt;/p></description></item><item><title>Using Nacos as a Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/nacos/</guid><description>&lt;h2 id="1-preparation">1. Preparation&lt;/h2>
&lt;ul>
&lt;li>The dubbo-go CLI tool and dependencies are installed&lt;/li>
&lt;li>Create a new demo application&lt;/li>
&lt;/ul>
&lt;h2 id="2-using-grpc_cli-tool-for-dubbo-service-debugging">2. Using grpc_cli Tool for Dubbo Service Debugging&lt;/h2>
&lt;h3 id="21-start-the-server">2.1 Start the Server&lt;/h3>
&lt;p>Example: user.go:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (u &lt;span style="color:#719e07">*&lt;/span>UserProvider) &lt;span style="color:#268bd2">GetUser&lt;/span>(ctx context.Context, userStruct &lt;span style="color:#719e07">*&lt;/span>CallUserStruct) (&lt;span style="color:#719e07">*&lt;/span>User, &lt;span style="color:#dc322f">error&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	fmt.&lt;span style="color:#268bd2">Printf&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;=======================\nreq:%#v\n&amp;#34;&lt;/span>, userStruct)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	rsp &lt;span style="color:#719e07">:=&lt;/span> User{&lt;span style="color:#2aa198">&amp;#34;A002&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">&amp;#34;Alex Stocks&amp;#34;&lt;/span>, &lt;span style="color:#2aa198">18&lt;/span>, userStruct.SubInfo}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	fmt.&lt;span style="color:#268bd2">Printf&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;=======================\nrsp:%#v\n&amp;#34;&lt;/span>, rsp)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#719e07">&amp;amp;&lt;/span>rsp, &lt;span style="color:#cb4b16">nil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The server exposes a service named GetUser, taking a CallUserStruct parameter and returning a User parameter.&lt;br>
Definition of CallUserStruct parameter:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> CallUserStruct &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	ID &lt;span style="color:#dc322f">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	Male &lt;span style="color:#dc322f">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	SubInfo SubInfo &lt;span style="color:#586e75">// Nested substructure
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (cs CallUserStruct) &lt;span style="color:#268bd2">JavaClassName&lt;/span>() &lt;span style="color:#dc322f">string&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#2aa198">&amp;#34;com.ikurento.user.CallUserStruct&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">type&lt;/span> SubInfo &lt;span style="color:#268bd2">struct&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	SubID &lt;span style="color:#dc322f">string&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	SubMale &lt;span style="color:#dc322f">bool&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	SubAge &lt;span style="color:#dc322f">int&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">func&lt;/span> (s SubInfo) &lt;span style="color:#268bd2">JavaClassName&lt;/span>() &lt;span style="color:#dc322f">string&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#2aa198">&amp;#34;com.ikurento.user.SubInfo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Definition of User structure:&lt;/p></description></item><item><title>Using Nacos as the Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/service-discovery/nacos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/service-discovery/nacos/</guid><description>&lt;p>This example shows dubbo-go&amp;rsquo;s service discovery feature with Nacos as the registry.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Specify the registry address in the following way:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>ins, _ &lt;span style="color:#719e07">:=&lt;/span> dubbo.&lt;span style="color:#268bd2">NewInstance&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithName&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;dubbo_registry_nacos_server&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithRegistry&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithNacos&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithAddress&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;127.0.0.1:8848&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithProtocol&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		protocol.&lt;span style="color:#268bd2">WithTriple&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		protocol.&lt;span style="color:#268bd2">WithPort&lt;/span>(&lt;span style="color:#2aa198">20000&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>srv, err &lt;span style="color:#719e07">:=&lt;/span> ins.&lt;span style="color:#268bd2">NewServer&lt;/span>()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="how-to-run">How to run&lt;/h2>
&lt;h3 id="start-nacos-server">Start Nacos server&lt;/h3>
&lt;p>Follow this instruction to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/integrations/nacos/">install and start Nacos server&lt;/a>.&lt;/p>
&lt;h3 id="run-server">Run server&lt;/h3>
&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>$ go run ./go-server/cmd/server.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Test if the RPC server works as expected:&lt;/p></description></item><item><title>0-11 - Service Stopping Failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/11/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Connections are not closed in a timely manner, or insufficient memory may cause some exceptions when the service stops.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Close the connection after the response content is completed.&lt;/p></description></item><item><title>1-11 - Service instance registration failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/11/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>It might be due to an error in the SPI/IOC configuration of the Registry.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This error is an internal error of Dubbo. If you encounter it, you can create an Issue on GitHub and provide the error information and reproduction steps, and we will assist you in resolving the issue.&lt;/p>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://github.com/apache/dubbo">Dubbo Community&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-11 - Invalid Tag Routing Rule</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/11/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The tag routing rules configured by the user are invalid.&lt;/li>
&lt;li>The tag routing addresses configured by the user are invalid.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Refer to the community tag routing configuration specifications to check the tag routing configuration.&lt;/p>
&lt;/blockquote></description></item><item><title>4-11 - Request initiation failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/11/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>The service provider has been shut down.&lt;/li>
&lt;li>The caller&amp;rsquo;s IP is not in the service provider&amp;rsquo;s whitelist.&lt;/li>
&lt;li>The specific service address requested does not exist.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the startup status of the service provider.&lt;/li>
&lt;li>Check or use third-party tools to test if the network environment is properly connected.&lt;/li>
&lt;li>Based on the stack&amp;rsquo;s serviceName, check or simulate the call in the management platform to see if it works properly.&lt;/li>
&lt;/ol></description></item><item><title>5-11 - Registration Instance Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/11/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The service of the configuration center cannot be connected.&lt;/li>
&lt;li>The configured protocol, IP, or port is incorrect.&lt;/li>
&lt;li>There is a conflict between the version of the configuration center client in use and the server version, preventing an effective connection.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the service status of the configuration center is normal.&lt;/li>
&lt;li>Verify that the configured protocol, IP, or port is correct.&lt;/li>
&lt;li>Ensure that the version of the configuration center client used is compatible with the server version.&lt;/li>
&lt;/ol></description></item><item><title>6-11 - Character set not supported</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/11/</guid><description>&lt;h2 id="possible-reasons">Possible Reasons&lt;/h2>
&lt;blockquote>
&lt;p>Default &lt;code>UTF-8&lt;/code> character set&lt;/p>
&lt;/blockquote>
&lt;h2 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h2>
&lt;p>The result will ultimately be processed with the &lt;code>UTF-8&lt;/code> character set.&lt;/p></description></item><item><title>Extension Point Loading Extensions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/extension-factory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/extension-factory/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>The loading container for extension points, capable of loading extension points from different containers.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.common.extension.ExtensionFactory&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:application&lt;/span> compiler=&lt;span style="color:#2aa198">&amp;#34;jdk&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.extension.factory.SpiExtensionFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.config.spring.extension.SpringExtensionFactory&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxExtensionFactory.java (implements ExtensionFactory interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.common.extension.ExtensionFactory (plain text file, content: xxx=com.xxx.XxxExtensionFactory)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxExtensionFactory.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.common.extension.ExtensionFactory;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxExtensionFactory&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> ExtensionFactory {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Object &lt;span style="color:#268bd2">getExtension&lt;/span>(Class&lt;span style="color:#719e07">&amp;lt;?&amp;gt;&lt;/span> type, String name) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.common.extension.ExtensionFactory:&lt;/p></description></item><item><title>Local Stub</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/local-stub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/local-stub/</guid><description>&lt;h2 id="feature-description">Feature Description:&lt;/h2>
&lt;p>After invoking a remote service, the client typically only has the interface, while the implementation resides entirely on the server. However, sometimes the provider wants to execute part of the logic on the client side as well.&lt;/p>
&lt;p>&lt;img alt="/user-guide/images/stub.jpg" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/user/stub.jpg">&lt;/p>
&lt;h2 id="usage-scenarios">Usage Scenarios&lt;/h2>
&lt;p>For scenarios such as creating ThreadLocal caches, validating parameters in advance, or simulating fault tolerance data after a failed call, the API needs to have a Stub. The client generates a Proxy instance, which is passed to the Stub through the constructor &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>, and then the Stub is exposed to the user. The Stub can decide whether to invoke the Proxy.&lt;/p></description></item><item><title>More Advanced Features</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/more/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/more/</guid><description>&lt;p>As a microservices framework closely related to application development and aimed at providing enterprise-level service governance capabilities for microservice clusters, Dubbo also offers many advanced features, covering service invocation behavior control, service diagnosis and tuning, service governance, and more.&lt;/p>
&lt;p>There may be slight differences in feature implementation and configuration methods across different language SDKs. For specific feature lists and usage, please refer to the following documents:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/">Java&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/">Golang&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="controlling-service-invocation-behavior">Controlling Service Invocation Behavior&lt;/h2>
&lt;ul>
&lt;li>Service Versioning&lt;/li>
&lt;li>Service Grouping&lt;/li>
&lt;li>Group Aggregation&lt;/li>
&lt;li>Asynchronous Invocation&lt;/li>
&lt;li>Asynchronous Execution&lt;/li>
&lt;li>Streaming Communication&lt;/li>
&lt;li>Reactive Programming&lt;/li>
&lt;li>Generic Invocation&lt;/li>
&lt;li>Generic Implementation&lt;/li>
&lt;li>Implicit Parameter Passing in Invocation Chain&lt;/li>
&lt;li>RPC Invocation Context&lt;/li>
&lt;li>Invocation Trigger Event Notification&lt;/li>
&lt;li>Server Callback to Client&lt;/li>
&lt;li>Subscribe Only&lt;/li>
&lt;li>Register Only&lt;/li>
&lt;li>Dynamically Specify IP for Invocation at Runtime&lt;/li>
&lt;li>Direct Connection to Provider&lt;/li>
&lt;li>Startup Check&lt;/li>
&lt;li>Local Invocation&lt;/li>
&lt;li>Parameter Validation&lt;/li>
&lt;li>Local Mock&lt;/li>
&lt;li>Local Stub&lt;/li>
&lt;li>Echo Test&lt;/li>
&lt;li>Invocation Information Logging&lt;/li>
&lt;li>Delayed Exposure&lt;/li>
&lt;li>Cluster Fault Tolerance&lt;/li>
&lt;li>Service Degradation&lt;/li>
&lt;/ul>
&lt;h2 id="diagnosis-and-tuning">Diagnosis and Tuning&lt;/h2>
&lt;ul>
&lt;li>Port Protocol Multiplexing&lt;/li>
&lt;li>Thread Pool Isolation&lt;/li>
&lt;li>Multiple Protocols&lt;/li>
&lt;li>Multiple Registries&lt;/li>
&lt;li>Request Time Sampling&lt;/li>
&lt;li>Thread Model&lt;/li>
&lt;li>Service Reference Configuration Object Caching&lt;/li>
&lt;li>Route Status Collection&lt;/li>
&lt;li>Load Balancing&lt;/li>
&lt;li>Simplified Registration Information&lt;/li>
&lt;li>Invocation Result Caching&lt;/li>
&lt;li>Concurrency Control&lt;/li>
&lt;li>Connection Control&lt;/li>
&lt;li>Delayed Connection&lt;/li>
&lt;li>Sticky Connection&lt;/li>
&lt;li>Graal VM Support&lt;/li>
&lt;li>Export Thread Stack&lt;/li>
&lt;li>Kryo and FST Serialization&lt;/li>
&lt;li>Custom Service Container&lt;/li>
&lt;li>Graceful Shutdown&lt;/li>
&lt;li>Custom Host Address Exposure&lt;/li>
&lt;li>Consistent Hashing Addressing&lt;/li>
&lt;li>Log Framework Adaptation and Runtime Management&lt;/li>
&lt;li>Kubernetes Lifecycle Probes&lt;/li>
&lt;/ul></description></item><item><title>Using Zookeeper as a registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/service-discovery/zookeeper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/service-discovery/zookeeper/</guid><description>&lt;p>This example shows dubbo-go&amp;rsquo;s service discovery feature with Zookeeper as registry.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Specify the registry address as follows:&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>ins, _ &lt;span style="color:#719e07">:=&lt;/span> dubbo.&lt;span style="color:#268bd2">NewInstance&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithName&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;dubbo_registry_nacos_server&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithRegistry&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithZookeeper&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithAddress&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithProtocol&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		protocol.&lt;span style="color:#268bd2">WithTriple&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		protocol.&lt;span style="color:#268bd2">WithPort&lt;/span>(&lt;span style="color:#2aa198">20000&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>srv, err &lt;span style="color:#719e07">:=&lt;/span> ins.&lt;span style="color:#268bd2">NewServer&lt;/span>()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="how-to-run">How to run&lt;/h2>
&lt;h3 id="start-zookeeper-server">Start Zookeeper server&lt;/h3>
&lt;p>This example relies on Zookeeper as the registry; follow the steps below to start a Zookeeper server first.&lt;/p>
&lt;ol>
&lt;li>Start Zookeeper with Docker, run &lt;code>docker run --rm -p 2181:2181 zookeeper&lt;/code> or &lt;code>make -f $DUBBO_GO_SAMPLES_ROOT_PATH/build/Makefile docker-up&lt;/code>.&lt;/li>
&lt;li>&lt;a href="https://zookeeper.apache.org/releases.html#download">Download and start Zookeeper&lt;/a> locally on your machine.&lt;/li>
&lt;/ol>
&lt;h3 id="run-server">Run server&lt;/h3>
&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>$ go run ./go-server/cmd/server.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Test RPC server works as expected:&lt;/p></description></item><item><title>Webservice Protocol</title><link>https://deploy-preview-3202--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-3202--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><item><title>0-12 - Unknown Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/12/</guid><description>&lt;p>Unknown exceptions are generally caused by API usage or configuration issues.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Encoding exceptions, unsupported encryption and decryption methods, etc.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can locate the lines of business code based on the stack trace information.&lt;/p></description></item><item><title>1-12 - Instances of "Registered Service" have been destroyed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/12/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>During the graceful shutdown of Dubbo, deregistration is performed by calling &lt;code>destroyAll&lt;/code> of &lt;code>AbstractRegistryFactory&lt;/code>.&lt;/p>
&lt;p>In the process of destroying &lt;code>unexport&lt;/code> of &lt;code>Registryprotocol&lt;/code>, there may be an attempt to obtain the already destroyed registry through &lt;code>getRegistry&lt;/code> of &lt;code>AbstractRegistryFactory&lt;/code>, leading to &amp;ldquo;Instances of Registered Service have been destroyed.&amp;rdquo;&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Reference Manual&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-12 - The provider application name is empty when using tag routing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/12/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The provider application name is empty when tag routing retrieves from the pushed provider address list.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>This exception is a Dubbo framework internal exception. Please raise an issue in the community, providing environmental information and reproduction steps.&lt;/p>
&lt;/blockquote></description></item><item><title>4-12 - Failed to create Triple stream</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/12/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Generally, it is an internal error.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or by executing &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/p>
&lt;blockquote>
&lt;p>Please also submit an issue in the community.&lt;/p>
&lt;/blockquote></description></item><item><title>5-12 - Refresh instance and metadata error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/12/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The configuration center service cannot be connected.&lt;/li>
&lt;li>The configured protocol, IP, and port are incorrect.&lt;/li>
&lt;li>There is a conflict between the version of the configuration center client used and the version of the server, preventing an effective connection.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether the status of the configuration center service is normal.&lt;/li>
&lt;li>Verify that the configured protocol, IP, and port are correct.&lt;/li>
&lt;li>Check if the version of the configuration center client used is compatible with the server version.&lt;/li>
&lt;/ol></description></item><item><title>6-12 - Error occurring during ZK client destruction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/12/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The connection between the client and server has been refused.
When the client is being destroyed, the server may be undergoing an election or other operations, resulting in an exception.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>The shutdown method can be queried based on stack information. Generally, no further action is required.&lt;/p></description></item><item><title>Dynamic Proxy Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/proxy-factory/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/proxy-factory/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Converts the &lt;code>Invoker&lt;/code> interface into a business interface.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.rpc.ProxyFactory&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> proxy=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default configuration, used when the &amp;lt;dubbo:protocol&amp;gt; does not configure the proxy attribute --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> proxy=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.rpc.proxy.JdkProxyFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.proxy.JavassistProxyFactory&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxProxyFactory.java (implements ProxyFactory interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.rpc.ProxyFactory (plain text file, content: xxx=com.xxx.XxxProxyFactory)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxProxyFactory.java:&lt;/p></description></item><item><title>Liveness Probe</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/liveness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/liveness/</guid><description>&lt;h2 id="extended-description">Extended Description&lt;/h2>
&lt;p>Expands the detection points for application liveness.&lt;/p>
&lt;h2 id="extended-interface">Extended Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.qos.probe.LivenessProbe&lt;/code>&lt;/p>
&lt;h2 id="extended-configuration">Extended Configuration&lt;/h2>
&lt;p>Dubbo QOS &lt;code>live&lt;/code> command auto-discovery&lt;/p>
&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;p>No default implementation available&lt;/p>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxLivenessProbe.java (Implements LivenessProbe interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.qos.probe.LivenessProbe (Plain text file, content: xxx=com.xxx.XxxLivenessProbe)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxLivenessProbe.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxLivenessProbe&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> LivenessProbe {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">boolean&lt;/span> &lt;span style="color:#268bd2">check&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.qos.probe.LivenessProbe:&lt;/p></description></item><item><title>Readiness Probe</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/readiness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/readiness/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Extend application readiness detection points.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.qos.probe.ReadinessProbe&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&lt;/h2>
&lt;p>Dubbo QOS &lt;code>ready&lt;/code> command auto-discovery&lt;/p>
&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.qos.probe.impl.BootstrapReadinessProbe&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.qos.probe.impl.ProviderReadinessProbe&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxReadinessProbe.java (implements ReadinessProbe interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.qos.probe.ReadinessProbe (plain text file, content: xxx=com.xxx.XxxReadinessProbe)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxReadinessProbe.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxReadinessProbe&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> ReadinessProbe {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">boolean&lt;/span> &lt;span style="color:#268bd2">check&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.qos.probe.ReadinessProbe:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>xxx=com.xxx.XxxReadinessProbe
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Startup Probe</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/startup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/startup/</guid><description>&lt;h2 id="expansion-description">Expansion Description&lt;/h2>
&lt;p>Detection points for extended application startup.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.qos.probe.StartupProbe&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&lt;/h2>
&lt;p>Dubbo QOS &lt;code>startup&lt;/code> command auto-discovery&lt;/p>
&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.qos.probe.impl.BootstrapLivenessProbe&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxStartupProbe.java (implements StartupProbe interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.qos.probe.StartupProbe (plain text file, content: xxx=com.xxx.XxxStartupProbe)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxStartupProbe.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxStartupProbe&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> StartupProbe {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">boolean&lt;/span> &lt;span style="color:#268bd2">check&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.qos.probe.StartupProbe:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>xxx=com.xxx.XxxStartupProbe
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>0-13 - An exception occurs in the metrics collector</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/13/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Errors occurred during the push of metric data, the server being pushed is unreachable or there are some configuration errors, currently supporting Prometheus.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Please refer to the configuration item reference manual &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Reference Manual&lt;/a>.&lt;/p></description></item><item><title>1-13 - Failed to execute retry task</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/13/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The registry center is offline.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the registry center is functioning properly.&lt;/li>
&lt;li>Check if the server where the registry center is located and its network are functioning properly.&lt;/li>
&lt;/ol></description></item><item><title>2-13 - Failed to receive loading mesh routing rules</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/13/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The routing rule configuration of the mesh is invalid, causing loading exceptions.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;blockquote>
&lt;p>Check the mesh routing rule configuration. &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/tasks/mesh/">Mesh Example&lt;/a>。&lt;/p>
&lt;/blockquote></description></item><item><title>4-13 - Server Timeout</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/13/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The server&amp;rsquo;s logic processing takes a relatively long time.&lt;/li>
&lt;li>The server is under heavy load and cannot respond.&lt;/li>
&lt;li>The current timeout parameter settings differ significantly from the actual situation.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check for long processing times based on the interface name.&lt;/li>
&lt;li>Monitor server status and the service invocation situation on the server side.&lt;/li>
&lt;li>Try increasing the timeout parameters somewhat.&lt;/li>
&lt;/ol></description></item><item><title>5-13 - Unable to Destroy Model</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/13/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Custom destroy method has exceptions in business processing.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the custom destroy method and business processing logic have any runtime exceptions.&lt;/p></description></item><item><title>6-13 - Stream Closed Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/13/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The current stream is closed &lt;code>Stream is closed&lt;/code> or another thread is reading while the stream is closing.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Typically, this occurs due to the incorrect order in which the code closes the stream.&lt;/p></description></item><item><title>Compiler Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/compiler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/compiler/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Java code compiler for dynamically generating bytecode to accelerate calls.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.common.compiler.Compiler&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&lt;/h2>
&lt;p>Automatically loaded&lt;/p>
&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.compiler.support.JdkCompiler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.compiler.support.JavassistCompiler&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxCompiler.java (implements Compiler interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.common.compiler.Compiler (text file containing: xxx=com.xxx.XxxCompiler)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxCompiler.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.common.compiler.Compiler;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxCompiler&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Compiler {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Object &lt;span style="color:#268bd2">getExtension&lt;/span>(Class&lt;span style="color:#719e07">&amp;lt;?&amp;gt;&lt;/span> type, String name) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.common.compiler.Compiler：&lt;/p></description></item><item><title>Configuration Center Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/config-center/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/config-center/</guid><description>&lt;h2 id="design-purpose">Design Purpose&lt;/h2>
&lt;p>The core function of the configuration center is to serve as a Key-Value storage. The Dubbo framework informs the configuration center of the keys it is concerned about, and the configuration center returns the corresponding value for those keys.&lt;/p>
&lt;p>Divided by application scenario, the configuration center primarily undertakes the following responsibilities in the Dubbo framework:&lt;/p>
&lt;ul>
&lt;li>As an externalized configuration center, storing the dubbo.properties configuration file, where the key is usually the filename, such as dubbo.properties, and the value is the content of the configuration file.&lt;/li>
&lt;li>Storing individual configuration items, such as various switches and constant values.&lt;/li>
&lt;li>Storing service governance rules, where the key is usually organized in the format of &amp;ldquo;service name + rule type,&amp;rdquo; and the value is the specific governance rule.&lt;/li>
&lt;/ul>
&lt;p>To further implement grouped management of key-values, Dubbo&amp;rsquo;s configuration center has also integrated the concepts of namespace and group, which are reflected in many professional third-party configuration centers. Generally, the namespace is used to isolate different tenants, while the group is used to group the collection of keys for the same tenant.&lt;/p></description></item><item><title>Metadata Center Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/metadata-report/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/metadata-report/</guid><description>&lt;h2 id="design-purpose">Design Purpose&lt;/h2>
&lt;p>Please refer to the &lt;a href="../../../metadata-center/overview/">Metadata Center Manual&lt;/a>&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.metadata.store.MetadataReportFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.metadata.store.MetadataReport&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;h2 id="implementation-principles">Implementation Principles&lt;/h2>
&lt;h3 id="spi-definition">SPI Definition&lt;/h3>
&lt;p>Reference: org.apache.dubbo.metadata.store.MetadataReportFactory, org.apache.dubbo.metadata.store.MetadataReport&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">@SPI&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;redis&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">MetadataReportFactory&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Adaptive&lt;/span>({&lt;span style="color:#2aa198">&amp;#34;protocol&amp;#34;&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> MetadataReport &lt;span style="color:#268bd2">getMetadataReport&lt;/span>(URL url);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="custom-metadata-storage">Custom Metadata Storage&lt;/h3>
&lt;p>The following example describes the Redis storage.&lt;/p>
&lt;p>Create a new project that needs to support the following modifications:&lt;/p>
&lt;h4 id="extend-abstractmetadatareport">Extend AbstractMetadataReport&lt;/h4>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">RedisMetadataReport&lt;/span> &lt;span style="color:#268bd2">extends&lt;/span> AbstractMetadataReport {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> &lt;span style="color:#268bd2">final&lt;/span> &lt;span style="color:#268bd2">static&lt;/span> Logger logger &lt;span style="color:#719e07">=&lt;/span> LoggerFactory.getLogger(RedisMetadataReport.class);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">final&lt;/span> JedisPool pool;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">RedisMetadataReport&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">super&lt;/span>(url);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> pool &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> JedisPool(&lt;span style="color:#719e07">new&lt;/span> JedisPoolConfig(), url.getHost(), url.getPort());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Override&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protected&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">doStoreProviderMetadata&lt;/span>(ProviderMetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.storeMetadata(providerMetadataIdentifier, serviceDefinitions);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Override&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protected&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">doStoreConsumerMetadata&lt;/span>(ConsumerMetadataIdentifier consumerMetadataIdentifier, String value) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.storeMetadata(consumerMetadataIdentifier, value);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">storeMetadata&lt;/span>(MetadataIdentifier metadataIdentifier, String v) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">try&lt;/span> (Jedis jedis &lt;span style="color:#719e07">=&lt;/span> pool.getResource()) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> jedis.set(metadataIdentifier.getIdentifierKey() &lt;span style="color:#719e07">+&lt;/span> META_DATA_SOTRE_TAG, v);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> } &lt;span style="color:#719e07">catch&lt;/span> (Throwable e) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> logger.error(&lt;span style="color:#2aa198">&amp;#34;Failed to put &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> metadataIdentifier &lt;span style="color:#719e07">+&lt;/span> &lt;span style="color:#2aa198">&amp;#34; to redis &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> v &lt;span style="color:#719e07">+&lt;/span> &lt;span style="color:#2aa198">&amp;#34;, cause: &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> e.getMessage(), e);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">throw&lt;/span> &lt;span style="color:#719e07">new&lt;/span> RpcException(&lt;span style="color:#2aa198">&amp;#34;Failed to put &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> metadataIdentifier &lt;span style="color:#719e07">+&lt;/span> &lt;span style="color:#2aa198">&amp;#34; to redis &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> v &lt;span style="color:#719e07">+&lt;/span> &lt;span style="color:#2aa198">&amp;#34;, cause: &amp;#34;&lt;/span> &lt;span style="color:#719e07">+&lt;/span> e.getMessage(), e);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="extend-abstractmetadatareportfactory">Extend AbstractMetadataReportFactory&lt;/h4>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">RedisMetadataReportFactory&lt;/span> &lt;span style="color:#268bd2">extends&lt;/span> AbstractMetadataReportFactory {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Override&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> MetadataReport &lt;span style="color:#268bd2">createMetadataReport&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> &lt;span style="color:#719e07">new&lt;/span> RedisMetadataReport(url);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="add-metadatareportfactory">Add MetadataReportFactory&lt;/h4>
&lt;blockquote>
&lt;p>META-INF/dubbo/internal/org.apache.dubbo.metadata.store.MetadataReportFactory&lt;/p></description></item><item><title>0-14 - Monitoring Exceptions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/14/</guid><description>&lt;p>Used to count the number of RPC calls and the duration of calls, the extension interface is MonitorFactory, and the corresponding implementation class is DubboMonitorFactory.&lt;/p>
&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Users can implement the MonitorFactory extension interface at this layer to achieve custom monitoring statistics strategies. In the implementation class of the custom monitoring statistics strategy, a runtime business exception has occurred.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the business class of the &lt;code>org.apache.dubbo.monitor.MonitorFactory&lt;/code> interface; the implementation method may contain logical errors in the code.&lt;/p></description></item><item><title>1-14 - Dynamic Configuration Recognition Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/14/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>When using the service governance features of Dubbo Admin for dynamic configuration, incorrect content or format of the configuration file may result in the inability to parse the dynamic configuration content, leading to error 1-14.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Please check whether the content or format of the dynamic configuration file is correct.&lt;/p>
&lt;h3 id="see-also">See Also&lt;/h3>
&lt;blockquote>
&lt;p>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Item Reference Manual&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-14 - Script routing execution failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/14/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The script routing rules are invalid, leading to rule parsing failure.&lt;/li>
&lt;li>The Dubbo framework failed to execute the script.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the script is written according to the specifications.&lt;/p></description></item><item><title>4-14 - Response Result Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/14/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The server pipeline may be temporarily disconnected due to network reasons.&lt;/li>
&lt;li>The currently used version is low or check the current parameter configuration to see if &lt;code>send.reconnect=true&lt;/code> is enabled, which defaults to true in higher versions.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the direct connection network is smooth and whether there are packet loss issues.&lt;/li>
&lt;li>Check the above parameter values or try using a higher version.&lt;/li>
&lt;/ol></description></item><item><title>5-14 - Model startup error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/14/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The connection is disconnected while the service is waiting to publish or subscribe.&lt;/li>
&lt;li>Network connection timeout.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether the connection between the application server and the configuration center is normal.&lt;/li>
&lt;li>Check for network connection timeouts or other issues.&lt;/li>
&lt;/ol></description></item><item><title>6-14 - Server response failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/14/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The client unexpectedly closes the connection when exchanging data with the server.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>The client terminates unexpectedly or the server crashes.&lt;/p></description></item><item><title>Message Dispatch Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/dispatcher/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/dispatcher/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Channel information dispatcher, used to specify thread pool model.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.remoting.Dispatcher&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> dispatcher=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting. When &amp;lt;dubbo:protocol&amp;gt; does not configure the dispatcher attribute, this configuration is used --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> dispatcher=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.dispatcher.direct.DirectDispatcher&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.dispatcher.message.MessageOnlyDispatcher&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.dispatcher.execution.ExecutionDispatcher&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.dispatcher.connection.ConnectionOrderedDispatcher&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxDispatcher.java (implements Dispatcher interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.remoting.Dispatcher (plain text file, content: xxx=com.xxx.XxxDispatcher)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxDispatcher.java：&lt;/p></description></item><item><title>0-15 - Exception Occurred When Loading Extension Class</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/15/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The &lt;code>clazz&lt;/code> class does not implement the interface class of the current extension point.&lt;/li>
&lt;li>The extension name may be an interface or does not exist.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the declaration of the extension class and ensure there is a matching extension implementation class.&lt;/li>
&lt;li>The extension implementation class must implement the extension point interface class and methods.&lt;/li>
&lt;/ol>
&lt;p style="margin-top: 3rem;"> &lt;/p></description></item><item><title>1-15 - Service destruction failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/15/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>An exception thrown when destroying all invokers in the RegistryDirectory may trigger error 1-15.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This error is an internal Dubbo error. If you encounter it, you can create an issue on GitHub and provide the error message along with reproduction steps, and we will assist you in resolving the problem.&lt;/p>
&lt;blockquote>
&lt;p>See also &lt;a href="https://github.com/apache/dubbo">Dubbo Community&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-15 - Route rule parsing failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/15/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>The routing rules configured by the user are invalid.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Examine the configured routing rules.&lt;/p></description></item><item><title>4-15 - Client Stream Listener</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/15/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>After receiving a response from the server, the client stream listener outputs this information as a notification.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3></description></item><item><title>5-15 - Model Reference Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/15/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The methods of Dubbo&amp;rsquo;s core handling classes are misused or have been tampered with.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check for misuse or decompilation modifications in the application.&lt;/p></description></item><item><title>6-15 - Skip unread stream data</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/15/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/15/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>When decoding, unread data in the stream will be skipped if there is still unread data present.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Data will be read all at once during decoding.&lt;/p></description></item><item><title>Thread Pool Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/threadpool/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/threadpool/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>The thread pool implementation strategy for service providers requires creating a thread in the thread pool to execute the service provider&amp;rsquo;s business logic when the server receives a request.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.common.threadpool.ThreadPool&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> threadpool=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value configuration, used when &amp;lt;dubbo:protocol&amp;gt; does not configure threadpool --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> threadpool=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.threadpool.FixedThreadPool&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.threadpool.CachedThreadPool&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxThreadPool.java (implements ThreadPool interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.common.threadpool.ThreadPool (plain text file, content: xxx=com.xxx.XxxThreadPool)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxThreadPool.java:&lt;/p></description></item><item><title>0-16 - No available executor</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/16/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The internal executor is unavailable and thus returns null.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>No intervention is needed; Dubbo will internally execute the &lt;code>createExecutorIfAbsent&lt;/code> method to construct a new executor.&lt;/p>
&lt;p style="margin-top: 3rem;"> &lt;/p></description></item><item><title>1-16 - Unsupported categories exist</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/16/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>When there are changes in the registration center, the corresponding listener will be notified. If the category is invalid during the notification, it will result in unsupported categories existing.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>This error is an internal Dubbo error. If you encounter it, you can create an issue on GitHub and provide the error information as well as reproduction steps, and we will assist you in resolving the issue.&lt;/p></description></item><item><title>2-16 - Request retry failed multiple times</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/16/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Provider exceptions lead to the consumer failing to retry multiple times.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the health status of the provider.&lt;/p></description></item><item><title>4-16 - Service is closed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/16/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Continuing to call &lt;code>org.apache.dubbo.rpc.protocol.tri.service.TriHealthImpl#enterTerminalState&lt;/code> or &lt;code>org.apache.dubbo.rpc.protocol.ReferenceCountInvokerWrapper#invoke&lt;/code> in an erroneous state, while the call is already in terminal or destroy state.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Multiple calls to the above methods will trigger reminders. Generally used only for unit testing.&lt;/p></description></item><item><title>5-16 - Unable to find any valid protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/16/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The configured protocol is not supported.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>The currently supported protocols include dubbo, rmi, hessian, http, webservice, thrift, redis, etc.&lt;/p>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/">Configuration Reference Manual&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>6-16 - Exception Occurred During Reconnection</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/16/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/6/16/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>An unstable network causes delayed reconnections each time a reconnection occurs.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check for any network packet loss.&lt;/p></description></item><item><title>Serialization Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/serialize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/serialize/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Convert objects into byte streams for network transmission, and convert byte streams into objects for restoring the received byte stream data back into objects.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.Serialization&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.ObjectInput&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.ObjectOutput&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Serialization method for the protocol --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> serialization=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting, when &amp;lt;dubbo:protocol&amp;gt; does not configure serialization, use this configuration --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> serialization=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.dubbo.DubboSerialization&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.hessian.Hessian2Serialization&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.java.JavaSerialization&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.serialize.java.CompactedJavaSerialization&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxSerialization.java (implements Serialization interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxObjectInput.java (implements ObjectInput interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxObjectOutput.java (implements ObjectOutput interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.common.serialize.Serialization (plain text file, content: xxx=com.xxx.XxxSerialization)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxSerialization.java：&lt;/p></description></item><item><title>0-17 - An unknown exception occurs when the executor is shutting down</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/17/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/17/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>A custom executor may have been used, and an exception was raised when writing the destroy method.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether a custom implementation of &lt;code>org.apache.dubbo.common.threadpool.manager.ExecutorRepository&lt;/code> is used and inspect the custom &lt;code>shutdown&lt;/code> method.&lt;/p></description></item><item><title>1-17 - metadata Server failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/17/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/17/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>There may be issues with the configuration of relevant parameters related to metadata, particularly &lt;code>metadataServiceProtocol&lt;/code> and &lt;code>metadataServicePort&lt;/code>.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the failure occurs simultaneously with the absence of the metadata service port. If both occur, prioritize resolving the absence of the metadata service port. &lt;strong>(1-18 FAQ)&lt;/strong>&lt;/li>
&lt;li>Check whether there is a conflict with the &lt;code>metadataServicePort&lt;/code> port number. If there is a conflict between the ports configured for the Provider and Consumer, it will cause the metadata Server to fail.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>See also
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Reference Manual&lt;/a>&lt;/p></description></item><item><title>2-17 - mock request failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/17/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/17/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ul>
&lt;li>Forced mock is configured, indicating log.&lt;/li>
&lt;li>Exception occurs during mock request execution.&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether forced mock is configured.&lt;/li>
&lt;li>Check if the mock response is normal.&lt;/li>
&lt;/ol></description></item><item><title>4-17 - Errors occur when shutting down all callers</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/17/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/17/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Generally, it is an internal error.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/p>
&lt;blockquote>
&lt;p>Also, please submit an issue in the community.&lt;/p>
&lt;/blockquote></description></item><item><title>5-17 - Parameter Value Format Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/17/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/17/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;ol>
&lt;li>The configuration value length is too long, generally set to within 200 characters.&lt;/li>
&lt;li>The format of the configuration value is incorrect; currently supports numbers, -, _ and others.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the content of the configuration value is too long; modify according to the prompt information.&lt;/li>
&lt;li>Check if the content of the configuration value contains special characters, such as @#$%^&amp;amp; etc.; please refer to the prompt information for modifications.&lt;/li>
&lt;/ol></description></item><item><title>Network Transport Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/remoting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/remoting/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Implementations for remote communication servers and client transports.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.remoting.Transporter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.Server&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.Client&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-configuration">Extension Configuration&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:#586e75">&amp;lt;!-- Server and client use the same transport implementation --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> transporter=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Server and client use different transport implementations --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:protocol&lt;/span> server=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> client=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default settings, used when &amp;lt;dubbo:protocol&amp;gt; does not configure transporter/server/client attributes --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> transporter=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> server=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> client=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.transporter.netty.NettyTransporter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.transporter.mina.MinaTransporter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.transport.transporter.grizzly.GrizzlyTransporter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxTransporter.java (implements Transporter interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxServer.java (implements Server interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxClient.java (implements Client interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.remoting.Transporter (plain text file, contents: xxx=com.xxx.XxxTransporter)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxTransporter.java：&lt;/p></description></item><item><title>0-18 - Thread pool executor is misused</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/18/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The number of threads is customized, and an unknown exception occurs within the system.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to locate the issue.&lt;/p></description></item><item><title>1-18 - Metadata service port not provided</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/18/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>This may be due to the &lt;code>metadataType&lt;/code> being set to local mode, and there is an error in the &lt;code>metadataServicePort&lt;/code> configuration.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the &lt;code>metadataType&lt;/code> attribute value on the Provider side.&lt;/li>
&lt;li>Check if the &lt;code>metadataServicePort&lt;/code> configuration on the Provider side is correct, paying particular attention to whether there is a conflict with other application ports.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Also Refer To
&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/">Configuration Reference Manual&lt;/a>&lt;/p>
&lt;/blockquote></description></item><item><title>2-18 - Mesh routing rules not being listened to</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/18/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The mesh has issued routing rules, but the rules are not being listened to.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the mesh routing rule configuration complies with the specifications.&lt;/p></description></item><item><title>4-18 - Unable to obtain service model from the call</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/18/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Currently initialized by default only for unit test scenarios.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3></description></item><item><title>5-18 - Notification Registration Event Failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/18/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The notification has been sent, but an unexpected error occurred in the business processing logic.&lt;/li>
&lt;li>The configuration center cannot be connected, resulting in a timeout error.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the custom business logic implementation for any runtime exceptions.&lt;/li>
&lt;li>Check whether the configuration center can be connected normally.&lt;/li>
&lt;/ol></description></item><item><title>Information Exchange Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/exchanger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/exchanger/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Implement the Request-Response information exchange semantics based on the transport layer.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.remoting.exchange.Exchanger&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.exchange.ExchangeServer&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.exchange.ExchangeClient&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> exchanger=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting, when &amp;lt;dubbo:protocol&amp;gt; does not configure the exchanger attribute, this configuration is used --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> exchanger=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extension">Known Extension&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.remoting.exchange.exchanger.HeaderExchanger&lt;/code>&lt;/p>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxExchanger.java (implements Exchanger interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxExchangeServer.java (implements ExchangeServer interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxExchangeClient.java (implements ExchangeClient interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.remoting.exchange.Exchanger (plain text file, content: xxx=com.xxx.XxxExchanger)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxExchanger.java：&lt;/p></description></item><item><title>0-19 - Exception Occurred While Processing Task</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/19/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/19/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Improper handling of custom business logic.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to locate the issue.&lt;/p></description></item><item><title>1-19 - K8S Listener Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/19/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/19/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The custom resource type in K8S has been modified or removed by the container.&lt;/li>
&lt;li>The K8S container is disconnected from the service.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the custom resource type and configuration are correct. For syntax or formatting, please refer to the official K8S documentation.&lt;/li>
&lt;li>Check if the network is functioning properly or if the port mapping is correct.&lt;/li>
&lt;/ol></description></item><item><title>2-19 - Asynchronous Request Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/19/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/19/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Provider exceptions lead to asynchronous request failures for the consumer.&lt;/li>
&lt;li>Network exceptions lead to asynchronous request failures for the consumer.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the health status of the provider.&lt;/li>
&lt;li>Check the network status.&lt;/li>
&lt;/ol></description></item><item><title>4-19 - Possible errors in parameter values</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/19/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/19/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>This error code indicates that the parameter values may no longer be correct.&lt;/p>
&lt;p>Currently, this occurs when multiple ports are being listened to simultaneously under the same protocol. Due to design limitations, a single protocol can only listen on one port; otherwise, the port configuration will be overwritten.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Adjust the listening relationship between the protocol and ports.&lt;/p>
&lt;blockquote>
&lt;p>The meaning of this error code has been adjusted. For the errors related to this error code in Dubbo versions 3.1.4, 3.2.0-beta.3, and earlier, please refer to the error code &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/faq/0/2/">0-2&lt;/a> .&lt;/p></description></item><item><title>Networking Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/networker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/networker/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Peer network node networker.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.remoting.p2p.Networker&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> networker=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default setting. When &amp;lt;dubbo:protocol&amp;gt; does not configure the networker attribute, use this configuration --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> networker=&lt;span style="color:#2aa198">&amp;#34;xxx&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.remoting.p2p.support.MulticastNetworker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.p2p.support.FileNetworker&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxNetworker.java (implements Networker interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.remoting.p2p.Networker (plain text file, content: xxx=com.xxx.XxxNetworker)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxNetworker.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.remoting.p2p.Networker;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxNetworker&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Networker {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Group &lt;span style="color:#268bd2">lookup&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.remoting.p2p.Networker:&lt;/p></description></item><item><title>Peer-to-peer network node aggregator extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/page/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/page/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Peer-to-peer network node aggregator.&lt;/p>
&lt;h2 id="extension-interfaces">Extension Interfaces&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.container.page.PageHandler&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> page=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value settings, when &amp;lt;dubbo:protocol&amp;gt; does not configure the page attribute, use this configuration --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> page=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.container.page.pages.HomePageHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.container.page.pages.StatusPageHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.container.page.pages.LogPageHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.container.page.pages.SystemPageHandler&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxPageHandler.java (implements PageHandler interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.container.page.PageHandler (plain text file with content: xxx=com.xxx.XxxPageHandler)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxPageHandler.java：&lt;/p></description></item><item><title>Dubbo Java 3.1.3 Official Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/07/18/dubbo-java-3.1.3-official-release/</link><pubDate>Mon, 18 Jul 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/07/18/dubbo-java-3.1.3-official-release/</guid><description>&lt;h2 id="dubbo-313">Dubbo 3.1.3&lt;/h2>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/release/3-1-3.png">&lt;/p>
&lt;h3 id="changes">Changes&lt;/h3>
&lt;ul>
&lt;li>Fixed the issue of abnormal Filter order during local calls&lt;/li>
&lt;li>Supported importing protocol configuration items into MetadataService&lt;/li>
&lt;li>Supported automatically selecting available ports when publishing MetadataService&lt;/li>
&lt;li>Improved error code content&lt;/li>
&lt;li>Supported consistent hashing load balancing in generic calls&lt;/li>
&lt;li>Fixed deserialization exception issue during generic calls&lt;/li>
&lt;li>Fixed application-level metadata reuse issue caused by inconsistent JVM Methods order&lt;/li>
&lt;li>Defaulted to disabling port reuse capability and fixed the remoting component&amp;rsquo;s inability to find SPI&lt;/li>
&lt;li>Fixed safe guard issues caused by abnormal reference counting&lt;/li>
&lt;li>Removed guava dependency used in Nacos registry component&lt;/li>
&lt;li>Fixed offline issue due to address aggregation when using Nacos registry at the interface level&lt;/li>
&lt;li>Multiple code quality optimization commits&lt;/li>
&lt;/ul>
&lt;h3 id="new-contributors">New Contributors&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://github.com/zhangzq7">@zhangzq7&lt;/a> made the first contribution in &lt;a href="https://github.com/apache/dubbo/pull/10847">#10847&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/akaakking">@akaakking&lt;/a> made the first contribution in &lt;a href="https://github.com/apache/dubbo/pull/10799">#10799&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/wxbty">@wxbty&lt;/a> made the first contribution in &lt;a href="https://github.com/apache/dubbo/pull/10921">#10921&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/haoxz11">@haoxz11&lt;/a> made the first contribution in &lt;a href="https://github.com/apache/dubbo/pull/10937">#10937&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="new-contributor">New Contributor&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://github.com/weixsun">@weixsun&lt;/a> made the first contribution in &lt;a href="https://github.com/apache/dubbo/pull/10941">#10941&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="future-version-planning">Future Version Planning&lt;/h2>
&lt;p>What are the differences between 3.0, 3.1, and 3.2? How will it develop in the future? What is the release cycle? More version iteration plans will be released soon; please follow the official Apache Dubbo WeChat account for the latest information.&lt;/p></description></item><item><title>0-20 - Exception occurs when storing stack information</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/20/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/20/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The JVM has set the parameter &lt;code>-XX:+DisableAttachMechanism&lt;/code>&lt;/li>
&lt;li>The specified stack dump path does not exist; in this case, the system will attempt to create it, and a &lt;code>SecurityException&lt;/code> may occur during creation, possibly due to lack of permissions.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the JVM has set the above parameter.&lt;/li>
&lt;li>Check if the account running the service has permissions to create folders.&lt;/li>
&lt;/ol></description></item><item><title>1-20 - K8S Pod does not exist</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/20/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/20/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Controller is Pending.&lt;/li>
&lt;li>The Pod may not exist or has been removed by the container.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to locate the issue.&lt;/p></description></item><item><title>2-20 - Failed to Merge Group Result</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/20/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/2/20/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Failed to merge group results.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>When returning results, there may be runtime exceptions in the business logic, which can be traced back to the specified line number reported in the console.&lt;/p></description></item><item><title>4-20 - Data Decoding Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/20/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/20/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Occurs only during the decoding phase, possibly due to a mismatch between the Dubbo versions of the service provider and the caller.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the current Dubbo version in use, and try to keep it consistent or compatible with a higher version.&lt;/p></description></item><item><title>5-20 - Error occurred when stopping the dubbo module</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/20/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/20/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Custom implementation of the destroy method may have runtime exceptions in business logic.&lt;/li>
&lt;li>The service was not stopped gracefully, which may lead to unhandled business logic.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the custom implementation of the destroy method and the business logic.&lt;/li>
&lt;li>Verify if there are any time-consuming business processing logic when stopping the service.&lt;/li>
&lt;/ol></description></item><item><title>API Model Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/api/</guid><description>&lt;h1 id="api">Api&lt;/h1>
&lt;p>Introduction to API model, recommended reading before customizing API for api_config.yaml.&lt;/p>
&lt;h2 id="api-gateway">Api Gateway&lt;/h2>
&lt;p>API is the key feature of the dubbo-go-pixiu. With this feature, you can expose your dubbo service as an HTTP service.&lt;/p>
&lt;h3 id="configuration">Configuration&lt;/h3>
&lt;p>Sample:&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: api name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: api description
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: resource documentation
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">queryStrings&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: id
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">required&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">integrationRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mappingParams&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: queryStrings.id
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mapTo&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">applicationName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;BDTService&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interface&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;com.ikurento.user.UserProvider&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">method&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GetUser&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusterName&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test_dubbo&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">definitions&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: modelDefinition
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">schema&lt;/span>: &amp;gt;-&lt;span style="color:#2aa198">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;type&amp;#34; : &amp;#34;object&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;properties&amp;#34; : {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;id&amp;#34; : {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;type&amp;#34; : &amp;#34;integer&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> },
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;type&amp;#34; : {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;type&amp;#34; : &amp;#34;string&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> },
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;price&amp;#34; : {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> &amp;#34;type&amp;#34; : &amp;#34;number&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#2aa198"> }&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>name
:&lt;/p></description></item><item><title>Auth Filter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/auth-filter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/auth-filter/</guid><description>&lt;h1 id="auth-filter-quick-start">Auth Filter Quick Start&lt;/h1>
&lt;h2 id="http">Http&lt;/h2>
&lt;p>Start Zookeeper [Docker environment]:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> samples/dubbogo/http/docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>run docker-compose.yml/services
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start Http [Go environment]:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>go run samples/dubbogo/simple/jwt/server/server.go
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start Pixiu:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>go run cmd/pixiu/*.go gateway start -c samples/dubbogo/simple/jwt/pixiu/conf.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Call the server of Http by Pixiu :&lt;/p>
&lt;ul>
&lt;li>default Authorization: Bearer &lt;token>&lt;/li>
&lt;/ul>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -H &lt;span style="color:#2aa198">&amp;#34;Authorization: Bearer eyJraWQiOiJlZThkNjI2ZCIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJXZWlkb25nIiwiYXVkIjoiVGFzaHVhbiIsImlzcyI6Imp3a3Mtc2VydmljZS5hcHBzcG90LmNvbSIsImlhdCI6MTYzMTM2OTk1NSwianRpIjoiNDY2M2E5MTAtZWU2MC00NzcwLTgxNjktY2I3NDdiMDljZjU0In0.LwD65d5h6U_2Xco81EClMa_1WIW4xXZl8o4b7WzY_7OgPD2tNlByxvGDzP7bKYA9Gj--1mi4Q4li4CAnKJkaHRYB17baC0H5P9lKMPuA6AnChTzLafY6yf-YadA7DmakCtIl7FNcFQQL2DXmh6gS9J6TluFoCIXj83MqETbDWpL28o3XAD_05UP8VLQzH2XzyqWKi97mOuvz-GsDp9mhBYQUgN3csNXt2v2l-bUPWe19SftNej0cxddyGu06tXUtaS6K0oe0TTbaqc3hmfEiu5G0J8U6ztTUMwXkBvaknE640NPgMQJqBaey0E4u0txYgyvMvvxfwtcOrDRYqYPBnA&amp;#34;&lt;/span> http://localhost:8888/user/pixiu
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>result on console :&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>{&amp;#34;message&amp;#34;:&amp;#34;user&amp;#34;,&amp;#34;status&amp;#34;:200}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Token invalid&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl http://localhost:8888/health
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>result on console :&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>{&amp;#34;message&amp;#34;:&amp;#34;token invalid&amp;#34;,&amp;#34;status&amp;#34;:401}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="spring-cloud">Spring Cloud&lt;/h2>
&lt;p>Start Nacos [Docker environment]:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> samples/springcloud/docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>run docker-compose.yml/services
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start SpringCloud [Java environment]:&lt;/p></description></item><item><title>Config File</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/config/</guid><description>&lt;h3 id="config">Config&lt;/h3>
&lt;p>Pixiu supports specifying local config file with argument &lt;code>-c&lt;/code> which you can find in those samples pixiu dir.&lt;/p>
&lt;p>Pixiu uses the config abstraction like envoy such as listener, filter, route and cluster.&lt;/p>
&lt;p>Besides, pixiu provides another dubbo-specific config named &lt;code>api_config&lt;/code>, by which &lt;code>dubbo-filter&lt;/code> can transform the http request to dubbo generic call. You can also find it in those samples&amp;rsquo;s pixiu directory.&lt;/p>
&lt;p>The document &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/api/">Api Model&lt;/a> provides the api_config specification about the pixiu config abstraction.&lt;/p></description></item><item><title>Fail Inject</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/fail-inject/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/fail-inject/</guid><description>&lt;h1 id="fail-inject-filter-quick-start">Fail Inject Filter Quick Start&lt;/h1>
&lt;h2 id="start-pixiu">Start Pixiu:&lt;/h2>
&lt;p>Examples of official references is in &lt;code>https://github.com/dubbo-go-pixiu/samples&lt;/code>&lt;/p>
&lt;p>Add the following configuration file to the &lt;code>samples/http/simple/pixiu/conf.yaml&lt;/code>&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;net/http&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8888&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: /user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: user
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster_not_found_response_code&lt;/span>: &lt;span style="color:#2aa198">505&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.faultinjection
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">fail_inject_rules&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;/UserService/com.dubbogo.pixiu.UserService/GetUserByCode&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: delay
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">trigger_type&lt;/span>: random
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">status_code&lt;/span>: &lt;span style="color:#2aa198">500&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">body&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;error&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">delay&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">odds&lt;/span>: &lt;span style="color:#2aa198">30&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">idle_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">read_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">write_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">lb_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;lb&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">endpoints&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">id&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">1314&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">health_checks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">protocol&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;tcp&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">interval&lt;/span>: 2s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">healthy_threshold&lt;/span>: &lt;span style="color:#2aa198">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">unhealthy_threshold&lt;/span>: &lt;span style="color:#2aa198">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">shutdown_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;60s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">step_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">reject_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;immediacy&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then execute the following command .&lt;/p></description></item><item><title>Go</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/go/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/go/</guid><description/></item><item><title>GRPC Usage</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/grpc/http-grpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/grpc/http-grpc/</guid><description>&lt;h1 id="invoke-service-provider-using-grpc">Invoke service provider using grpc&lt;/h1>
&lt;blockquote>
&lt;p>Doc metions below fit the code in the &lt;code>samples/http/grpc&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;h2 id="define-pixiu-config">Define Pixiu Config&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;net/http&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8881&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/api/v1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-grpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster_not_found_response_code&lt;/span>: &lt;span style="color:#2aa198">505&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.grpcproxy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: /mnt/d/WorkSpace/GoLandProjects/dubbo-go-pixiu/samples/http/grpc/proto
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.response
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">server_name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-http-grpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">generate_request_id&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">idle_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">read_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">write_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-grpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">lb_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;RoundRobin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">endpoints&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">50001&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GRPC&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">connect_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;5s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">request_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">shutdown_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;60s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">step_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">reject_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;immediacy&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>Grpc server is defined in the &lt;code>clusters&lt;/code>&lt;/p></description></item><item><title>HTTP Usage</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/simple/http-http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/simple/http-http/</guid><description>&lt;h1 id="http-to-http-proxy">Http to Http Proxy&lt;/h1>
&lt;blockquote>
&lt;p>Doc metions below fit the code in the &lt;code>samples/http/simple&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;h2 id="define-apis-in-the-pixiuconfyaml">Define Apis in the pixiu/conf.yaml&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>---
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;net/http&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8888&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster_not_found_response_code&lt;/span>: &lt;span style="color:#2aa198">505&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.httpproxy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.cors
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">allow_origin&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - api.dubbo.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">allow_methods&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">allow_headers&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">expose_headers&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">max_age&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">allow_credentials&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.response
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">idle_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">read_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">write_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">lb_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;lb&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">endpoints&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">id&lt;/span>: &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">1314&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">connect_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;5s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">request_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">shutdown_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;60s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">step_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">reject_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;immediacy&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>for custom config , you can refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/config/">config&lt;/a> in user-guide&lt;/p></description></item><item><title>Introduction to Grpc NetWorkFilter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/grpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/grpc/</guid><description>&lt;h1 id="using-grpc-to-call-service-providers">Using grpc to Call Service Providers&lt;/h1>
&lt;blockquote>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-pixiu-samples/blob/main/http/grpc/pixiu/conf.yaml">The following documentation conforms to the code&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="define-pixiu-configuration-file">Define Pixiu Configuration File&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">static_resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">listeners&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;net/http&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;HTTP&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">8881&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filter_chains&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.httpconnectionmanager
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">routes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">match&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">prefix&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;/api/v1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">route&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-grpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">cluster_not_found_response_code&lt;/span>: &lt;span style="color:#2aa198">505&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">http_filters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.grpcproxy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">path&lt;/span>: /mnt/d/WorkSpace/GoLandProjects/dubbo-go-pixiu/samples/http/grpc/proto
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: dgp.filter.http.response
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">server_name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-http-grpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">generate_request_id&lt;/span>: &lt;span style="color:#cb4b16">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">idle_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">read_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">write_timeout&lt;/span>: 5s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">clusters&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">name&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;test-grpc&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">lb_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;RoundRobin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">endpoints&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">socket_address&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">address&lt;/span>: &lt;span style="color:#2aa198">127.0.0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">port&lt;/span>: &lt;span style="color:#2aa198">50001&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">protocol_type&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;GRPC&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">connect_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;5s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">request_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">shutdown_config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;60s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">step_timeout&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;10s&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">reject_policy&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;immediacy&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>The Grpc server is defined in the “cluster”&lt;/p></description></item><item><title>Introduction to Http2 Listener</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/http2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/http2/</guid><description>&lt;p>Welcome to contribute to this document.&lt;/p></description></item><item><title>Introduction to RateLimiter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/ratelimit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/ratelimit/</guid><description>&lt;p>Welcome to contribute to this document.&lt;/p></description></item><item><title>Introduction to the Http to Dubbo case</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http_to_dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http_to_dubbo/</guid><description>&lt;p>We welcome you to claim and contribute to this document.&lt;/p></description></item><item><title>Jaeger</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/jaeger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/jaeger/</guid><description>&lt;h4 id="tracing-with-jaeger">Tracing with Jaeger&lt;/h4>
&lt;p>There is a tracing filter, by which we can add tracing function for pixiu&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>http_filters:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">-&lt;/span> name: dgp.filters.tracing
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> config:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> url: http:&lt;span style="color:#586e75">//127.0.0.1:14268/api/traces
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&lt;/span> &lt;span style="color:#268bd2">type&lt;/span>: jaeger
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>you can quick start the demo in samples/dubbogo/simple/jaeger for experience&lt;/p></description></item><item><title>Metric Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/metric/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/metric/</guid><description>&lt;h1 id="metric-reporter-filter-dgpfilterhttpmetric">Metric Reporter Filter (dgp.filter.http.metric)&lt;/h1>
&lt;hr>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The &lt;code>dgp.filter.http.metric&lt;/code> filter provides unified metric reporting for Pixiu gateway. It consolidates the functionality of two previous filters (&lt;code>dgp.filter.http.metric&lt;/code> and &lt;code>dgp.filter.http.prometheusmetric&lt;/code>) and supports both &lt;strong>Pull&lt;/strong> and &lt;strong>Push&lt;/strong> modes with OpenTelemetry integration.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>: This filter defaults to &lt;strong>Push&lt;/strong> mode. To use Pull mode, explicitly specify &lt;code>mode: &amp;quot;pull&amp;quot;&lt;/code> in the configuration.&lt;/p>
&lt;/blockquote>
&lt;h3 id="key-features">Key Features&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Unified Entry Point&lt;/strong>: Single filter for both Pull and Push modes&lt;/li>
&lt;li>&lt;strong>OpenTelemetry Integration&lt;/strong>: Pull mode uses OpenTelemetry for metrics (consistent with Pixiu Tracing)&lt;/li>
&lt;li>&lt;strong>Context-based Extension&lt;/strong>: Other filters can record custom metrics via &lt;code>HttpContext.RecordMetric()&lt;/code>&lt;/li>
&lt;li>&lt;strong>Backward Compatible&lt;/strong>: Reuses logic from original filters&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="modes">Modes&lt;/h2>
&lt;h3 id="pull-mode-recommended">Pull Mode (Recommended)&lt;/h3>
&lt;p>Metrics are exposed via HTTP endpoint for Prometheus to scrape.&lt;/p></description></item><item><title>Mock Sample Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/mock/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/mock/</guid><description>&lt;h1 id="mock-request">Mock request&lt;/h1>
&lt;h2 id="simple-demo">Simple Demo&lt;/h2>
&lt;h3 id="api-config">Api Config&lt;/h3>
&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-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">name&lt;/span>: pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">description&lt;/span>: pixiu sample
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">path&lt;/span>: &lt;span style="color:#2aa198">&amp;#39;/api/v1/test-dubbo/mock&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">type&lt;/span>: restful
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">description&lt;/span>: mock
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">methods&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#268bd2">httpVerb&lt;/span>: GET
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">enable&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">mock&lt;/span>: &lt;span style="color:#cb4b16">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">timeout&lt;/span>: 1000ms
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">inboundRequest&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">requestType&lt;/span>: http
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="request">Request&lt;/h3>
&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl localhost:8888/api/v1/test-dubbo/mock -X GET 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="response">Response&lt;/h3>
&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-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;#34;message&amp;#34;&lt;/span>: &lt;span style="color:#2aa198">&amp;#34;mock success&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="todo">TODO&lt;/h2>
&lt;p>We plan use can config custom result in the future. Not only api config way, but also create a match rule.&lt;/p></description></item><item><title>Opa Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/opa/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/opa/</guid><description>&lt;h1 id="opa-filter-dgpfilterhttpopa">OPA Filter (dgp.filter.http.opa)&lt;/h1>
&lt;hr>
&lt;h2 id="english">English&lt;/h2>
&lt;h3 id="overview">Overview&lt;/h3>
&lt;p>The &lt;code>dgp.filter.http.opa&lt;/code> filter delegates authorization decisions to Open Policy Agent (OPA) via a Rego policy. This filter evaluates requests and determines whether to allow or deny based on the policy defined in Rego. The policy is provided as an inline Rego module and evaluated using OPA&amp;rsquo;s built-in query engine.&lt;/p>
&lt;h3 id="what-the-filter-does-current-behavior">What the filter does (current behavior)&lt;/h3>
&lt;ul>
&lt;li>Loads a Rego &lt;strong>module string&lt;/strong> from &lt;code>config.policy&lt;/code>.&lt;/li>
&lt;li>Builds a Rego &lt;strong>query&lt;/strong> from &lt;code>config.entrypoint&lt;/code>.&lt;/li>
&lt;li>For each incoming request, constructs an &lt;code>input&lt;/code> object and evaluates the query.&lt;/li>
&lt;li>If the query result is &lt;code>true&lt;/code>, the request is allowed. Otherwise, the request is denied.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>There is &lt;strong>no built-in support&lt;/strong> for external policy files or URIs, custom HTTP status codes, or custom error bodies.&lt;/p></description></item><item><title>Prometheus</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/others/prometheus/</guid><description>&lt;h1 id="metric-filter-quick-start">Metric Filter Quick Start&lt;/h1>
&lt;h2 id="start-prometheuspushgateway-docker-environment">Start PrometheusPushGateway [Docker environment]:&lt;/h2>
&lt;h5 id="use-docker-to-install-and-start">Use Docker to install and start：&lt;/h5>
&lt;p>Directly obtain the latest version of the official image &lt;code>prom/pushgateway:latest&lt;/code> The startup command is as follows:&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>$ docker pull prom/pushgateway
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>$ docker run -d -p 9091:9091 prom/pushgateway
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use the command &lt;code>./pushgateway&lt;/code> command to start the service. At this time, the browser can access the UI page by accessing &lt;code>http://&amp;lt;ip&amp;gt;:9091&lt;/code>, but there is no data display on the default Metrics, that is because we have not yet sent to PushGateway Push any data.&lt;/p></description></item><item><title>Spring Cloud Cluster Center Adapter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/adapter/springcloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/adapter/springcloud/</guid><description/></item><item><title>SpringCloud</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/springcloud/springcloud-springcloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/springcloud/springcloud-springcloud/</guid><description>&lt;h1 id="quick-start">Quick Start&lt;/h1>
&lt;p>Start Nacos [Docker environment]:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> samples/springcloud/docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>run docker-compose.yml/services
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start SpringCloud [Java environment]:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#b58900">cd&lt;/span> samples/springcloud/server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># the port is 8074&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>run auth-service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># the port is 8071&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>run user-service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start Pixiu:&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>go run cmd/pixiu/*.go gateway start -c samples/springcloud/pixiu/conf.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Call the server of SpringCloud by Pixiu :&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-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># the serviceId is `user-provider`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl http://localhost:8888/user-service/echo/Pixiu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># the serviceId is `auth-provider`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl http://localhost:8888/auth-service/echo/Pixiu
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>result on console :&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Hello Nacos Discovery Pixiu
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Start and configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/configurations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/configurations/</guid><description>&lt;h3 id="pixiu-startup-command">Pixiu Startup Command&lt;/h3>
&lt;p>Pixiu has two forms: Gateway and Sidecar. The command for the Pixiu executable is as follows, where pixiu is the name of the executable file. Note that the path after -c is the absolute path of the local configuration file.&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>pixiu gateway start -c /config/conf.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configuration-detailed-explanation">Configuration Detailed Explanation&lt;/h3>
&lt;p>Pixiu accepts YAML formatted files as its main configuration file for configuring various components of Pixiu. Taking the configuration file from Quick Start as an example, we will explain its components in detail and list possible extensions.&lt;/p></description></item><item><title>Telnet Command Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/telnet-handler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/telnet-handler/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>All servers support telnet access for manual intervention.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.remoting.telnet.TelnetHandler&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> telnet=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting, when &amp;lt;dubbo:protocol&amp;gt; does not configure the telnet attribute, use this configuration --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> telnet=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.remoting.telnet.support.ClearTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.telnet.support.ExitTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.telnet.support.HelpTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.remoting.telnet.support.StatusTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.ListTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.ChangeTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.CurrentTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.InvokeTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.TraceTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.CountTelnetHandler&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.telnet.PortTelnetHandler&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxTelnetHandler.java (implements TelnetHandler interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.remoting.telnet.TelnetHandler (plain text file, content: xxx=com.xxx.XxxTelnetHandler)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxTelnetHandler.java:&lt;/p></description></item><item><title>0-21 - Too many instances are built</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/21/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/21/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>It generally refers to too many instances created by &lt;code>org.apache.dubbo.common.timer.HashedWheelTimer&lt;/code>.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>It does not affect the construction of instances, but there may be a risk of memory leaks.&lt;/p></description></item><item><title>1-21 - No available services in K8S</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/21/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/21/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The current service has not been loaded properly.&lt;/li>
&lt;li>The configured Pod does not actually exist in the current instance service.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze stack information through some third-party tools or by using &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to locate the issue.&lt;/p></description></item><item><title>4-21 - Unsafe serialization data detected</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/21/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/4/21/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The current server may be under attack, or the built-in class checking logic of Dubbo has not scanned the classes you defined.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>If the request source is an attack source, please promptly reinforce security.&lt;/li>
&lt;li>If the request source is expected, declare the class names you are using in the &lt;code>security/serialize.allowlist&lt;/code> resource file, and Dubbo will automatically load them into the allowlist. Please refer to the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/advanced-features-and-usage/security/class-check/">Class Checking Mechanism&lt;/a> article.&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>Currently, Dubbo can operate in monitoring mode and restriction mode. Monitoring mode only logs, without interception; restriction mode will perform interception.&lt;/p></description></item><item><title>5-21 - Exception occurred when destroying the service</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/21/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/21/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The service discovery instance has been destroyed.&lt;/p>
&lt;blockquote>
&lt;p>The current method has been deprecated since version 3.1.&lt;/p>
&lt;/blockquote>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3></description></item><item><title>gRPC Server Reflection Support</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/grpc-reflection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/grpc-reflection/</guid><description>&lt;h1 id="grpc-server-reflection-support">gRPC Server Reflection Support&lt;/h1>
&lt;blockquote>
&lt;p>&lt;a href="https://github.com/apache/dubbo-go-pixiu/pull/849">Implementation Reference&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>The gRPC Proxy filter (&lt;code>dgp.filter.grpc.proxy&lt;/code>) now supports &lt;strong>gRPC Server Reflection&lt;/strong>, enabling dynamic message parsing and inspection at the gateway level without requiring pre-compiled proto files.&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>gRPC Server Reflection is a feature that allows Pixiu gateway to dynamically discover and decode gRPC service definitions at runtime. This eliminates the need to maintain proto files in the gateway configuration.&lt;/p>
&lt;h3 id="key-features">Key Features&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Three Reflection Modes&lt;/strong>: Passthrough, Reflection, and Hybrid&lt;/li>
&lt;li>&lt;strong>Dynamic Message Decoding&lt;/strong>: Parse messages at runtime without proto files&lt;/li>
&lt;li>&lt;strong>TTL-based Caching&lt;/strong>: Efficient descriptor caching with automatic cleanup&lt;/li>
&lt;li>&lt;strong>Protocol Detection&lt;/strong>: Support for both gRPC and Triple protocols&lt;/li>
&lt;li>&lt;strong>Graceful Fallback&lt;/strong>: Hybrid mode provides automatic passthrough fallback&lt;/li>
&lt;/ul>
&lt;h2 id="reflection-modes">Reflection Modes&lt;/h2>
&lt;h3 id="passthrough-mode-default">Passthrough Mode (Default)&lt;/h3>
&lt;p>Performs transparent binary proxying without decoding messages.&lt;/p></description></item><item><title>Status Check Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/status-checker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/status-checker/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Checks the status of various resources that the service depends on. This status check can be used for both telnet&amp;rsquo;s status command and hosting&amp;rsquo;s status page.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.common.status.StatusChecker&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:protocol&lt;/span> status=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting. When the &amp;lt;dubbo:protocol&amp;gt; does not have a status attribute configured, this configuration is used --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> status=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.status.support.MemoryStatusChecker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.status.support.LoadStatusChecker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.status.ServerStatusChecker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.dubbo.status.ThreadPoolStatusChecker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.registry.directory.RegistryStatusChecker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.config.spring.status.SpringStatusChecker&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.rpc.config.spring.status.DataSourceStatusChecker&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&lt;/p></description></item><item><title>0-22 - Input and Output Stream Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/22/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/22/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Reading a local file that is no longer available.&lt;/li>
&lt;li>Attempting to read/write a file without permission.&lt;/li>
&lt;li>Attempting to write to a file but no disk space is available.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the local file exists.&lt;/li>
&lt;li>Check file permissions.&lt;/li>
&lt;li>Check disk space.&lt;/li>
&lt;/ol>
&lt;p>You can analyze the stack trace information with some third-party tools or by using &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/p></description></item><item><title>1-22 - Incorrect K8S configuration address</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/22/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/22/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The K8S URL configuration is incorrect, preventing normal access.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the K8S URL configuration information and ensure that the port mapping is also accessible.&lt;/p></description></item><item><title>5-22 - An error occurred when initializing the registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/22/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/22/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The address of the registry is configured incorrectly.&lt;/li>
&lt;li>The configured address information cannot be connected to the network properly.&lt;/li>
&lt;li>The version of the configuration center client does not match the actual server version, leading to compatibility issues.&lt;/li>
&lt;/ol>
&lt;h3 id="investigation-and-resolution-steps">Investigation and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the configured address is correct.&lt;/li>
&lt;li>Check if the network is smooth and can be connected using a third-party client.&lt;/li>
&lt;li>Check for compatibility matching issues, and refer to third-party websites for version adaptation.&lt;/li>
&lt;/ol></description></item><item><title>Container Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/container/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/container/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Service container extension for customizing loading content.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.container.Container&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>java org.apache.dubbo.container.Main spring jetty log4j
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.container.spring.SpringContainer&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.container.spring.JettyContainer&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.container.spring.Log4jContainer&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxContainer.java (implements Container interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.container.Container (plain text file, content: xxx=com.xxx.XxxContainer)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxContainer.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>org.apache.dubbo.container.Container;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxContainer&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Container {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Status &lt;span style="color:#268bd2">start&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Status &lt;span style="color:#268bd2">stop&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.container.Container：&lt;/p></description></item><item><title>Local Call</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/local-call/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/local-call/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>Local calls use the injvm protocol, which is a pseudo-protocol that does not open a port or initiate remote calls; it directly associates within the JVM but executes the Dubbo filter chain.&lt;/p>
&lt;h2 id="usage-scenarios">Usage Scenarios&lt;/h2>
&lt;p>When we need to call a remote service that is not yet developed, we can implement a similar service locally using the injvm protocol, allowing us to invoke our local implementation of the service.&lt;/p></description></item><item><title>0-23 - Serialization data conversion exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/23/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/23/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>There are circular references in the data to be serialized, leading to a stack overflow.&lt;/li>
&lt;li>The referenced jar package version is low or has compatibility issues.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>If using FastJson, remove &lt;code>SerializerFeature.DisableCircularReferenceDetect&lt;/code>&lt;/li>
&lt;li>Check or upgrade the version for testing.&lt;/li>
&lt;/ol>
&lt;p>You can analyze stack information using some third-party tools or by running &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for troubleshooting.&lt;/p></description></item><item><title>5-23 - Waiting for export/reference service to encounter an exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/23/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/23/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The registration center unexpectedly stops or cannot provide normal services when exporting/referencing services.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the registration center can be connected normally, and check whether the current client version is compatible with the server version.&lt;/p>
&lt;blockquote>
&lt;p>Exceptions are handled within the export/reference single method, so theoretically this exception should not be thrown.&lt;/p>
&lt;/blockquote></description></item><item><title>Service Authorization</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/auth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/security/auth/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>Business scenarios that are sensitive to security, such as payment, may have limitations on anonymous calls. To enhance security, version 2.7.5 introduced an authentication and authorization mechanism based on the AK/SK model, along with an authorization service center. The main principle is that the consumer client generates the corresponding request signature using SK, request metadata, timestamp, parameters, etc., when requesting a service that requires authorization. This signature is carried to the other end via Dubbo&amp;rsquo;s Attachment mechanism for verification. Only after successful verification will business logic be processed. As shown in the figure below:&lt;/p></description></item><item><title>0-24 - Exception of Overriding Field Values</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/24/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/24/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The entity class does not have setter/getter methods set.&lt;/li>
&lt;li>There may be nested properties.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the entity class and set the setter/getter methods.&lt;/li>
&lt;li>Check if nested annotations are used based on the stack trace information.&lt;/li>
&lt;/ol></description></item><item><title>5-24 - Asynchronous waiting for service reference exceptions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/24/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/24/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The registry center has crashed or is unable to provide normal services externally.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the registry center is connectable and verify if the current client version is compatible with the server version.&lt;/p></description></item><item><title>Cache Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/cache/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Use request parameters as keys to cache return results.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.cache.CacheFactory&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:service&lt;/span> cache=&lt;span style="color:#2aa198">&amp;#34;lru&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Method-level caching --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:service&amp;gt;&amp;lt;dubbo:method&lt;/span> cache=&lt;span style="color:#2aa198">&amp;#34;lru&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&amp;lt;/dubbo:service&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting, used when &amp;lt;dubbo:service&amp;gt; does not configure the cache property --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> cache=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.cache.support.lru.LruCacheFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.cache.support.threadlocal.ThreadLocalCacheFactory&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.cache.support.jcache.JCacheFactory&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-examples">Extension Examples&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxCacheFactory.java (implements CacheFactory interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.cache.CacheFactory (plain text file, content: xxx=com.xxx.XxxCacheFactory)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxCacheFactory.java:&lt;/p></description></item><item><title>0-25 - Load Mapping Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/25/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/25/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Insufficient file access permissions&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check file permissions.
You can use some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to analyze the stack information for diagnosis.&lt;/p></description></item><item><title>5-25 - Custom implementation causes undefined exceptions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/25/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/25/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The custom implementation of the &lt;code>org.apache.dubbo.rpc.Protocol&lt;/code> protocol throws a business logic exception during the method call destroy.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the &lt;code>destroy&lt;/code> method of the custom implementation class code.&lt;/p></description></item><item><title>Validation Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/validation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/validation/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Parameter validation extension point.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.validation.Validation&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:service&lt;/span> validation=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">&amp;lt;!-- Default value setting, when &amp;lt;dubbo:service&amp;gt; does not configure the validation attribute, use this configuration --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;dubbo:provider&lt;/span> validation=&lt;span style="color:#2aa198">&amp;#34;xxx,yyy&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.validation.support.jvalidation.JValidation&lt;/code>&lt;/p>
&lt;h2 id="extension-examples">Extension Examples&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxValidation.java (implements Validation interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.validation.Validation (plain text file, content: xxx=com.xxx.XxxValidation)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxValidation.java：&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.validation.Validation;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxValidation&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Validation {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Object &lt;span style="color:#268bd2">getValidator&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxValidator.java：&lt;/p></description></item><item><title>0-26 - Warning message when publishing metadata service</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/26/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/26/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The metadata prompts warning messages when storing the mapping relationship between the interface and the application.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Generally, you can analyze based on the stack information, or you may choose not to handle it.&lt;/p></description></item><item><title>1-26 - xDS Certificate Generation Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/26/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/26/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The system may not support the algorithms &lt;code>secp256r1&lt;/code> and &lt;code>RSA&lt;/code> for generating certificates.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check whether the operating system supports the &lt;code>secp256r1&lt;/code> and &lt;code>RSA&lt;/code> algorithms. You may need to download the corresponding dll files or lib.&lt;/p></description></item><item><title>5-26 - Metadata has been exported</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/26/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/26/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The metadata has been exported in the current JVM.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3></description></item><item><title>Logger Adapter Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/logger-adapter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/logger-adapter/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>Log output adaptation extension point.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.common.logger.LoggerAdapter&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&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;dubbo:application&lt;/span> logger=&lt;span style="color:#2aa198">&amp;#34;xxx&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:&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-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>-Ddubbo:application.logger&lt;span style="color:#719e07">=&lt;/span>xxx
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="known-extensions">Known Extensions&lt;/h2>
&lt;ul>
&lt;li>&lt;code>org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.logger.jcl.JclLoggerAdapter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter&lt;/code>&lt;/li>
&lt;li>&lt;code>org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxLoggerAdapter.java (implements LoggerAdapter interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.common.logger.LoggerAdapter (plain text file, content: xxx=com.xxx.XxxLoggerAdapter)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxLoggerAdapter.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.common.logger.LoggerAdapter;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxLoggerAdapter&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> LoggerAdapter {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Logger &lt;span style="color:#268bd2">getLogger&lt;/span>(URL url) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxLogger.java:&lt;/p></description></item><item><title>0-27 - Thread Pool Isolation Configuration Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/27/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/27/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The application&amp;rsquo;s thread pool isolation capability is not enabled, but isolation thread pool information is configured in &lt;code>ServiceConfig&lt;/code>.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Enable the application&amp;rsquo;s thread pool isolation capability: &lt;code>dubbo.application.executor-management-mode=isolation&lt;/code>&lt;/p></description></item><item><title>1-27 - K8S Listening Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/27/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/27/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The system may not support the &lt;code>secp256r1&lt;/code> and &lt;code>RSA&lt;/code> algorithms for certificate generation.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the operating system supports the &lt;code>secp256r1&lt;/code> and &lt;code>RSA&lt;/code> algorithms. Required DLL files or libraries need to be downloaded.&lt;/p></description></item><item><title>5-27 - Incorrect usage of internal class API</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/27/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/27/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>&lt;code>org.apache.dubbo.config.ReferenceConfig&lt;/code> and &lt;code>org.apache.dubbo.common.config.ReferenceCache&lt;/code> may be defined as non-singleton mode.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check custom annotations or configurations that have defined the core application class as non-singleton mode, and check the &lt;code>scope&lt;/code> configuration.&lt;/p></description></item><item><title>QoS Anonymous Access Permission Verification Extension</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/qos-permission/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/qos-permission/</guid><description>&lt;h2 id="extension-description">Extension Description&lt;/h2>
&lt;p>QoS anonymous access permission verification extension point.&lt;/p>
&lt;h2 id="extension-interface">Extension Interface&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.qos.permission.PermissionChecker&lt;/code>&lt;/p>
&lt;h2 id="extension-configuration">Extension Configuration&lt;/h2>
&lt;p>Dubbo QoS &lt;code>dubbo.application.qos-anonymous-access-permission-level&lt;/code> anonymous access permission verification.&lt;/p>
&lt;h2 id="default-implementation">Default Implementation&lt;/h2>
&lt;p>&lt;code>org.apache.dubbo.qos.permission.DefaultAnonymousAccessPermissionChecker&lt;/code>&lt;/p>
&lt;h2 id="extension-example">Extension Example&lt;/h2>
&lt;p>Maven project structure:&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>src
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-main
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-java
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-XxxPermissionChecker.java (Implementing the PermissionChecker interface)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-resources
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-META-INF
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> |-org.apache.dubbo.qos.permission.PermissionChecker` (Plain text file, content: qosPermissionChecker=com.xxx.XxxPermissionChecker)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>XxxPermissionChecker.java:&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-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> com.xxx.qos.permission;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> org.apache.dubbo.qos.permission.PermissionChecker;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">XxxAnonymousAccessPermissionChecker&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> PermissionChecker {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Override&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">boolean&lt;/span> &lt;span style="color:#268bd2">access&lt;/span>(CommandContext commandContext, PermissionLevel defaultCmdRequiredPermissionLevel) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// ...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>META-INF/dubbo/org.apache.dubbo.qos.permission.PermissionChecker:&lt;/p></description></item><item><title>0-28 - Actions that may cause dangerous behavior</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/28/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/28/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>You have performed one of the following actions:&lt;/p>
&lt;ul>
&lt;li>Attempted to or have adjusted the output location of accesslog&lt;/li>
&lt;/ul>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Please check if the &lt;code>accesslog.fixed.path=true&lt;/code> switch in the application configuration is turned on; if it is not on, it can be ignored. If it is currently on, please confirm whether the action of switching the accesslog path was executed by a trusted person to avoid potential security risks.&lt;/p></description></item><item><title>1-28 - xDS Stub Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/28/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/28/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The current pod is down or has crashed.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can analyze the stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to locate the issue.&lt;/p></description></item><item><title>5-28 - No available annotations found</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/28/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/28/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>No reliable annotations found under the scanned package configuration. Mainly &lt;code>@DubboService&lt;/code> or &lt;code>@Service&lt;/code>&lt;/p>
&lt;h3 id="troubleshooting-and-resolving-steps">Troubleshooting and Resolving Steps&lt;/h3>
&lt;p>Check the current version in use; prior to 2.7.7 it scanned for &lt;code>@Service&lt;/code> annotations, and thereafter for &lt;code>@DubboService&lt;/code>&lt;/p></description></item><item><title>Concurrency Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/concurrency-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/concurrency-control/</guid><description>&lt;h2 id="function-description">Function Description&lt;/h2>
&lt;p>Multiple concurrency control features help users manage their applications and services.&lt;/p>
&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>Limit the number of concurrent requests from the same client to the same service, preventing malicious requests from overloading the server, ensuring service stability, and preventing excessive resource usage.&lt;/p>
&lt;p>Control the maximum number of concurrent requests for certain services, ensuring the availability of resources for other services. System overload and ensuring system stability.&lt;/p>
&lt;p>Allow for smoother scaling of services when demand increases.&lt;/p></description></item><item><title>0-29 - Tracer dependency not found</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/29/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/29/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>You have enabled tracing in the configuration file, but the Tracer dependency was not found.&lt;/p>
&lt;p>Currently, there are two supported Tracers, OpenTelemetry and Brave.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Choose one Tracer dependency for your project:&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>&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>io.micrometer&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>micrometer-tracing-bridge-otel&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;optional&amp;gt;&lt;/span>true&lt;span style="color:#268bd2">&amp;lt;/optional&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;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>&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>io.micrometer&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>micrometer-tracing-bridge-brave&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;optional&amp;gt;&lt;/span>true&lt;span style="color:#268bd2">&amp;lt;/optional&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></description></item><item><title>1-29 - xDS File Read Failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/29/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/29/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Network disconnection or the target file is corrupted at this time.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the network is normal.&lt;/li>
&lt;li>You can analyze the stack information using some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/li>
&lt;/ol></description></item><item><title>5-29 - Scan package not configured</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/29/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/29/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The parameter value of the &lt;code>@EnableDubbo.scanBasePackages&lt;/code> annotation is not configured.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Simply configure &lt;code>@EnableDubbo.scanBasePackages&lt;/code>.&lt;/p></description></item><item><title>Connection Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/config-connections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/config-connections/</guid><description>&lt;h2 id="function-description">Function Description&lt;/h2>
&lt;p>The connection control feature allows users to manage and control the number of incoming and outgoing connections to the server, limit the number of connections, and set timeouts, ensuring the stability and performance of the Dubbo system. It also allows users to configure different levels of access control based on IP address, port, and protocol to protect the system from malicious traffic and reduce the risk of service interruptions. Additionally, it provides a way to monitor current traffic and connection status.&lt;/p></description></item><item><title>Dubbo Java 3.2.0-beta.3 Official Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/12/18/dubbo-java-3.2.0-beta.3-official-release/</link><pubDate>Sun, 18 Dec 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/12/18/dubbo-java-3.2.0-beta.3-official-release/</guid><description>&lt;p>Dubbo version 3.2.0-beta.3 is the latest feature version of Dubbo 3, supporting new features such as Spring Boot 3, JDK 17, service-level thread pool isolation, and more. Everyone is welcome to try it out.&lt;/p>
&lt;h1 id="dubbo-320-beta3">Dubbo 3.2.0-beta.3&lt;/h1>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/release/3-2-0-beta-3.png">&lt;/p>
&lt;p>&lt;strong>Note: The codebase of Dubbo 3.2.0-beta.3 is identical to Dubbo 3.1.4, so all modifications included in Dubbo 3.1.4 are also present in Dubbo 3.2.0-beta.3. Duplicate content will not be repeated in the following description.&lt;/strong>&lt;/p></description></item><item><title>1-30 - xDS Request Failed</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/30/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/30/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The versions may be inconsistent or incompatible.&lt;/li>
&lt;li>Timeout while reading data.&lt;/li>
&lt;li>Issues with parameter configuration.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Adapt according to the introduction provided by the third-party official website.&lt;/li>
&lt;li>Confirm whether the timeout setting is too short or there are issues on the server side.&lt;/li>
&lt;li>Check whether the port mapping is correct.&lt;/li>
&lt;/ol></description></item><item><title>5-30 - Duplicate Bean Definition Declaration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/30/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/30/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The declared object ID or name is duplicated.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Modify the name to make it unique based on the fully qualified class name output in the console.&lt;/p></description></item><item><title>Circuit Breaker Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/hystrix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/httpfilter/hystrix/</guid><description>&lt;p>Welcome to contribute to supplement this documentation.&lt;/p></description></item><item><title>Deployment operations</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/deployment/</guid><description>&lt;h2 id="1-docker-image-deployment">1. Docker Image Deployment&lt;/h2>
&lt;p>Note: First confirm that Docker is installed and running on your machine.&lt;/p>
&lt;h3 id="1-pull-the-pixiu-image-from-docker-hub">1. Pull the Pixiu image from Docker Hub&lt;/h3>
&lt;p>&lt;code>docker pull phial3/dubbo-go-pixiu:latest&lt;/code>&lt;/p>
&lt;h3 id="2-prepare-pixiu-configuration-as-needed">2. Prepare Pixiu Configuration as Needed&lt;/h3>
&lt;h4 id="detailed-explanation-of-pixiu-configuration-parametersconfigurations">&lt;a href="../configurations/">Detailed Explanation of Pixiu Configuration Parameters&lt;/a>&lt;/h4>
&lt;p>Prepare the &lt;code>log.yml&lt;/code> and &lt;code>conf.yaml&lt;/code> configuration files, and mount these two configuration files to the local directory when starting Pixiu.&lt;/p>
&lt;h3 id="3-start-pixiu">3. Start Pixiu&lt;/h3>
&lt;p>&lt;strong>Foreground Start&lt;/strong>: Convenient to check if the service information is running normally.&lt;/p></description></item><item><title>Https Case Introduction</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/https/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/https/</guid><description>&lt;p>Welcome to contribute to this document.&lt;/p></description></item><item><title>Introduction to Dubbo NetWorkFilter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/dubbo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/networkfilter/dubbo/</guid><description>&lt;p>Welcome to contribute to this document.&lt;/p></description></item><item><title>Introduction to TCP Listener</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/tcp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/tcp/</guid><description>&lt;p>Welcome to contribute to this document.&lt;/p></description></item><item><title>Rust</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/rust/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/rust/</guid><description/></item><item><title>1-31 - xDS Response Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/31/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/31/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The client service has lost connection to the server.&lt;/li>
&lt;li>The server is unavailable or offline.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check whether the server is offline or if the client&amp;rsquo;s network is disconnected.&lt;/li>
&lt;li>Verify that the server service is running normally and can be accessed via network interface requests.&lt;/li>
&lt;/ol></description></item><item><title>5-31 - Status Check Error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/31/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/31/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The status of the currently running server; the system&amp;rsquo;s CPU usage is too high or memory and other indicators are too low.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the current memory usage status of the server and the CPU usage along with other indicators. There may be a risk of downtime.&lt;/p></description></item><item><title>1-32 - xDS Channel initialization failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/32/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/32/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The versions may be inconsistent or incompatible.&lt;/li>
&lt;li>Timeout while reading data.&lt;/li>
&lt;li>There may be issues with parameter configuration.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Adapt according to the introduction from the third-party official website.&lt;/li>
&lt;li>Confirm whether the timeout is set too short or if there are issues on the server side.&lt;/li>
&lt;li>Check whether the port mapping relationship is correct.&lt;/li>
&lt;/ol></description></item><item><title>5-32 - Error Occurred When Apollo Disconnected</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/32/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/32/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The Apollo configuration center may be down or the network may be disconnected.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the status of the Apollo server and verify if the network communication is functioning properly.&lt;/p></description></item><item><title>1-33 - xDS service discovery initialization failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/33/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/33/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Incorrect address configuration of the registry in xDS mode.&lt;/li>
&lt;li>Firewalls and third-party protection software preventing external connections.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the xDS configuration is correct and verify the status of Istio.&lt;/li>
&lt;li>Check the firewall configuration or perform basic tests using the &lt;code>ping&lt;/code> command in cmd.&lt;/li>
&lt;/ol></description></item><item><title>5-33 - Exception Occurred During Apollo Configuration Update Event</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/33/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/33/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Incorrect usage of Apollo Configuration API.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Please refer to the documentation on the dynamic configuration center regarding the Apollo section.&lt;/p></description></item><item><title>1-34 - Error occurred while parsing xDS</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/34/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/34/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>There is an error in the content of the xDS protocol.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can locate the cause based on the Endpoints List printed in the stack trace.&lt;/p></description></item><item><title>5-34 - Error Occurred in NACOS</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/34/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/34/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Incorrect use of the NACOS configuration API.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Please refer to the description of the NACOS section in the dynamic configuration center usage documentation.&lt;/p></description></item><item><title>1-35 - ZK Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/35/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/35/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Unable to connect to ZK or connection timeout.&lt;/li>
&lt;li>ZNode already exists at the time of creation.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if the ZK configuration IP and port number are correct. You can use third-party tools like ZooInspector for connection testing.&lt;/li>
&lt;li>Based on the stack trace, determine the ZNode information to see if the current node can be cleaned up.&lt;/li>
&lt;/ol></description></item><item><title>5-35 - Container initialization failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/35/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/35/</guid><description>&lt;h2 id="possible-causes">Possible Causes&lt;/h2>
&lt;p>Undefined interface &lt;code>org.apache.dubbo.container.Container&lt;/code> SPI implementation.&lt;/p>
&lt;p>Note: Currently tested in the &lt;code>org.apache.dubbo.container.Main&lt;/code> class.&lt;/p>
&lt;h2 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h2>
&lt;p style="margin-top: 3rem;"> &lt;/p></description></item><item><title>1-36 - Unknown Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/36/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/36/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The meaning of this error code has been adjusted. For the errors associated with this error code in Dubbo versions 3.1.4, 3.2.0-beta.3 and prior, please refer to error code &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/faq/99/0/">99-0&lt;/a>.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>(This error code currently has no information)&lt;/p></description></item><item><title>5-36 - Error occurred during filter validation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/36/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/36/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>An exception occurs in the business code within the overridden &lt;code>invoke&lt;/code> method of the custom filter extension class.&lt;/p>
&lt;h3 id="troubleshooting-and-solutions">Troubleshooting and Solutions&lt;/h3>
&lt;ol>
&lt;li>Use &lt;code>ps -eaf |grep &amp;lt;error service&amp;gt;&lt;/code>&lt;/li>
&lt;li>You can analyze the stack trace using some third-party tools or by using &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> for diagnosis.&lt;/li>
&lt;/ol></description></item><item><title>1-37 - Nacos Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/37/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/37/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Nacos configuration information is not properly configured.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the IP and port number for configuring Nacos are correct. If Nacos&amp;rsquo;s security authentication is enabled, check if the username and password configuration are correct.&lt;/p></description></item><item><title>5-37 - Dynamic configuration listener processing error</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/37/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/37/</guid><description>&lt;p>Listener event handling failed when the file changed&lt;/p>
&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>File permissions have changed or directory permissions have changed.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can locate the code based on the stack information from the console.&lt;/p></description></item><item><title>Host Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/set-host/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/set-host/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>In Dubbo, when a Provider starts, it does two main things: it starts the server and registers the service with the registry. When starting the server, it needs to bind the socket, and when registering the service with the registry, it also needs to send the socket&amp;rsquo;s unique identifier as the service address.&lt;/p>
&lt;ol>
&lt;li>What is the default &lt;code>host&lt;/code> when &lt;code>host&lt;/code> is not set in &lt;code>dubbo&lt;/code>?&lt;/li>
&lt;li>How do we specify the service&amp;rsquo;s &lt;code>host&lt;/code> in &lt;code>dubbo&lt;/code>, can we use a hostname or domain instead of an IP address as &lt;code>host&lt;/code>?&lt;/li>
&lt;li>When using Docker, sometimes port mapping needs to be set, in this case, how should we set the socket bound during server startup and the socket registered with the registry to use different port numbers?&lt;/li>
&lt;/ol>
&lt;h2 id="example">Example&lt;/h2>
&lt;h4 id="what-is-the-default-host-when-host-is-not-set-in-dubbo">What is the default host when host is not set in dubbo&lt;/h4>
&lt;p>The general dubbo protocol configuration is as follows:&lt;/p></description></item><item><title>1-38 - Socket Connection Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/38/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/38/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>Connection was refused.&lt;/li>
&lt;li>Connection has been closed.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>You can use some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to analyze the stack information for diagnostics.&lt;/p></description></item><item><title>5-38 - Configuration parameter undefined</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/38/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/38/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Configuration parameter undefined&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Mainly used in test cases, configure the parameters according to the prompt details.&lt;/p></description></item><item><title>1-39 - Failed to retrieve metadata</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/39/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/39/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;ol>
&lt;li>The metadata center has been disconnected from the application service.&lt;/li>
&lt;li>The data of the metadata center has been modified or corrupted.&lt;/li>
&lt;/ol>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check if network communication is normal; you can use simple cmd commands for testing, such as &lt;code>ping&lt;/code>, etc.&lt;/li>
&lt;li>Use third-party tools to establish a connection and view the content.&lt;/li>
&lt;/ol></description></item><item><title>5-39 - Error occurred with Dubbo Config Bean Initializer</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/39/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/39/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Source code or modifications made&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check that the business code hasn’t modified the core classes or the order in which they are loaded.
For example: &lt;code>org.apache.dubbo.config.spring.context.DubboConfigBeanInitializer&lt;/code>&lt;/p></description></item><item><title>Dubbo 3.2.0-beta.2 Official Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/11/18/dubbo-3.2.0-beta.2-official-release/</link><pubDate>Fri, 18 Nov 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/11/18/dubbo-3.2.0-beta.2-official-release/</guid><description>&lt;h2 id="dubbo-320-beta2">Dubbo 3.2.0-beta.2&lt;/h2>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/release/3-2-0-beta-2.png">&lt;/p>
&lt;h3 id="changes">Changes&lt;/h3>
&lt;ul>
&lt;li>Switched to user thread serialization to enhance protocol performance&lt;/li>
&lt;li>Supported port reuse for Netty3&lt;/li>
&lt;li>Fixed the issue where providedBy does not work with multiple user configurations&lt;/li>
&lt;li>Supported istio&amp;rsquo;s first-party-jwt capability&lt;/li>
&lt;li>Removed transitive dependencies of fastjson and gson&lt;/li>
&lt;li>Supported optional appResponse non-transmission capability&lt;/li>
&lt;li>Switched to Fastjson2 as the default serialization dependency&lt;/li>
&lt;li>Improved the logs pushed by the registration center&lt;/li>
&lt;li>Fixed the issue where the routing refresh timing is earlier than the service directory refresh timing&lt;/li>
&lt;li>Disabled address null protection&lt;/li>
&lt;li>Updated SPI code generation to support GraalVM Native&lt;/li>
&lt;li>Supported transmitting xds channels in plain text mode&lt;/li>
&lt;li>Supported Nacos batch registration and fixed multi-registration overlay issues&lt;/li>
&lt;li>Supported Spring Framework 6 and Spring Boot 3&lt;/li>
&lt;li>Multiple code quality optimization commits&lt;/li>
&lt;li>All changes from the aforementioned Dubbo 3.1.3&lt;/li>
&lt;/ul>
&lt;h3 id="new-contributors">New Contributors&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://github.com/weixsun">@weixsun&lt;/a> made their first contribution in &lt;a href="https://github.com/apache/dubbo/pull/10941">#10941&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="future-release-planning">Future Release Planning&lt;/h2>
&lt;p>What are the differences between 3.0, 3.1, and 3.2? How will it develop in the future? What is the release cycle like? More version iteration plans will be announced soon, and you are welcome to follow the official Apache Dubbo WeChat account for the latest information.&lt;/p></description></item><item><title>1-40 - Route waiting time is too long</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/40/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/40/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The routing calculation takes too long, causing the address notification to not wait for a suitable time to perform the address update.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ol>
&lt;li>Check the application QPS; if the QPS is very high, this is expected logging.&lt;/li>
&lt;li>Check the implementation of custom routing to identify any abnormal implementations, such as deadlocks or infinite loops.&lt;/li>
&lt;li>You can use some third-party tools or &lt;code>jstack [PID] &amp;gt; jstack.log&lt;/code> to analyze stack information for diagnosis.&lt;/li>
&lt;/ol></description></item><item><title>5-40 - Dubbo configuration bean not found</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/40/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/40/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Source code or modification&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check that the business code has not modified the source code of core classes or altered the loading order.
For example: &lt;code>org.apache.dubbo.config.spring.context.DubboConfigBeanInitializer&lt;/code>&lt;/p></description></item><item><title>Introduction to Triple Listener</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/listener/triple/</guid><description>&lt;p>Welcome to claim and enrich this document.&lt;/p></description></item><item><title>Node.js</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/nodejs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/nodejs/</guid><description/></item><item><title>Dubbo AOT -- How to Implement Static Dubbo Applications using GraalVM Native Image</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/graalvm/support-graalvm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/graalvm/support-graalvm/</guid><description>&lt;p>In the Dubbo 3.3.0 version, we officially released the Dubbo AOT static solution. This document will introduce how to connect applications to GraalVM Native Image through Dubbo AOT technology, the process of compiling applications into native binary packages, and the components currently supported.&lt;/p>


&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Dubbo GraalVM adaptation document may be out of date&lt;/h4>

 &lt;p>Due to the rapid development of Dubbo AOT technology, this document may not always be up to date. Please refer to the following content for the latest information and usage:&lt;/p></description></item><item><title>1-41 - Istio Exception</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/41/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/41/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Failed to obtain the Istio configuration file.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check if the application is deployed in a Kubernetes Pod environment, as VM deployment is currently not supported.&lt;/p></description></item><item><title>5-41 - Failed to Read SSL Certificate</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/41/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/41/</guid><description>&lt;h3 id="possible-reasons">Possible Reasons&lt;/h3>
&lt;p>Abnormal SSL certificate configuration&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the SSL certificate configuration and see if the corresponding file exists&lt;/p></description></item><item><title>1-42 - Low Version Services Exist in Nacos</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/42/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/1/42/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The Nacos registry is subscribed to older version services, usually caused by the server-side Dubbo version being lower than 2.7.3.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Upgrade the server to the latest stable version.&lt;/p></description></item><item><title>5-42 - Dubbo Certificate Issuance Failure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/42/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/42/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>Dubbo failed to request the remote CA to issue a certificate.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ul>
&lt;li>Check CA connection configuration&lt;/li>
&lt;li>Check CA operational status&lt;/li>
&lt;li>Check CA logs&lt;/li>
&lt;/ul></description></item><item><title>Support Distributed Transactions with Seata</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/trasaction/distributed-transaction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/trasaction/distributed-transaction/</guid><description>&lt;p>This example demonstrates how to implement Dubbo distributed transaction functionality using Apache Seata to ensure data consistency.&lt;/p>
&lt;p>Apache Seata is an open-source distributed transaction solution that aims to provide high-performance and easy-to-use distributed transaction services under microservices architecture. Integrating Seata with Dubbo to achieve distributed transactions is very convenient, requiring just a few simple steps. This article will guide you through a quick experience with an example; the overall architecture diagram is as follows:&lt;/p></description></item><item><title>5-43 - Dubbo certificate issuance connection is insecure</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/43/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/5/43/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The connection between Dubbo and the remote CA is insecure.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;ul>
&lt;li>Check whether the Dubbo process has been correctly configured with the CA certificate information and the method for obtaining the OIDC (OpenID Connect) Token.&lt;/li>
&lt;/ul></description></item><item><title>Dubbo Java 2.7.14 Release Announcement</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/18/dubbo-java-2.7.14-release-announcement/</link><pubDate>Mon, 18 May 2020 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/18/dubbo-java-2.7.14-release-announcement/</guid><description>&lt;h2 id="changes">Changes&lt;/h2>
&lt;ul>
&lt;li>Added coverage rules for dynamic configuration center in ServiceDiscovery. (#8389)&lt;/li>
&lt;li>Fixed the issue where mock parameters containing &amp;lsquo;:&amp;rsquo; or &amp;lsquo;=&amp;rsquo; could not be used properly. (#8379)&lt;/li>
&lt;li>Fixed the issue where the zone parameter could not take effect for ZoneAwareClusterInvoker configuration. (#8521)&lt;/li>
&lt;li>Added a switch for serialization whitelist checks, default is true. (#8537)&lt;/li>
&lt;li>Fixed the null pointer exception during serialization checks when the request times out. (#8587)&lt;/li>
&lt;li>Fixed the issue where NetUtils.ignoreNetworkInterface could not handle network cards containing &amp;lsquo;(&amp;rsquo; symbol. (#8629)&lt;/li>
&lt;li>Unified the method for obtaining local addresses. (#8679)&lt;/li>
&lt;li>Fixed the issue where a retry count of 0 would still retry once. (#8743)&lt;/li>
&lt;li>Immediately close the client when clearing unused invokers. (#8756)&lt;/li>
&lt;li>Fixed exceptions in the destroy method and doOverrideIfNecessary. (#8683)&lt;/li>
&lt;li>DefaultFuture.closeChannel chooses whether to print detailed request data based on log level. (#8778)&lt;/li>
&lt;li>Replaced AttachmentsAdapter with MapUtils. (#8772)&lt;/li>
&lt;/ul>
&lt;h2 id="maven-dependency-changes">Maven Dependency Changes&lt;/h2>
&lt;ul>
&lt;li>netty4: 4.1.51.Final -&amp;gt; 4.1.66.Final&lt;/li>
&lt;li>netty4_ssl: 2.0.39.Final -&amp;gt; 2.0.40.Final&lt;/li>
&lt;li>http_client: 4.5.3 -&amp;gt; 4.5.13&lt;/li>
&lt;li>jetty: 9.4.11.v20180605 -&amp;gt; 9.4.43.v20210629&lt;/li>
&lt;li>apollo_client: 1.1.1 -&amp;gt; 1.8.0&lt;/li>
&lt;li>tomcat_embed: 8.5.31-&amp;gt; 9.0.48&lt;/li>
&lt;li>commons_io: 2.6 -&amp;gt; 2.7&lt;/li>
&lt;li>curator: 5.0.0 -&amp;gt; 5.1.0&lt;/li>
&lt;li>hessian_lite: 3.2.8 -&amp;gt; 3.2.11&lt;/li>
&lt;/ul></description></item><item><title>Install Dubbo Admin and Governance Components</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/setup/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/setup/install/</guid><description>&lt;h2 id="dubboctl-installation">Dubboctl Installation&lt;/h2>
&lt;h3 id="download">Download&lt;/h3>
&lt;p>Download the Dubbo Admin release version&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 -L https://dubbo.apache.org/installer.sh | &lt;span style="color:#268bd2">VERSION&lt;/span>&lt;span style="color:#719e07">=&lt;/span>0.1.0 sh -
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># Admin needs to organize the release versions well&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Put dubboctl into the executable path&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>ln -s dubbo-admin-0.1.0/bin/dubboctl /usr/local/bin/dubboctl
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="install">Install&lt;/h3>
&lt;p>The installation process will sequentially:&lt;/p>
&lt;ol>
&lt;li>Install some resources customized by Admin&lt;/li>
&lt;li>Pull up different component services such as Admin, Nacos, Zookeeper, etc.&lt;/li>
&lt;/ol>
&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>dubboctl install &lt;span style="color:#586e75"># Install using default manifests&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># or&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dubboctl manifests | kubectl apply -f -
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>dubboctl install --set &lt;span style="color:#268bd2">profile&lt;/span>&lt;span style="color:#719e07">=&lt;/span>minimal &lt;span style="color:#586e75"># Specify a different profile, i.e., combination of installation components&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>dubboctl install --set admin.nacos.enabled&lt;span style="color:#719e07">=&lt;/span>true, admin.nacos.namespace&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">test&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># Specify different override parameters&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Check the installation result&lt;/p></description></item><item><title>Mesh Routing Rules</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/mesh-rule/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/what/core-features/traffic/mesh-rule/</guid><description>&lt;p>Dubbo Mesh routing rules are based on Istio&amp;rsquo;s VirtualService and DestinationRule modifications. The overall idea and format can refer to Istio&amp;rsquo;s traffic control rules reference manual: &lt;a href="https://istio.io/latest/docs/reference/config/networking/virtual-service/">Istio VirtualService&lt;/a> and &lt;a href="https://istio.io/latest/docs/reference/config/networking/destination-rule/">Istio DestinationRule&lt;/a>&lt;/p>
&lt;p>This article describes the design principles of Dubbo Mesh routing rules, as well as the differences between them and Istio rules. Reference link: &lt;a href="https://www.yuque.com/docs/share/c132d5db-0dcb-487f-8833-7c7732964bd4?">https://www.yuque.com/docs/share/c132d5db-0dcb-487f-8833-7c7732964bd4?#&lt;/a>.&lt;/p>
&lt;h3 id="basic-idea">Basic Idea&lt;/h3>
&lt;p>Based on the routing chain, the Pipeline processing method is adopted, as shown in the figure below:&lt;/p></description></item><item><title>Python</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/python/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/python/</guid><description/></item><item><title>Result Cache Invocation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/result-cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/result-cache/</guid><description>&lt;h2 id="function-description">Function Description&lt;/h2>
&lt;p>Dubbo supports server-side and client-side result caching.&lt;/p>
&lt;h4 id="cache-types">Cache Types&lt;/h4>
&lt;p>Currently, versions 3.0 and above of Dubbo support the following built-in caching strategies:&lt;/p>
&lt;ul>
&lt;li>&lt;code>lru&lt;/code> removes excess cache based on the least recently used principle, keeping the hottest data cached.&lt;/li>
&lt;li>&lt;code>lfu&lt;/code> implements cache strategy based on the principle of evicting the least frequently used.&lt;/li>
&lt;li>&lt;code>expiring&lt;/code> implements cache strategy based on expiration time.&lt;/li>
&lt;li>&lt;code>threadlocal&lt;/code> caches in the current thread, for example in a page render when many portals are needed to query user information, using thread cache can reduce such unnecessary accesses.&lt;/li>
&lt;li>&lt;code>jcache&lt;/code> integrates with &lt;a href="http://jcp.org/en/jsr/detail?id=107%27">JSR107&lt;/a>, bridging various cache implementations.&lt;/li>
&lt;/ul>
&lt;p>Cache types are extensible &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/spi/description/cache">Cache Extension&lt;/a>&lt;/p></description></item><item><title>Route Status Collection</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/router-snapshot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/router-snapshot/</guid><description>&lt;h2 id="function-description">Function Description&lt;/h2>
&lt;p>The route status collection feature can be used to identify any potential issues that may affect service performance, to identify any potential bottlenecks or problems that may hinder the efficient use of services, ensuring smooth operation of services, and that users do not encounter any issues when trying to access services. It allows users to check whether the route is enabled or disabled, ensuring that only authorized services are used and access is limited to authorized personnel.&lt;/p></description></item><item><title>Service Reference Configuration Object Cache</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/reference-config-cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/reference-config-cache/</guid><description>&lt;h2 id="function-description">Function Description&lt;/h2>
&lt;p>&lt;code>ReferenceConfig&lt;/code> instances are heavy because they encapsulate the connections to the registry and the providers, necessitating caching. Otherwise, repeatedly generating &lt;code>ReferenceConfig&lt;/code> can lead to performance issues and memory and connection leaks. This problem is often overlooked in API-oriented programming.&lt;/p>
&lt;p>Therefore, starting from version &lt;code>2.4.0&lt;/code>, Dubbo provides a simple utility class &lt;code>ReferenceConfigCache&lt;/code> for caching &lt;code>ReferenceConfig&lt;/code> instances.&lt;/p>
&lt;h2 id="usage-scenarios">Usage Scenarios&lt;/h2>
&lt;p>In scenarios such as gateways where subscriptions are dynamically created, the &lt;code>ReferenceConfig&lt;/code> itself is heavy and creates many intermediate objects, while the proxy can be reused. Hence, &lt;code>ReferenceConfigCache&lt;/code> can cache these properties.&lt;/p></description></item><item><title>Admin</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/admin/</guid><description/></item><item><title>SPI Extensions</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/spi-extensions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/spi-extensions/</guid><description>&lt;h2 id="verify">Verify&lt;/h2>
&lt;p>You can follow the &lt;a href="https://www.apache.org/info/verification">steps&lt;/a> here, and use the &lt;a href="https://downloads.apache.org/dubbo/KEYS">KEYS&lt;/a> file to verify the download.&lt;/p>
&lt;blockquote>
&lt;p>GitHub: &lt;a href="https://github.com/apache/dubbo-spi-extensions">https://github.com/apache/dubbo-spi-extensions&lt;/a>&lt;br>
Release notes: &lt;a href="https://github.com/apache/dubbo-spi-extensions/releases">https://github.com/apache/dubbo-spi-extensions/releases&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="dubbo-spi-extensions-103-2022-11-28">Dubbo SPI Extensions 1.0.3 (2022-11-28)&lt;/h2>
&lt;h4 id="source-release">Source Release&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/dubbo-spi-extensions/1.0.2/apache-dubbo-extensions-1.0.2-src.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/dubbo-spi-extensions/1.0.2/apache-dubbo-extensions-1.0.2-src.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/dubbo-spi-extensions/1.0.2/apache-dubbo-extensions-1.0.2-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="maven-release">Maven Release&lt;/h4>
&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.dubbo.extensions&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>${component_name}&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>${component_version}&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;h4 id="included-components">Included Components&lt;/h4>
&lt;ul>
&lt;li>dubbo-cluster-extensions
&lt;ul>
&lt;li>dubbo-cluster-broadcast-1:1.0.1&lt;/li>
&lt;li>dubbo-cluster-loadbalance-peakewma:1.0.1&lt;/li>
&lt;li>dubbo-cluster-specify-address-dubbo3:1.0.1&lt;/li>
&lt;li>dubbo-cluster-specify-address-dubbo2:1.0.1&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-filter-extensions
&lt;ul>
&lt;li>dubbo-filter-seata:1.0.1&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-configcenter-extensions
&lt;ul>
&lt;li>dubbo-configcenter-consul:1.0.1&lt;/li>
&lt;li>dubbo-configcenter-etcd:1.0.1&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-metadata-report-extensions
&lt;ul>
&lt;li>dubbo-metadata-report-consul:1.0.1&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-remoting-extensions
&lt;ul>
&lt;li>dubbo-remoting-etcd3:1.0.1&lt;/li>
&lt;li>dubbo-metadata-report-etcd:1.0.1&lt;/li>
&lt;li>dubbo-remoting-quic:1.0.1&lt;/li>
&lt;li>dubbo-remoting-grizzly:1.0.1&lt;/li>
&lt;li>dubbo-remoting-mina:1.0.1&lt;/li>
&lt;li>dubbo-remoting-p2p:1.0.1&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-registry-extensions
&lt;ul>
&lt;li>dubbo-registry-dns:1.0.1&lt;/li>
&lt;li>dubbo-registry-consul:1.0.1&lt;/li>
&lt;li>dubbo-registry-etcd3:1.0.1&lt;/li>
&lt;li>dubbo-remoting-redis:1.0.1&lt;/li>
&lt;li>dubbo-registry-redis:1.0.1&lt;/li>
&lt;li>dubbo-registry-sofa:1.0.1&lt;/li>
&lt;li>dubbo-registry-nameservice:1.0.0&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-rpc-extensions
&lt;ul>
&lt;li>dubbo-rpc-native-thrift:1.0.1&lt;/li>
&lt;li>dubbo-rpc-http:1.0.1&lt;/li>
&lt;li>dubbo-rpc-webservice:1.0.1&lt;/li>
&lt;li>dubbo-rpc-rmi:1.0.1&lt;/li>
&lt;li>dubbo-rpc-hessian:1.0.1&lt;/li>
&lt;li>dubbo-rpc-memcached:1.0.1&lt;/li>
&lt;li>dubbo-rpc-redis:1.0.1&lt;/li>
&lt;li>dubbo-rpc-rocketmq:1.0.0&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>dubbo-serialization-extensions
&lt;ul>
&lt;li>dubbo-serialization-native-hessian:1.0.1&lt;/li>
&lt;li>dubbo-serialization-protostuff&lt;/li>
&lt;li>dubbo-serialization-protobuf:1.0.1&lt;/li>
&lt;li>dubbo-serialization-kryo:1.0.1&lt;/li>
&lt;li>dubbo-serialization-gson:1.0.1&lt;/li>
&lt;li>dubbo-serialization-fst:1.0.1&lt;/li>
&lt;li>dubbo-serialization-fastjson:1.0.1&lt;/li>
&lt;li>dubbo-serialization-avro:1.0.1&lt;/li>
&lt;li>dubbo-serialization-msgpack:1.0.1&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="all-dubbo-spi-extensions-status">All Dubbo SPI Extensions status&lt;/h2>
&lt;h3 id="dubbo-cluster">dubbo-cluster&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-cluster-broadcast-1&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-cluster-loadbalance-peakewma&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-cluster-specify-address-dubbo2&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-cluster-specify-address-dubbo3&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-configcenter">dubbo-configcenter&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-configcenter-consul&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-configcenter-etcd&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-filter">dubbo-filter&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-filter-seata&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-metadata-report">dubbo-metadata-report&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-metadata-report-consul&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-metadata-report-etcd&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-registry">dubbo-registry&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-dns&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">3.0.1 ~ 3.0.5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-kubernetes&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">3.0.1 ~ 3.0.5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-xds&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">3.0.1 ~ 3.0.5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-consul&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-etcd3&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-redis&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-sofa&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-registry-nameservice&lt;/td>
 &lt;td style="text-align: left">1.0.0&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-remoting">dubbo-remoting&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-remoting-quic&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-remoting-etcd3&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-remoting-grizzly&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-remoting-mina&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-remoting-p2p&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-remoting-redis&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-rpc">dubbo-rpc&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-native-thrift&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-http&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-webservice&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-rmi&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-hessian&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-memcached&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-redis&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-rpc-rocketmq&lt;/td>
 &lt;td style="text-align: left">1.0.0&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-serialization">dubbo-serialization&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-protostuff&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-protobuf&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-kryo&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-gson&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-fst&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-fastjson&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-avro&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-hession&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-serialization-msgpack&lt;/td>
 &lt;td style="text-align: left">1.0.1&lt;/td>
 &lt;td style="text-align: left">2.7.x ~ 3.x.x&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="dubbo-plugin">dubbo-plugin&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Module&lt;/th>
 &lt;th style="text-align: left">Version Number&lt;/th>
 &lt;th style="text-align: left">Adapted to Dubbo Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo-api-docs&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item><item><title>Pixiu</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/download/pixiu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/download/pixiu/</guid><description/></item><item><title>Log4j Vulnerability Impact</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/log4j/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/notices/log4j/</guid><description>&lt;p>Recently, the mainstream logging component &lt;a href="https://logging.apache.org/log4j/2.x/">log4j2&lt;/a> exposed a &lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228">security vulnerability CVE-2021-44228&lt;/a>.&lt;/p>
&lt;p>Below is a summary of the impact of vulnerability CVE-2021-44228 on the Apache Dubbo framework and user response guidelines.&lt;/p>
&lt;h2 id="dubbo-impact-range">Dubbo Impact Range&lt;/h2>
&lt;p>&lt;strong>This vulnerability does not affect the security use of the Dubbo framework.&lt;/strong>&lt;/p>
&lt;p>Dubbo itself does not strongly depend on the log4j2 framework, nor does it bring log4j2 into the business project through dependencies. Therefore, users using Dubbo versions 2.7.x, 3.0.x, etc., do not need to forcibly upgrade the Dubbo version.&lt;/p></description></item><item><title>安全漏洞</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/latest/notices/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/latest/notices/security/</guid><description>&lt;h2 id="1-log4j-cve-2021-44228-漏洞">1. Log4j CVE-2021-44228 漏洞&lt;/h2>
&lt;p>最近，主流日志组件 &lt;a href="https://logging.apache.org/log4j/2.x/">log4j2&lt;/a> 爆出&lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228">安全漏洞 CVE-2021-44228&lt;/a>。&lt;/p>
&lt;p>以下是漏洞 CVE-2021-44228 对 Apache Dubbo 框架的影响总结及用户应对指南。&lt;/p>
&lt;h2 id="dubbo-影响范围">Dubbo 影响范围&lt;/h2>
&lt;p>&lt;strong>该漏洞对 Dubbo 框架使用安全并无影响。&lt;/strong>&lt;/p>
&lt;p>Dubbo 本身不强依赖 log4j2 框架，也不会通过依赖传递将 log4j2 带到业务工程中去，因此，正在使用 Dubbo 2.7.x、3.0.x 等版本的用户均无需强制升级 Dubbo 版本。&lt;/p>
&lt;p>以下是 Dubbo 各组件对 log4j2 的依赖分析，涉及 &lt;code>dubbo-common&lt;/code>、&lt;code>dubbo-spring-boot-starter&lt;/code>、&lt;code>dubbo-spring-boot-actuator&lt;/code>：&lt;/p>
&lt;ul>
&lt;li>dubbo-common 包含对 &lt;code>log4j-core&lt;/code> 的可选依赖，请检查项目自身是否启用了 log4j 依赖，如启用则对应升级即可。&lt;/li>
&lt;/ul>
&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>[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ dubbo-common ---
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] org.apache.dubbo:dubbo-common:jar:2.7.14-SNAPSHOT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.11.1:provided
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.apache.logging.log4j:log4j-core:jar:2.11.1:provided
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>dubbo-spring-boot-starter 通过 spring-boot 组件传递了 log4j-api 依赖，log4j-api 本身并无安全问题，升级 log4j-core 组件时注意与 log4j-api 的兼容性&lt;/li>
&lt;/ul>
&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>[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ dubbo-spring-boot-starter ---
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] org.apache.dubbo:dubbo-spring-boot-starter:jar:2.7.14-SNAPSHOT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.springframework.boot:spring-boot-starter:jar:2.3.1.RELEASE:compile (optional) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.springframework.boot:spring-boot-starter-logging:jar:2.3.1.RELEASE:compile (optional) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.apache.logging.log4j:log4j-to-slf4j:jar:2.13.3:compile (optional) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.apache.logging.log4j:log4j-api:jar:2.13.3:compile (optional) 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>dubbo-spring-boot-actuator 通过 spring-boot 组件传递了 log4j-api 依赖，log4j-api 本身并无安全问题，升级 log4j-core 组件时应注意与 log4j-api 的兼容性&lt;/li>
&lt;/ul>
&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>[INFO] org.apache.dubbo:dubbo-spring-boot-actuator:jar:2.7.14-SNAPSHOT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.springframework.boot:spring-boot-starter-web:jar:2.3.1.RELEASE:compile (optional) 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.springframework.boot:spring-boot-starter:jar:2.3.1.RELEASE:compile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.springframework.boot:spring-boot-starter-logging:jar:2.3.1.RELEASE:compile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.apache.logging.log4j:log4j-to-slf4j:jar:2.13.3:compile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[INFO] \- org.apache.logging.log4j:log4j-api:jar:2.13.3:compile
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="2-序列化">2. 序列化&lt;/h2>
&lt;p>Dubbo 支持序列化协议的扩展，理论上用户可以基于该扩展机制启用任意的序列化协议，这带来了极大的灵活的，但同时也要意识到其中潜藏的安全性风险。
数据反序列化是最容易被被攻击者利用的一个环节，攻击者利用它执行 RCE 攻击等窃取或破坏服务端数据，用户在切换序列化协议或实现前，
应充分调研目标序列化协议及其框架实现的安全性保障，并提前设置相应的安全措施（如设置黑/白名单）。Dubbo 框架自身并不能保证目标序列化机制的安全性。&lt;/p></description></item><item><title>0-99 - Called a Deprecated Method</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/99/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/0/99/</guid><description>&lt;h3 id="possible-causes">Possible Causes&lt;/h3>
&lt;p>The user has called a deprecated method.&lt;/p>
&lt;h3 id="troubleshooting-and-resolution-steps">Troubleshooting and Resolution Steps&lt;/h3>
&lt;p>Check the user&amp;rsquo;s code for any methods that are marked as @Deprecated in the current version being used. If found, replace them with the corresponding methods; if not, you can ignore this.&lt;/p></description></item><item><title>Multiple Registration Centers</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/service-discovery/multi_registry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/service-discovery/multi_registry/</guid><description>&lt;p>A Dubbo application can configure multiple registration centers at different interface dimensions. Multiple registration centers can be used for cluster isolation, migration, and various other scenarios. For a more detailed explanation, refer to the &lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/multiple-registry/" target="_blank">Dubbo Java Multiple Registration Center Documentation&lt;/a>.&lt;/p>
&lt;h2 id="api-configuration-method">API Configuration Method&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-go" data-lang="go">&lt;span style="display:flex;">&lt;span>ins, _ &lt;span style="color:#719e07">:=&lt;/span> dubbo.&lt;span style="color:#268bd2">NewInstance&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithRegistry&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	 &lt;span style="color:#268bd2">registryWithID&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;nacos&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithNacos&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithAddress&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;127.0.0.1:8848&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	dubbo.&lt;span style="color:#268bd2">WithRegistry&lt;/span>(
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	 &lt;span style="color:#268bd2">registryWithID&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;zookeeper&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithZookeeper&lt;/span>(),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>		registry.&lt;span style="color:#268bd2">WithAddress&lt;/span>(&lt;span style="color:#2aa198">&amp;#34;127.0.0.1:2181&amp;#34;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Specify which registration center a service under a specific server should register to:&lt;/p></description></item><item><title>Parameter Validation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/parameter-validation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/parameter-validation/</guid><description>&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>The parameter validation feature is implemented based on &lt;a href="https://jcp.org/en/jsr/detail?id=303">JSR303&lt;/a>. Users only need to specify validation annotations from the JSR303 standard and implement validation through a declared filter.&lt;/p>
&lt;h4 id="maven-dependency">Maven Dependency&lt;/h4>
&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>javax.validation&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>validation-api&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>1.0.0.GA&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;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.hibernate&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>hibernate-validator&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>4.2.0.Final&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="usage-scenario">Usage Scenario&lt;/h2>
&lt;p>The server addresses various interface parameter validation issues when providing interface services externally.&lt;/p>
&lt;blockquote>
&lt;p>Reference Case
&lt;a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-validation">https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-validation&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h2 id="usage-method">Usage Method&lt;/h2>
&lt;h3 id="parameter-annotation-example">Parameter Annotation Example&lt;/h3>
&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>&lt;span style="color:#719e07">import&lt;/span> java.io.Serializable;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> java.util.Date;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Future;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Max;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Min;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.NotNull;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Past;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Pattern;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Size;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">ValidationParameter&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> Serializable {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> &lt;span style="color:#268bd2">static&lt;/span> &lt;span style="color:#268bd2">final&lt;/span> &lt;span style="color:#dc322f">long&lt;/span> serialVersionUID &lt;span style="color:#719e07">=&lt;/span> 7158911668568000392L;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@NotNull&lt;/span> &lt;span style="color:#586e75">// Cannot be null&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Size&lt;/span>(min &lt;span style="color:#719e07">=&lt;/span> 1, max &lt;span style="color:#719e07">=&lt;/span> 20) &lt;span style="color:#586e75">// Length or size range&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> String name;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@NotNull&lt;/span>(groups &lt;span style="color:#719e07">=&lt;/span> ValidationService.Save.class) &lt;span style="color:#586e75">// Cannot be null when saving, can be null when updating, indicating no update to this field&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Pattern&lt;/span>(regexp &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#2aa198">&amp;#34;^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> String email;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Min&lt;/span>(18) &lt;span style="color:#586e75">// Minimum value&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Max&lt;/span>(100) &lt;span style="color:#586e75">// Maximum value&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> &lt;span style="color:#dc322f">int&lt;/span> age;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Past&lt;/span> &lt;span style="color:#586e75">// Must be a past date&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> Date loginDate;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Future&lt;/span> &lt;span style="color:#586e75">// Must be a future date&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> Date expiryDate;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> String &lt;span style="color:#268bd2">getName&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> name;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">setName&lt;/span>(String name) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.name &lt;span style="color:#719e07">=&lt;/span> name;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> String &lt;span style="color:#268bd2">getEmail&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> email;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">setEmail&lt;/span>(String email) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.email &lt;span style="color:#719e07">=&lt;/span> email;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">int&lt;/span> &lt;span style="color:#268bd2">getAge&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> age;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">setAge&lt;/span>(&lt;span style="color:#dc322f">int&lt;/span> age) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.age &lt;span style="color:#719e07">=&lt;/span> age;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Date &lt;span style="color:#268bd2">getLoginDate&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> loginDate;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">setLoginDate&lt;/span>(Date loginDate) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.loginDate &lt;span style="color:#719e07">=&lt;/span> loginDate;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Date &lt;span style="color:#268bd2">getExpiryDate&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> expiryDate;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">setExpiryDate&lt;/span>(Date expiryDate) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">this&lt;/span>.expiryDate &lt;span style="color:#719e07">=&lt;/span> expiryDate;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="group-validation-example">Group Validation Example&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">ValidationService&lt;/span> { &lt;span style="color:#586e75">// Default can differentiate validation scenarios by service interface, e.g., @NotNull(groups = ValidationService.class) &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@interface&lt;/span> Save{} &lt;span style="color:#586e75">// Interface name same as method, capitalized first letter, used to differentiate validation scenarios, e.g., @NotNull(groups = ValidationService.Save.class), optional&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">save&lt;/span>(ValidationParameter parameter);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">update&lt;/span>(ValidationParameter parameter);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="related-validation-example">Related Validation Example&lt;/h3>
&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>&lt;span style="color:#719e07">import&lt;/span> javax.validation.GroupSequence;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">ValidationService&lt;/span> { 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@GroupSequence&lt;/span>(Update.class) &lt;span style="color:#586e75">// Validate Update group rules simultaneously&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@interface&lt;/span> Save{}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">save&lt;/span>(ValidationParameter parameter);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@interface&lt;/span> Update{} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">update&lt;/span>(ValidationParameter parameter);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="parameter-validation-example">Parameter Validation Example&lt;/h3>
&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>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.Min;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#719e07">import&lt;/span> javax.validation.constraints.NotNull;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">ValidationService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">save&lt;/span>(&lt;span style="color:#268bd2">@NotNull&lt;/span> ValidationParameter parameter); &lt;span style="color:#586e75">// Validate parameter is not null&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">delete&lt;/span>(&lt;span style="color:#268bd2">@Min&lt;/span>(1) &lt;span style="color:#dc322f">int&lt;/span> id); &lt;span style="color:#586e75">// Directly validate basic type parameter&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="validate-parameters-on-client">Validate Parameters on Client&lt;/h3>
&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;validationService&amp;#34;&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.examples.validation.api.ValidationService&amp;#34;&lt;/span> validation=&lt;span style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="validate-parameters-on-server">Validate Parameters on Server&lt;/h3>
&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:service&lt;/span> interface=&lt;span style="color:#2aa198">&amp;#34;org.apache.dubbo.examples.validation.api.ValidationService&amp;#34;&lt;/span> ref=&lt;span style="color:#2aa198">&amp;#34;validationService&amp;#34;&lt;/span> validation=&lt;span style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span> &lt;span style="color:#268bd2">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>&lt;strong>Dubbo supports hibernate-validator version &amp;lt;=6.x by default. If using hibernate-validator version 7.x, declare the validation parameter as jvalidationNew.&lt;/strong>&lt;/p></description></item><item><title>Reactive Programming</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/reactive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/framework/more/reactive/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Outdated Risk Reminder&lt;/h4>

 Please note that the Reactive usage methods described in this document may be outdated. Always refer to the latest reactive examples in apache/dubbo-samples for usage.

&lt;/div>

&lt;h2 id="feature-description">Feature Description&lt;/h2>
&lt;p>This feature is based on the Triple protocol and implemented using Project Reactor, supported from version &lt;code>3.1.0&lt;/code> onwards. Users only need to write an IDL file and specify the corresponding Generator for the protobuf plugin to generate and use Stub code that supports the reactive API.&lt;/p></description></item><item><title>Apache Dubbo 3.3 Released: Triple X Leads a New Era of Microservices Communication</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/09/11/apache-dubbo-3.3-released-triple-x-leads-a-new-era-of-microservices-communication/</link><pubDate>Wed, 11 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/09/11/apache-dubbo-3.3-released-triple-x-leads-a-new-era-of-microservices-communication/</guid><description>&lt;p>Apache Dubbo has surpassed 40,000 stars, and the team is proud to announce the official release of Dubbo 3.3! As a leading open-source microservices framework, Dubbo has always been committed to providing developers with high-performance, scalable, and flexible solutions for distributed services. The release of Dubbo 3.3, featuring the &lt;strong>Triple X&lt;/strong> upgrade, breaks previous limitations, achieving comprehensive support for both north-south and east-west traffic, and enhancing compatibility with cloud-native architectures.&lt;/p></description></item><item><title>Using Apache APISIX to Proxy Dubbo Services (Dubbo Protocol)</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/25/using-apache-apisix-to-proxy-dubbo-services-dubbo-protocol/</link><pubDate>Thu, 25 Apr 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/25/using-apache-apisix-to-proxy-dubbo-services-dubbo-protocol/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 This article is only applicable to the Dubbo protocol communication scenario. If you are a Dubbo3 user, it is recommended to use the triple protocol. Please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/22/use-apache-apisix-to-proxy-dubbo-services-triple-protocol/">Using Apache APISIX to Proxy Dubbo Services (Triple Protocol)&lt;/a> for specific examples.

&lt;/div>

&lt;p>&lt;a href="https://apisix.apache.org/">Apache APISIX&lt;/a> is a top-level open-source project of the Apache Software Foundation and the most active open-source gateway project currently. As a dynamic, real-time, high-performance open-source API gateway, Apache APISIX provides rich traffic management features such as load balancing, dynamic upstream, gray release, service circuit breaking, authentication, and observability.&lt;/p></description></item><item><title>How to Proxy Dubbo Services via Higress Gateway</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/01/how-to-proxy-dubbo-services-via-higress-gateway/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/04/01/how-to-proxy-dubbo-services-via-higress-gateway/</guid><description>&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Note&lt;/h4>

 This article is only applicable to Dubbo protocol communication scenarios. If you are a Dubbo3 user, it is recommended to use the triple protocol. Please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/gateway/triple/">Use Apache APISIX to Proxy Dubbo Services (triple protocol)&lt;/a> for specific examples.

&lt;/div>

&lt;p>Higress provides the capability to convert from HTTP protocol to Dubbo protocol. Users can expose a Dubbo service as an HTTP interface by configuring protocol conversion, thus allowing HTTP requests to invoke Dubbo interfaces. This article introduces how to configure HTTP to Dubbo protocol conversion using Higress through an example. The example guides you to easily deploy a Nacos server and a Dubbo service, then forwards HTTP requests to the Dubbo service registered in Nacos through Ingress, and accomplishes HTTP calls to the Dubbo service through Higress&amp;rsquo;s protocol conversion capability.&lt;/p></description></item><item><title>Tracing Dubbo With OpenTelemetry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/</link><pubDate>Wed, 31 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>This case shows using OpenTelemetry(otlp) as the Tracer in the Dubbo project to report the Trace information to the Otlp Collector, which then forwards it to Zipkin and Jagger. &lt;a href="https://github.com/conghuhu/dubbo-samples/tree/master/4-governance/dubbo-samples-tracing/dubbo-samples-spring-boot-tracing-otel-otlp">Code address&lt;/a>&lt;/p>
&lt;p>It consists of three parts：&lt;/p>
&lt;ul>
&lt;li>dubbo-samples-spring-boot-tracing-otel-oltp-interface&lt;/li>
&lt;li>dubbo-samples-spring-boot-tracing-otel-oltp-provider&lt;/li>
&lt;li>dubbo-samples-spring-boot-tracing-otel-oltp-consumer&lt;/li>
&lt;/ul>
&lt;h2 id="architecture">Architecture&lt;/h2>
&lt;p>&lt;img alt="architecture architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/observability/tracing/otlp/demo_arch.png">&lt;/p>
&lt;h2 id="quick-start">Quick Start&lt;/h2>
&lt;h3 id="install--start-otlp-collector">Install &amp;amp; start Otlp Collector&lt;/h3>
&lt;p>Follow &lt;a href="https://OpenTelemetry.io/docs/collector/getting-started/">OpenTelemetry Collector Quick Start&lt;/a> to start the otlp collector.&lt;/p>
&lt;h3 id="start-provider">Start Provider&lt;/h3>
&lt;p>Run &lt;code>org.apache.dubbo.springboot.demo.provider.ProviderApplication&lt;/code> directly from IDE.&lt;/p>
&lt;h3 id="start-consumer">Start Consumer&lt;/h3>
&lt;p>Start &lt;code>org.apache.dubbo.springboot.demo.consumer.ConsumerApplication&lt;/code> directly from IDE.&lt;/p></description></item><item><title>Apache Dubbo Next Generation Cloud Native Microservices Challenge Registration Open! Five Major Topics with a 500,000 RMB Prize Pool Await You</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/01/18/apache-dubbo-next-generation-cloud-native-microservices-challenge-registration-open-five-major-topics-with-a-500000-rmb-prize-pool-await-you/</link><pubDate>Thu, 18 Jan 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2024/01/18/apache-dubbo-next-generation-cloud-native-microservices-challenge-registration-open-five-major-topics-with-a-500000-rmb-prize-pool-await-you/</guid><description>&lt;p>This article provides a detailed interpretation of the competition topics. For the official registration channel of the OpenAtom Open Source Foundation, please refer to the link and QR code at the end of the article.&lt;/p>
&lt;h2 id="topic-interpretation">Topic Interpretation&lt;/h2>
&lt;p>We look forward to participating teams to continuously explore high-performance Triple (HTTP/3) protocol design, a robust Benchmark acceptance system, zero-trust solutions, and Service Mesh architecture, jointly defining the next generation cloud-native microservice system, bringing benefits in performance and security to the open-source community and enterprise users.&lt;/p></description></item><item><title>Generate Project Scaffolding via Template</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/12/31/generate-project-scaffolding-via-template/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/12/31/generate-project-scaffolding-via-template/</guid><description>&lt;p>&lt;a href="https://start.dubbo.apache.org/bootstrap.html" target="_blank">Dubbo Initializer&lt;/a> can be used to quickly generate Java project scaffolding, helping to simplify the setup, basic configuration, and component dependency management of microservice projects.&lt;/p>
&lt;blockquote>
&lt;p>The Initializer is still being updated, and more support for Dubbo Features will be released gradually.&lt;/p>
&lt;/blockquote>
&lt;h2 id="choose-dubbo-version">Choose Dubbo Version&lt;/h2>
&lt;p>The Initializer will use &lt;code>dubbo-spring-boot-starter&lt;/code> to create Spring Boot projects, so we need to first choose the versions of Dubbo and Spring Boot.&lt;/p>
&lt;p>&lt;img alt="initializer-choose-version" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/v3/tasks/develop/initializer-choose-version.png">&lt;/p>
&lt;h2 id="enter-basic-project-information">Enter Basic Project Information&lt;/h2>
&lt;p>Next, fill in the basic project information, including project coordinates, project name, package name, JDK version, etc.&lt;/p></description></item><item><title>IntelliJ IDEA❤️Apache Dubbo, Official IDEA Plugin Released!</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/23/intellij-idea%EF%B8%8Fapache-dubbo-official-idea-plugin-released/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/23/intellij-idea%EF%B8%8Fapache-dubbo-official-idea-plugin-released/</guid><description>&lt;p>The most popular Java Integrated Development Environment, IntelliJ IDEA, has teamed up with the open-source microservices framework Apache Dubbo community, bringing great news to microservices developers. Alongside IntelliJ IDEA version 2023.2, &lt;strong>Jetbrains officially released a new plugin - Apache Dubbo in Spring Framework&lt;/strong>.&lt;/p>
&lt;p>&lt;img alt="IntelliJ IDEA loves️ Apache Dubbo" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/2023/10/plugin/img_6.png">&lt;/p>
&lt;p>This plugin helps developers address Dubbo project initialization issues and facilitates the identification of Dubbo services and their dependencies during the project development process, making microservice development based on Apache Dubbo very simple.&lt;/p></description></item><item><title>Apache Dubbo's First Node.js 3.0-alpha Version Officially Released</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/07/apache-dubbos-first-node.js-3.0-alpha-version-officially-released/</link><pubDate>Sat, 07 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/07/apache-dubbos-first-node.js-3.0-alpha-version-officially-released/</guid><description>&lt;h1 id="about-apache-dubbo3">About Apache Dubbo3&lt;/h1>
&lt;p>Apache Dubbo is an easy-to-use, high-performance WEB and RPC framework, providing capabilities, tools, and best practices for creating enterprise-level microservices including service discovery, traffic governance, observability, and authentication. After several years of development, Dubbo3 has been widely promoted across Alibaba Group’s business lines, successfully replacing the HSF framework that had been in operation for years; meanwhile, the multi-language ecosystem of Dubbo3 has also developed rapidly, currently covering:&lt;/p></description></item><item><title>Best Practices for Microservices: Zero Refactoring to Achieve Interoperability Between Spring Cloud and Apache Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/07/best-practices-for-microservices-zero-refactoring-to-achieve-interoperability-between-spring-cloud-and-apache-dubbo/</link><pubDate>Sat, 07 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/07/best-practices-for-microservices-zero-refactoring-to-achieve-interoperability-between-spring-cloud-and-apache-dubbo/</guid><description>&lt;p>&lt;strong>This article uses real projects and code as examples, demonstrating step by step how to achieve interoperability between the Apache Dubbo system and the Spring Cloud system with minimal cost, enabling hybrid deployment and migration of different microservice systems, helping you solve practical architectural and business issues.&lt;/strong>&lt;/p>
&lt;h2 id="background-and-goals">Background and Goals&lt;/h2>
&lt;p>If you are facing the following business scenarios during microservice development, this article can help you:&lt;/p>
&lt;ul>
&lt;li>You already have a microservice application built on Dubbo, and now you need to publish some services through REST HTTP without changing the code, just adding some configurations and annotations for the pre-written Dubbo services.&lt;/li>
&lt;li>You have a microservice system based on Spring Cloud and later built a set of microservices on Dubbo. You want both systems to coexist, requiring mutual access to services published by each other.&lt;/li>
&lt;li>Due to historical reasons, you are planning to migrate from one microservice system to another, ensuring a smooth transition in the process.&lt;/li>
&lt;/ul>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/2023/9/springcloud/img.png">&lt;/p></description></item><item><title>Can web browser pages access Dubbo and gRPC microservices? Dubbo-js alpha version officially released</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/07/can-web-browser-pages-access-dubbo-and-grpc-microservices-dubbo-js-alpha-version-officially-released/</link><pubDate>Sat, 07 Oct 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/10/07/can-web-browser-pages-access-dubbo-and-grpc-microservices-dubbo-js-alpha-version-officially-released/</guid><description>&lt;p>Based on the Triple protocol defined by Dubbo3, you can easily write browser and gRPC-compatible RPC services, allowing these services to run simultaneously on HTTP/1 and HTTP/2. The &lt;a href="https://github.com/apache/dubbo-js/">Dubbo TypeScript SDK&lt;/a> supports defining services using IDL or language-specific approaches and provides a lightweight API to publish or invoke these services.&lt;/p>
&lt;p>Dubbo-js has officially released its first alpha version supporting the Dubbo3 protocol in September, which promises to transform the architecture and communication models between front-end and back-end of microservices, enabling direct access to back-end Dubbo RPC services from browser pages or web servers. The project is rapidly evolving, and developers interested in participating in the apache/dubbo-js project are welcome to search for the DingTalk group: &lt;strong>29775027779&lt;/strong> to join the developer group.&lt;/p></description></item><item><title>CoC Asia 2023 Conference Highlights</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/08/25/coc-asia-2023-conference-highlights/</link><pubDate>Fri, 25 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/08/25/coc-asia-2023-conference-highlights/</guid><description>&lt;p>This includes the complete transcripts of the speeches and highlights from the event. For more PPTs and video recordings, please follow the &amp;ldquo;apachedubbo&amp;rdquo; WeChat official account.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/%E5%9F%BA%E4%BA%8E-triple-%E5%AE%9E%E7%8E%B0-web-%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%90%8E%E7%AB%AF%E5%85%A8%E9%9D%A2%E6%89%93%E9%80%9A/">Realizing Full Connectivity of Web, Mobile, and Backend Microservices Based on Triple Protocol&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E9%83%A8%E7%BD%B2dubbo%E5%BA%94%E7%94%A8%E5%88%B0kubernetes-apache-dubbo-kubernetes-%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/">Step-by-Step Guide to Deploying Dubbo Applications on Kubernetes - Best Practices for Apache Dubbo &amp;amp; Kubernetes&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/apache-dubbo-%E4%BA%91%E5%8E%9F%E7%94%9F%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7%E7%9A%84%E6%8E%A2%E7%B4%A2%E4%B8%8E%E5%AE%9E%E8%B7%B5/">Exploration and Practice of Cloud-Native Observability in Apache Dubbo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/opensergo-dubbo-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/">Best Practices for Opensergo &amp;amp; Dubbo Microservices Governance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/seata-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E4%B8%8B%E7%9A%84%E4%B8%80%E7%AB%99%E5%BC%8F%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/">One-Stop Distributed Transaction Solution under Seata Microservices Architecture&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/%E5%90%AF%E5%8A%A8%E9%80%9F%E5%BA%A6%E6%8F%90%E5%8D%8710%E5%80%8Dapache-dubbo-%E9%9D%99%E6%80%81%E5%8C%96-graalvm-native-image-%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90/">10x Startup Speed Improvement: Deep Dive into Apache Dubbo - Static GraalVM Native Image&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/zh-cn/blog/2023/10/07/%E6%94%BF%E9%87%87%E4%BA%91%E5%9F%BA%E4%BA%8Edubbo%E7%9A%84%E6%B7%B7%E5%90%88%E4%BA%91%E6%95%B0%E6%8D%AE%E8%B7%A8%E7%BD%91%E5%AE%9E%E8%B7%B5/">Hybrid Cloud Data Cross-Network Practice Based on Dubbo by Government Procurement Cloud&lt;/a>&lt;/li>
&lt;li>Distributed Construction and Transformation Practice of Industrial and Commercial Bank of China&lt;/li>
&lt;/ul>
&lt;p>&lt;img alt="dubbo-members-justin" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/2023/8/apachecon-summary/dubbo-members-justin.jpg">&lt;/p></description></item><item><title>Dubbo Microservices Forum - See You at the ApacheCon Conference in Beijing on August 19</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/08/07/dubbo-microservices-forum-see-you-at-the-apachecon-conference-in-beijing-on-august-19/</link><pubDate>Mon, 07 Aug 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/08/07/dubbo-microservices-forum-see-you-at-the-apachecon-conference-in-beijing-on-august-19/</guid><description>&lt;p>The Dubbo Microservices Forum will be held on the afternoon of August 19 at the Lihong Huayuan Hotel in Beijing. As a key topic of the CommunityOverCode Asia 2023 (formerly ApacheCon Asia), we will focus on Apache Dubbo and bring you exciting content on the development direction of open-source microservices technology, cloud-native microservices selection, and enterprise practice sharing!&lt;/p>
&lt;p>Open the &lt;a href="https://www.bagevent.com/event/cocasia-2023">official ticket purchase link&lt;/a>, enter the cocasia discount code for a 20% discount!&lt;/p></description></item><item><title>GLCC x Apache Dubbo Programming Summer Camp Registration Starts</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/07/05/glcc-x-apache-dubbo-programming-summer-camp-registration-starts/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/07/05/glcc-x-apache-dubbo-programming-summer-camp-registration-starts/</guid><description>&lt;h2 id="background-introduction">Background Introduction&lt;/h2>
&lt;p>The GitLink Programming Summer Camp (GLCC) is a summer programming activity for university students across the country, organized by the CCF Open Source Development Committee (CCF ODC) under the guidance of the CCF China Computer Federation. The activity will cover nearly a thousand universities and will collaborate with major open-source foundations, open-source companies, open-source communities, and open-source experts. The aim is to encourage young students to improve their technical abilities by participating in real open source software development and to nurture outstanding talents for the open source community. It provides a friendly and open communication platform for young students and hopes to further promote the prosperity and development of the domestic open source community.&lt;/p></description></item><item><title>Towards Native: Spring &amp; Dubbo AOT Technical Examples and Principles Explanation</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/06/28/towards-native-spring-dubbo-aot-technical-examples-and-principles-explanation/</link><pubDate>Wed, 28 Jun 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/06/28/towards-native-spring-dubbo-aot-technical-examples-and-principles-explanation/</guid><description>&lt;p>Java applications face issues such as slow “cold start”, high memory usage, and long warm-up times in the cloud computing era, making it difficult to adapt to cloud deployment models like Serverless. GraalVM addresses these issues significantly through static compilation and packaging techniques, and mainstream frameworks such as Spring and Dubbo provide corresponding AOT solutions to some of the limitations of GraalVM.&lt;/p>
&lt;p>In this article, we will analyze the challenges faced by Java applications in the cloud era, how GraalVM Native Image addresses these issues, the basic concepts and working principles of GraalVM, and finally demonstrate how to statically package a typical microservice application with an example using Spring6 and Dubbo3.&lt;/p></description></item><item><title>Apache Dubbo Open Source Summer 2023, Contributing to the Community to Win 12,000 in Bonuses</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/05/15/apache-dubbo-open-source-summer-2023-contributing-to-the-community-to-win-12000-in-bonuses/</link><pubDate>Mon, 15 May 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/05/15/apache-dubbo-open-source-summer-2023-contributing-to-the-community-to-win-12000-in-bonuses/</guid><description>&lt;p>Welcome students to participate in Apache Dubbo Open Source Summer. Community mentors will guide you to &lt;strong>make your code widely reused in society and earn up to 12,000 in bonuses. You can&lt;/strong> also get a job/internship recommendation at your desired company, &lt;strong>gaining money, growth, and value&lt;/strong>. What are you waiting for? Registration is closing soon, join the Apache Dubbo Open Source Summer.&lt;/p>
&lt;h2 id="what-is-ospp-open-source-summer">What is OSPP Open Source Summer?&lt;/h2>
&lt;p>The Open Source Summer is a summer open-source program initiated and supported by the &amp;ldquo;Open Source Software Supply Chain Lighting Project,&amp;rdquo; aimed at encouraging &lt;strong>students&lt;/strong> to actively participate in the development and maintenance of open-source software, promoting the vigorous development of excellent open-source communities, and nurturing more outstanding developers.&lt;/p></description></item><item><title>Advancing Cloud Native - Dubbo 3.2 Official Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/04/15/advancing-cloud-native-dubbo-3.2-official-release/</link><pubDate>Sat, 15 Apr 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/04/15/advancing-cloud-native-dubbo-3.2-official-release/</guid><description>&lt;h2 id="background-introduction">Background Introduction&lt;/h2>
&lt;p>Apache Dubbo is an RPC service development framework designed to solve service governance and communication issues in microservice architectures, with official SDK implementations in Java, Golang, and other languages. Microservices developed with Dubbo possess inherent capabilities for remote address discovery and communication, leveraging Dubbo&amp;rsquo;s rich service governance features to fulfill service governance needs such as service discovery, load balancing, and traffic management. Dubbo is designed to be highly extensible, allowing users to easily implement various custom logic for traffic interception and location selection.&lt;/p></description></item><item><title>2022 Annual Summary and 2023 New Year Plan</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/02/23/2022-annual-summary-and-2023-new-year-plan/</link><pubDate>Thu, 23 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/02/23/2022-annual-summary-and-2023-new-year-plan/</guid><description>&lt;p>&lt;img alt="dubbo-introduction" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/2023/2/roadmap/2023-roadmap.jpg">&lt;/p>
&lt;h2 id="2022-annual-summary">2022 Annual Summary&lt;/h2>
&lt;h3 id="1-dubbo-open-source-12th-anniversary">1 Dubbo Open Source 12th Anniversary&lt;/h3>
&lt;p>50k+ stars, 30k forks, 1000+ contributors&lt;/p>
&lt;h3 id="2-dubbo3-milestones">2 Dubbo3 Milestones&lt;/h3>
&lt;h3 id="achieved-large-scale-production-verification">Achieved Large-Scale Production Verification&lt;/h3>
&lt;p>Alibaba&amp;rsquo;s core microservice cluster achieved a comprehensive upgrade from HSF to Dubbo3, successfully supporting trillion-level service calls during Double Eleven and Double Twelve.&lt;/p>
&lt;h3 id="focus-on-multi-language-ecosystem">Focus on Multi-Language Ecosystem&lt;/h3>
&lt;h4 id="production-ready-conditions">Production-Ready Conditions&lt;/h4>
&lt;p>Java, Go&lt;/p>
&lt;h4 id="from-incubation-to-maturity">From Incubation to Maturity&lt;/h4>
&lt;p>Rust, Node.js, Python&lt;/p>
&lt;h3 id="3-core-technologies">3 Core Technologies&lt;/h3>
&lt;p>Application-Level Service Discovery
HTTP/2 Protocol
Traffic Control Upgrade
Observability
Adaptive Load Balancing
Proxyless Mesh
Spring Boot 3 &amp;amp; Spring 6&lt;/p></description></item><item><title>A Quick Guide to Understanding the Core Capabilities of Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/02/23/a-quick-guide-to-understanding-the-core-capabilities-of-dubbo/</link><pubDate>Thu, 23 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/02/23/a-quick-guide-to-understanding-the-core-capabilities-of-dubbo/</guid><description>&lt;h2 id="introduction-to-dubbo">Introduction to Dubbo&lt;/h2>
&lt;h3 id="one-sentence-definition">One-Sentence Definition&lt;/h3>
&lt;p>Apache Dubbo is a microservices development framework that helps solve communication problems in microservices development while providing service governance capabilities for building enterprise-level microservices. Dubbo is not tied to a specific programming language; our goal is to provide a peer-to-peer microservices development experience for all mainstream languages.
&lt;img alt="overview" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/2023/2/introduction/1-overview.jpg">&lt;/p>
&lt;h3 id="basic-architecture">Basic Architecture&lt;/h3>
&lt;p>&lt;img alt="overview" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/2023/2/introduction/2-arc.jpg">&lt;/p>
&lt;p>Dubbo&amp;rsquo;s architecture is divided into the data plane and control plane. In the data plane, microservices developed with Dubbo communicate via the RPC protocol. The DubboAdmin control plane serves as an abstract entry point for service governance, composed of a series of optional service governance components responsible for service discovery, traffic control policies, and visual monitoring of Dubbo clusters.&lt;/p></description></item><item><title>Exploration and Improvement of Dubbo in Proxyless Mesh Mode</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/02/02/exploration-and-improvement-of-dubbo-in-proxyless-mesh-mode/</link><pubDate>Thu, 02 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/02/02/exploration-and-improvement-of-dubbo-in-proxyless-mesh-mode/</guid><description>&lt;h2 id="i-background">I. Background&lt;/h2>
&lt;p>With the emergence of Docker and Kubernetes, a large monolithic application can be split into multiple independently deployed microservices, packaged, and run in corresponding containers. Different applications communicate with each other to jointly complete a function module. The benefits of microservices architecture and containerized deployment are evident as they reduce the coupling between services, facilitate development and maintenance, and make better use of computing resources. However, microservices architecture also has corresponding drawbacks:&lt;/p></description></item><item><title>Dubbo 3.1.5 and 3.2.0-beta.4 Official Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/30/dubbo-3.1.5-and-3.2.0-beta.4-official-release/</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/30/dubbo-3.1.5-and-3.2.0-beta.4-official-release/</guid><description>&lt;p>Dubbo 3.1.5 is the latest stable version of Dubbo 3, and we recommend all users upgrade to the latest stable version. Dubbo 3.2.0-beta.4 is the latest feature version of Dubbo 3, supporting new features such as Spring Boot 3, JDK 17, and service-grained thread pool isolation. We welcome everyone to try it out.&lt;/p>
&lt;h1 id="dubbo-315">Dubbo 3.1.5&lt;/h1>
&lt;p>&lt;img alt="image.png" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/release/3-1-5.png">&lt;/p>
&lt;h3 id="new-features">New Features&lt;/h3>
&lt;ul>
&lt;li>Dubbo QoS supports request logging for auditing&lt;/li>
&lt;li>Supports timed retries after service mapping failures to reduce the impact of metadata center fluctuations&lt;/li>
&lt;li>Supports health checks when initializing the Nacos Client, with retries allowed under certain limits if it fails, reducing stability issues due to Nacos performance&lt;/li>
&lt;li>Supports a serialization class check mechanism, with log alert mode enabled by default&lt;/li>
&lt;/ul>
&lt;h3 id="bugfix">Bugfix&lt;/h3>
&lt;ul>
&lt;li>Fix the log level of the resource loader&lt;/li>
&lt;li>Fix lazy loading of the Scope Model in the Dubbo configuration class to avoid triggering unintended default module initialization&lt;/li>
&lt;li>Fix logic for obtaining ClassLoader in ReferenceConfig&lt;/li>
&lt;li>Fix NPE issue when the Metadata Service retrieves the subscription service list&lt;/li>
&lt;li>Fix issue with Metadata configuration override when integrating with Spring Cloud Rest mode&lt;/li>
&lt;li>Fix potential deadlock issue during Spring lazy loading&lt;/li>
&lt;li>Fix invalid logs for duplicated ports&lt;/li>
&lt;li>Fix issue where Active Limit Filter is ineffective&lt;/li>
&lt;li>Fix issue of invalid writing during Nacos CAS checks on service mapping&lt;/li>
&lt;li>Fix single-node service not found issue during service publishing in Zookeeper registry for application-level service discovery&lt;/li>
&lt;li>Fix high conflict rate issue due to unawaited conflicts after service mapping&lt;/li>
&lt;li>Fix node update failure issue in application-level service discovery&lt;/li>
&lt;li>Fix ineffective application-level configuration overrides&lt;/li>
&lt;li>Fix issue with original Revision metadata being inaccessible after application-level address refresh&lt;/li>
&lt;li>Fix issue where Zookeeper registry unsubscribes application-level service discovery and cannot resubscribe&lt;/li>
&lt;li>Compatibility fix for Nacos consistency errors during frequent refreshes&lt;/li>
&lt;li>Disable local cache switch for Nacos&lt;/li>
&lt;li>Fix issue of ineffective uppercase Attachment transmission in Triple&lt;/li>
&lt;li>Fix deserialization errors for specific classes in Triple processing&lt;/li>
&lt;li>Fix unexpected exceptions thrown when Protobuf dependencies do not exist&lt;/li>
&lt;li>Fix ineffective CountDown feature&lt;/li>
&lt;li>Fix ClassLoader not switching during Triple deserialization&lt;/li>
&lt;/ul>
&lt;h3 id="faq">FAQ&lt;/h3>
&lt;p>This release includes 5 commits related to the improvement of exception log FAQs. For more information on error code mechanisms, please refer to the official website &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/java-sdk/reference-manual/faq/intro/">Error Code Mechanism Introduction&lt;/a>.&lt;/p></description></item><item><title>Dubbo3 Application-Level Service Discovery Design</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/30/dubbo3-application-level-service-discovery-design/</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/30/dubbo3-application-level-service-discovery-design/</guid><description>&lt;h2 id="objective">Objective&lt;/h2>
&lt;ul>
&lt;li>Significantly reduce resource consumption during the service discovery process, including increasing the registration center&amp;rsquo;s capacity limit and reducing resource usage for consumer address resolution, allowing the Dubbo3 framework to support larger-scale cluster service governance and achieve unlimited horizontal scalability.&lt;/li>
&lt;li>Adapt to underlying infrastructure service discovery models such as Kubernetes, Service Mesh, etc.&lt;/li>
&lt;/ul>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>&lt;img alt="interface-arc" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/proposals/discovery/arc.png">&lt;/p>
&lt;p>We start with the classic working principle diagram of Dubbo; from its design inception, Dubbo has built-in capabilities for service address discovery. Providers register their addresses with the registration center, and consumers subscribe to receive real-time updates about address changes from the registration center. Upon receiving the address list, consumers initiate RPC calls to providers based on specific load balancing strategies.&lt;/p></description></item><item><title>Heuristic Flow Control</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/30/heuristic-flow-control/</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2023/01/30/heuristic-flow-control/</guid><description>&lt;h1 id="overview">Overview&lt;/h1>
&lt;p>The flexible services discussed in this article primarily refer to &lt;strong>load balancing on the consumer side&lt;/strong> and &lt;strong>rate limiting on the provider side&lt;/strong>. In previous versions of Dubbo,&lt;/p>
&lt;ul>
&lt;li>The load balancing component primarily focused on the principle of fairness, meaning that the consumer would choose from providers as equally as possible, which did not perform ideally in certain situations.&lt;/li>
&lt;li>The rate limiting component provided only static rate limiting schemes, requiring users to set static maximum concurrency values on the provider side, which are not easy for users to select reasonably.&lt;/li>
&lt;/ul>
&lt;p>We have made improvements to address these issues.&lt;/p></description></item><item><title>Apache Dubbo Adds a New Member to Its Multilingual System: The First Rust Language Version is Officially Released</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/10/23/apache-dubbo-adds-a-new-member-to-its-multilingual-system-the-first-rust-language-version-is-officially-released/</link><pubDate>Sun, 23 Oct 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/10/23/apache-dubbo-adds-a-new-member-to-its-multilingual-system-the-first-rust-language-version-is-officially-released/</guid><description>&lt;p>Dubbo Rust is positioned as an important implementation of the Dubbo multilingual system, providing a high-performance, easy-to-use, and extensible RPC framework, while offering rich service governance capabilities through integration with the Dubbo Mesh system. This article mainly introduces the basic situation of the Dubbo Rust project, quickly experiences the features of Rust&amp;rsquo;s first official version through an example, and outlines recent plans for the Dubbo Rust community, suitable for developers and enterprises interested in or adopting Rust.&lt;/p></description></item><item><title>How to proxy Dubbo service in Apache ShenYu Gateway</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/</link><pubDate>Wed, 04 May 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/</guid><description>&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/shenyu-dubbo/ApacheShenYu-Dubbo-en.png">&lt;/p>
&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;ul>
&lt;li>Apache ShenYu&lt;/li>
&lt;/ul>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/shenyu-dubbo/shenyu.png">&lt;/p>
&lt;p>&lt;a href="https://shenyu.apache.org/docs/index">Apache ShenYu(Incubating)&lt;/a> is an asynchronous, high-performance, cross-language, responsive &lt;code>API&lt;/code> gateway. Compatible with a variety of mainstream framework systems, support for hot-plugging, users can customize the development to meet the current and future needs of users in a variety of scenarios, experienced large-scale scenarios hammered.&lt;/p>
&lt;p>In May 2021, &lt;code>ShenYu&lt;/code> was donated to the &lt;code>Apache&lt;/code> Software Foundation, and the Apache Foundation voted unanimously to enter the incubator.&lt;/p></description></item><item><title>How to Proxy Dubbo Services through Apache ShenYu Gateway</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/05/04/how-to-proxy-dubbo-services-through-apache-shenyu-gateway/</link><pubDate>Wed, 04 May 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/05/04/how-to-proxy-dubbo-services-through-apache-shenyu-gateway/</guid><description>&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/shenyu-dubbo/ApacheShenYu-Dubbo-en.png">&lt;/p>
&lt;h2 id="1-introduction">1. Introduction&lt;/h2>
&lt;ul>
&lt;li>Apache ShenYu&lt;/li>
&lt;/ul>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/shenyu-dubbo/shenyu.png">&lt;/p>
&lt;p>&lt;a href="https://shenyu.apache.org/docs/index">Apache ShenYu(Incubating)&lt;/a> is an asynchronous, high-performance, cross-language, and responsive &lt;code>API&lt;/code> gateway. Compatible with various mainstream framework systems, it supports hot swapping, and users can customize development to meet various current and future needs through large-scale scenario testing.&lt;/p>
&lt;p>In May 2021, &lt;code>ShenYu&lt;/code> was donated to the &lt;code>Apache&lt;/code> Software Foundation, which was fully approved by the Apache Foundation and successfully entered the incubator.&lt;/p>
&lt;ul>
&lt;li>Apache Dubbo&lt;/li>
&lt;/ul>
&lt;p>&lt;code>Apache Dubbo&lt;/code> is a microservices development framework that provides two key capabilities: &lt;code>RPC&lt;/code> communication and microservice governance. This means that microservices developed using &lt;code>Dubbo&lt;/code> will have remote discovery and communication capabilities among themselves, while utilizing the rich service governance capabilities provided by Dubbo to implement service governance requirements such as service discovery, load balancing, and traffic scheduling. Additionally, &lt;code>Dubbo&lt;/code> is highly extensible, allowing users to customize their implementations at almost any function point to change the default behavior of the framework to meet their business needs.&lt;/p></description></item><item><title>Makes it More Convenient for You to Proxy Dubbo Services in Apache APISIX</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/</link><pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/">Apache Dubbo&lt;/a> is a MicroService development framework open sourced by Alibaba and donated to Apache, which provides two key capabilities of RPC communication and microservice governance. It has not only been validated by Ali&amp;rsquo;s massive traffic in e-commerce scenario, but also been widely implemented in domestic technology companies.&lt;/p>
&lt;p>In practical application scenarios, Apache Dubbo is generally used as the implementation framework for RPC calls between back-end systems, and when HTTP interfaces need to be provided to the front-end, the Dubbo Service is packaged as an HTTP interface through a &amp;ldquo;glue layer&amp;rdquo; and then delivered to the front-end system.&lt;/p></description></item><item><title>2.7.14 Release Note</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/09/20/2.7.14-release-note/</link><pubDate>Mon, 20 Sep 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/09/20/2.7.14-release-note/</guid><description>&lt;h2 id="change-lists">Change Lists&lt;/h2>
&lt;ul>
&lt;li>add Dynamic Configuration Override Support For ServiceDiscovery. (#8389)&lt;/li>
&lt;li>fix mock parameters doesn&amp;rsquo;t work when it contain &amp;lsquo;:&amp;rsquo; or &amp;lsquo;=&amp;rsquo;. (#8379)&lt;/li>
&lt;li>fix the issue of taking the zone parameter value in ZoneAwareClusterInvoker. (#8521)&lt;/li>
&lt;li>add the switch for check class is in serialize white list , default is true. (#8537)&lt;/li>
&lt;li>fix NPE on serialization checking when request timed out. (#8587)&lt;/li>
&lt;li>fix NetUtils.ignoreNetworkInterface can&amp;rsquo;t process network card name contains &amp;lsquo;(&amp;rsquo; symbol. (#8629)&lt;/li>
&lt;li>unify the way of getting local address. (#8679)&lt;/li>
&lt;li>fix retries param didn&amp;rsquo;t work well when it is 0. (#8743)&lt;/li>
&lt;li>close client immediately when destroy unused invoker. (#8756)&lt;/li>
&lt;li>fix destroy IllegalStateException and doOverrideIfNecessary NPE. (#8683)&lt;/li>
&lt;li>show message according to log level when DefaultFuture.closeChannel. (#8778)&lt;/li>
&lt;li>use MapUtils instead of AttachmentsAdapter. (#8772)&lt;/li>
&lt;/ul>
&lt;h2 id="dependency-changes">Dependency Changes&lt;/h2>
&lt;ul>
&lt;li>netty4: 4.1.51.Final -&amp;gt; 4.1.66.Final&lt;/li>
&lt;li>netty4_ssl: 2.0.39.Final -&amp;gt; 2.0.40.Final&lt;/li>
&lt;li>http_client: 4.5.3 -&amp;gt; 4.5.13&lt;/li>
&lt;li>jetty: 9.4.11.v20180605 -&amp;gt; 9.4.43.v20210629&lt;/li>
&lt;li>apollo_client: 1.1.1 -&amp;gt; 1.8.0&lt;/li>
&lt;li>tomcat_embed: 8.5.31-&amp;gt; 9.0.48&lt;/li>
&lt;li>commons_io: 2.6 -&amp;gt; 2.7&lt;/li>
&lt;li>curator: 5.0.0 -&amp;gt; 5.1.0&lt;/li>
&lt;li>hessian_lite: 3.2.8 -&amp;gt; 3.2.11&lt;/li>
&lt;/ul></description></item><item><title>3.0.2.1 Release Note</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/08/23/3.0.2.1-release-note/</link><pubDate>Mon, 23 Aug 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/08/23/3.0.2.1-release-note/</guid><description>&lt;p>This is a bugfix version of 3.0.2.
Exactly the same as version 3.0.2, except for the following changes.&lt;/p>
&lt;h2 id="bugfix">Bugfix&lt;/h2>
&lt;ul>
&lt;li>Fix nacos group inviable in consumer side (#8533)&lt;/li>
&lt;li>Fix NPE on serialization checking when request timed out (#8547)&lt;/li>
&lt;li>Compact with dubbo-all without farbic-io (#8546)&lt;/li>
&lt;/ul></description></item><item><title>Dubbo Java 3.0.2.1 Release Announcement</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/08/23/dubbo-java-3.0.2.1-release-announcement/</link><pubDate>Mon, 23 Aug 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/08/23/dubbo-java-3.0.2.1-release-announcement/</guid><description>&lt;p>This is a bug fix version of 3.0.2.&lt;br>
It is identical to version 3.0.2 except for the following changes.&lt;/p>
&lt;h2 id="bug-fixes">Bug Fixes&lt;/h2>
&lt;ul>
&lt;li>Fixed the issue where nacos group did not take effect on the consumer side (#8533)&lt;/li>
&lt;li>Fixed NPE in request timeout serialization check (#8547)&lt;/li>
&lt;li>Compatible with the issue of not importing the fabric-io package when using dubbo-all (#8546)&lt;/li>
&lt;/ul></description></item><item><title>3.0.2 Release Note</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/08/18/3.0.2-release-note/</link><pubDate>Wed, 18 Aug 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/08/18/3.0.2-release-note/</guid><description>&lt;h2 id="features">Features&lt;/h2>
&lt;ul>
&lt;li>improve generic service with @DubboService annotation.&lt;/li>
&lt;li>metadata report config support xml to config protocol and port.&lt;/li>
&lt;li>compatible for curator5.&lt;/li>
&lt;li>p2p invoke support wildcard url match.&lt;/li>
&lt;li>add Dynamic Configuration Override Support For ServiceDiscovery.&lt;/li>
&lt;li>add provider configuration override disable option.&lt;/li>
&lt;li>support native image.&lt;/li>
&lt;li>support disable shutdown hook.&lt;/li>
&lt;li>add Kubernetes Mesh Rule support.&lt;/li>
&lt;li>support SSL at netty transport.&lt;/li>
&lt;/ul>
&lt;h2 id="bugfixs">BugFixs&lt;/h2>
&lt;ul>
&lt;li>fix re-start override dynamic config.&lt;/li>
&lt;li>fix delete configurators does not take effect.&lt;/li>
&lt;li>fix triple protocol will throw exception when the service is exposed.&lt;/li>
&lt;li>fix ConfigCenterConfig.setAddress will override username problem.&lt;/li>
&lt;li>fix DefaultFuture.closeChannel will shutdown ExecutorService.&lt;/li>
&lt;li>fix TripleClientHandler#writeRequest throwing NPE problem.&lt;/li>
&lt;li>fix NPE when parse migration rule error happen.&lt;/li>
&lt;li>fix Activated Extensions order.&lt;/li>
&lt;li>fix URLAddress#parse method to judge the isPathAddress problem when the address is ipv6.&lt;/li>
&lt;li>fix custom parameter in configuration properties does not work.&lt;/li>
&lt;li>fix Config id Override when both using API and Spring.&lt;/li>
&lt;li>fix service discovery not work on bootstrap &amp;amp; fix address pollution.&lt;/li>
&lt;li>fix nacos registry can&amp;rsquo;t received instance change notify.&lt;/li>
&lt;li>fix could not resolve placeholder &amp;lsquo;${dubbo.application}&amp;rsquo; in xml.&lt;/li>
&lt;li>fix service parameter fetch order.&lt;/li>
&lt;li>fix error of register dubbo bootstrap application listener manually.&lt;/li>
&lt;li>fix mock parameters doesn&amp;rsquo;t work when it contain &amp;lsquo;:&amp;rsquo; or &amp;lsquo;=&amp;rsquo;.&lt;/li>
&lt;li>fix delete mesh rule npe.&lt;/li>
&lt;/ul>
&lt;h2 id="optimization">Optimization&lt;/h2>
&lt;ul>
&lt;li>add exception catch for RemovalTask, ensure semaphore release.&lt;/li>
&lt;li>check duplicated ReferenceConfig/ServiceConfig by unique service name.&lt;/li>
&lt;li>improve the performance for generating random numbers.&lt;/li>
&lt;li>if user define interface service discovery, not publish service name mapping info.&lt;/li>
&lt;li>use StringBuilder#append(Char) to improve performance.&lt;/li>
&lt;li>gRPC Compile class interface order.&lt;/li>
&lt;li>improve property placeholder resolving of reference bean.&lt;/li>
&lt;li>use CompletableFuture#get(long, TimeUnit) to take place of CompletableFuture#get() in MergeableClusterInvoker.&lt;/li>
&lt;li>service delay export config ignore metadata service.&lt;/li>
&lt;li>improve dubbo config beans and bootstrap initialization.&lt;/li>
&lt;li>improve duplicated config checking and add tests for reference annotation.&lt;/li>
&lt;li>replace with ring for registry notification &amp;amp; suppress property checker.&lt;/li>
&lt;li>improve dynamic configuration initialization.&lt;/li>
&lt;li>lock-free ConfigManager and improve config checking.&lt;/li>
&lt;li>modify metadata equals and instance listener.&lt;/li>
&lt;li>improve async export / refer.&lt;/li>
&lt;li>use TreeSet to ensure ServiceNames order when subscribe.&lt;/li>
&lt;li>make first tenth calls notify not delay RegistryNotifier.&lt;/li>
&lt;li>refactor compiler to generate new format stubs.&lt;/li>
&lt;li>change mesh rule group to config default value.&lt;/li>
&lt;li>compatible with nacos grouping via group.&lt;/li>
&lt;li>remove runtime params in ServiceInfo.&lt;/li>
&lt;li>throw RpcException when NacosException occurred.&lt;/li>
&lt;li>configcenter ban accessLogKey and FileRouterFactory key.&lt;/li>
&lt;li>improve config bean initialization compatible with spring 3.x/4.1.x.&lt;/li>
&lt;li>dubbo bootstrap start re-entry, export/refer new services.&lt;/li>
&lt;li>org.apache.dubbo.* add serialization whitelist.&lt;/li>
&lt;li>ensure generated config id is unique, checking existed config.&lt;/li>
&lt;li>compatible with filed change declaration override for Javaassist.&lt;/li>
&lt;li>refactor Codec check, default deny.&lt;/li>
&lt;li>compatible with adaptive extensions when ApplicationModel is null.&lt;/li>
&lt;/ul>
&lt;h2 id="code-improvement">Code Improvement&lt;/h2>
&lt;p>Thanks for these contribution to improve stability of Apache Dubbo.&lt;/p></description></item><item><title>3.0.1 Release Note</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/07/02/3.0.1-release-note/</link><pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/07/02/3.0.1-release-note/</guid><description>&lt;h2 id="optimization">Optimization&lt;/h2>
&lt;ul>
&lt;li>Refactor NameMapping to Metadata, Support application field in MigrationRule&lt;/li>
&lt;li>Add cache for scan result&lt;/li>
&lt;li>Improve config overrides of method and argument&lt;/li>
&lt;li>Support servlet takeover mode&lt;/li>
&lt;li>Add ServiceListener for ServiceConfig&lt;/li>
&lt;li>Improve method callback&lt;/li>
&lt;/ul>
&lt;h2 id="bugfixs">BugFixs&lt;/h2>
&lt;ul>
&lt;li>Add force check&lt;/li>
&lt;li>Fix multi-registry will destroy unavailable clusters&lt;/li>
&lt;li>Remove needless toString convert &amp;amp; Enable checking by default&lt;/li>
&lt;li>Ignore invalid MetadataReportConfig&lt;/li>
&lt;li>Fix NPE when consumer start&lt;/li>
&lt;li>Fix some compatiable issues&lt;/li>
&lt;li>Optimize Service related issues&lt;/li>
&lt;li>Opt Migration &amp;amp; Fix reSubscribe for ServiceDiscovery&lt;/li>
&lt;li>Fix NPE in MetadataInfo&lt;/li>
&lt;li>Fix customizer not changed&lt;/li>
&lt;/ul>
&lt;h2 id="code-improvement">Code Improvement&lt;/h2>
&lt;p>Thanks for these contribution to improve stability of Apache Dubbo.&lt;/p></description></item><item><title>Dubbo Java 3.0.1 Release Announcement</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/07/02/dubbo-java-3.0.1-release-announcement/</link><pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/07/02/dubbo-java-3.0.1-release-announcement/</guid><description>&lt;h2 id="optimization">Optimization&lt;/h2>
&lt;ul>
&lt;li>Refactored service introspection mapping relationship, supporting direct configuration of upstream application name during address migration&lt;/li>
&lt;li>Added caching for Spring scanning&lt;/li>
&lt;li>Optimized configuration overriding logic&lt;/li>
&lt;li>Supported controlling Dubbo lifecycle in Servlet environment&lt;/li>
&lt;li>Added ServiceListener for listening to ServiceConfig&lt;/li>
&lt;li>Optimized method callback parameter settings&lt;/li>
&lt;/ul>
&lt;h2 id="bug-fixes">Bug Fixes&lt;/h2>
&lt;ul>
&lt;li>Enabled strict validation&lt;/li>
&lt;li>Corrected logic where one registry center would destroy when started without addresses under multiple registry centers&lt;/li>
&lt;li>Removed redundant log outputs&lt;/li>
&lt;li>Ignored invalid MetadataReportConfig&lt;/li>
&lt;li>Fixed NPE situation during consumer startup&lt;/li>
&lt;li>Fixed several compatibility issues with lower versions&lt;/li>
&lt;li>Fixed several issues in application-level service discovery logic&lt;/li>
&lt;li>Optimized address migration rules, supporting application-level address re-subscription&lt;/li>
&lt;li>Fixed NPE situations existing in MetadataInfo&lt;/li>
&lt;li>Fixed the issue where instance information registered to the registry center at the application level was incorrectly overwritten&lt;/li>
&lt;/ul>
&lt;h2 id="code-quality-improvement">Code Quality Improvement&lt;/h2>
&lt;p>Thanks to the following contributions that enhanced the stability of Apache Dubbo.&lt;/p></description></item><item><title>Can Apache Dubbo, Now a Decade Old, Ride the Waves Again?</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/14/can-apache-dubbo-now-a-decade-old-ride-the-waves-again/</link><pubDate>Thu, 14 Jan 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/14/can-apache-dubbo-now-a-decade-old-ride-the-waves-again/</guid><description>&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/dubbo-go/10years/dubbo-home.png">&lt;/p>
&lt;p>Throughout the history of open source in China, it is hard to find a second project as controversial and discussed as Dubbo.&lt;/p>
&lt;p>On one hand, its open source in 2011 filled the gap of RPC frameworks used in production environments, and it was widely adopted upon release; on the other hand, it experienced a halt in maintenance, a restart, donation to the Apache Foundation, and then graduated as a top-level project.&lt;/p></description></item><item><title>Dubbo Go 1.5.0</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/14/dubbo-go-1.5.0/</link><pubDate>Thu, 14 Jan 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/14/dubbo-go-1.5.0/</guid><description>&lt;h2 id="quote">Quote&lt;/h2>
&lt;p>The wave of computer technology brings disruptive changes every decade, and related knowledge systems innovate at least every five years, approximately halving in value every two years. This also applies to the field of application service communication frameworks. For any communication framework with long-term viability, there is usually a five-year growth phase and a five-year stable maturity phase. Each era has its matching application communication framework; for example, in the 2G era twenty years ago, the cross-language and cross-platform gRPC, while strong, would not have been adopted due to its weak performance.&lt;/p></description></item><item><title>Dubbo Go Hessian2 v1.6.0</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/14/dubbo-go-hessian2-v1.6.0/</link><pubDate>Thu, 14 Jan 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/14/dubbo-go-hessian2-v1.6.0/</guid><description>&lt;h2 id="1-cache-optimization">1. Cache Optimization&lt;/h2>
&lt;p>dubbo-go-hessian2 extensively uses struct type information for data parsing, and this information can be cached and reused, resulting in a twofold performance improvement. For detailed optimization process records, refer to &lt;a href="https://mp.weixin.qq.com/s/ouVxldQAt0_4BET7srjJ6Q">“Performance Optimization of dubbo-go-hessian2”&lt;/a>.&lt;/p>
&lt;p>Corresponding PR &lt;a href="https://github.com/apache/dubbo-go-hessian2/pull/179">#179&lt;/a>, author &lt;a href="https://github.com/micln">micln&lt;/a>.&lt;/p>
&lt;h2 id="2-string-parsing-performance-optimization">2. String Parsing Performance Optimization&lt;/h2>
&lt;p>Due to the definition of string in Hessian (Dubbo serialization protocol referred to as Hessian), which represents it as a 16-bit Unicode UTF-8 format, the character length is represented as a 16-bit character count. This specification was established only for Java, where a character is 16 bits corresponding to UTF-16. The Hessian library also serializes each character. However, in Go, characters correspond to UTF-8, and the rune in dubbo-go-hessian2 is 32 bits, mapping one-to-one with Unicode. For character ranges U+10000 to U+10FFFF, they need to be converted to two-byte surrogate pairs to align with Java&amp;rsquo;s serialization method.&lt;/p></description></item><item><title>Dubbo Go 1.4.0</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/12/dubbo-go-1.4.0/</link><pubDate>Tue, 12 Jan 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/12/dubbo-go-1.4.0/</guid><description>&lt;p>Thanks to the active support of the community, we released an exciting version on March 25, 2020—dubbo-go v1.4.0. In addition to continuing to support some existing Dubbo features, dubbo-go has begun some of its own innovative attempts.&lt;/p>
&lt;p>The most significant aspect of this version is the groundwork laid for cloud-native support. For instance, after long discussions within the community, we finally introduced a solution that uses K8s as the registration center.&lt;/p></description></item><item><title>Dubbo Go Review and Outlook</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/11/dubbo-go-review-and-outlook/</link><pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2021/01/11/dubbo-go-review-and-outlook/</guid><description>&lt;p>Dubbo is a high-performance RPC framework open-sourced by Alibaba in 2011, which has significant influence in the Java ecosystem. On May 21, 2019, Dubbo graduated from the Apache Software Foundation and became an Apache Top-Level Project. Currently, the graduated Dubbo project&amp;rsquo;s ecosystem has officially announced the introduction of the Go language, releasing the Dubbogo project. This article is a complete review and genuine outlook of the Dubbogo project, collaboratively completed by Yu Yu from Ant Financial and Fang Yincheng from the Ctrip R&amp;amp;D Department.&lt;/p></description></item><item><title>Analysis of Features in Dubbo Java 2.7.5</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/18/analysis-of-features-in-dubbo-java-2.7.5/</link><pubDate>Mon, 18 May 2020 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/18/analysis-of-features-in-dubbo-java-2.7.5/</guid><description>&lt;p>Recently, the highly anticipated Dubbo 2.7.5 version was officially released. This version introduces many new features, enhances many existing functionalities, and achieves significant performance improvements. It will be a milestone version for both the Dubbo community and developers alike.&lt;/p>
&lt;ul>
&lt;li>Application-level service registration【beta】&lt;/li>
&lt;li>HTTP/2 (gRPC) protocol support&lt;/li>
&lt;li>Protobuf support&lt;/li>
&lt;li>Performance optimization, with a 30% improvement in call chain performance&lt;/li>
&lt;li>Support for TLS secure transport&lt;/li>
&lt;li>Optimized consumer-side thread model&lt;/li>
&lt;li>New load balancing strategies better suited for multi-cluster deployment scenarios&lt;/li>
&lt;li>A brand new application development API (compatible with older versions)【beta】&lt;/li>
&lt;li>Additional feature enhancements and bug fixes&lt;/li>
&lt;/ul>
&lt;p>First, from the perspective of service discovery, the new version breaks through the previous interface-level model and introduces an application-level service discovery mechanism - service introspection. Although this mechanism is still in beta, it lays a solid foundation for Dubbo&amp;rsquo;s alignment with the entire microservices cloud-native system. Thanks to compact protocol design and optimization in code implementation, Dubbo has always performed well in terms of performance, with a further improvement in version 2.7.5. According to stress tests from the official maintenance team, performance in the call chain has improved by 30%. In the cloud-native microservices era, multilingual demand is becoming increasingly common. The universality and penetration of protocols are crucial for building a complete microservice system that connects front-end and back-end services. Dubbo supports HTTP/2 protocol by implementing gRPC protocol while also adding compatibility with Protobuf.&lt;/p></description></item><item><title>Past Releases</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/18/past-releases/</link><pubDate>Mon, 18 May 2020 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/18/past-releases/</guid><description>&lt;div class="pageinfo pageinfo-primary">
&lt;p>This document is no longer maintained. You are currently viewing a snapshot version. If you want to see the latest version of the documentation, see &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/release/">Latest Version&lt;/a>.&lt;/p>

&lt;/div>

&lt;h2 id="verification">Verification&lt;/h2>
&lt;p>You can follow these &lt;a href="https://www.apache.org/info/verification">procedures&lt;/a> and the &lt;a href="https://downloads.apache.org/dubbo/KEYS">KEYS&lt;/a> file to verify the download files.&lt;/p>
&lt;h2 id="apache-dubbo">Apache Dubbo&lt;/h2>
&lt;blockquote>
&lt;p>GitHub: &lt;a href="https://github.com/apache/dubbo">https://github.com/apache/dubbo&lt;/a> &lt;br>
Release Notes: &lt;a href="https://github.com/apache/dubbo/releases">https://github.com/apache/dubbo/releases&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;h3 id="320-beta3-2022-12-22">3.2.0-beta.3 (2022-12-22)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="313-2022-12-22">3.1.3 (2022-12-22)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2719-2022-12-13">2.7.19 (2022-12-13)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/2.7.19/apache-dubbo-2.7.19-src.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/2.7.19/apache-dubbo-2.7.19-src.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/2.7.19/apache-dubbo-2.7.19-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="320-beta2-2022-11-28">3.2.0-beta.2 (2022-11-28)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.2/apache-dubbo-3.2.0-beta.2-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.2/apache-dubbo-3.2.0-beta.2-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.2/apache-dubbo-3.2.0-beta.2-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="313-2022-11-28">3.1.3 (2022-11-28)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.1.3/apache-dubbo-3.1.3-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.3/apache-dubbo-3.1.3-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.3/apache-dubbo-3.1.3-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="320-beta1-2022-11-08">3.2.0-beta.1 (2022-11-08)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.1/apache-dubbo-3.2.0-beta.1-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.1/apache-dubbo-3.2.0-beta.1-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.1/apache-dubbo-3.2.0-beta.1-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="312-2022-11-08">3.1.2 (2022-11-08)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.1.2/apache-dubbo-3.1.2-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.2/apache-dubbo-3.1.2-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.2/apache-dubbo-3.1.2-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="311-2022-09-29">3.1.1 (2022-09-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.1.1/apache-dubbo-3.1.1-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.1/apache-dubbo-3.1.1-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.1/apache-dubbo-3.1.1-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="3012-2022-09-29">3.0.12 (2022-09-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/3.0.12/apache-dubbo-3.0.12-src.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/3.0.12/apache-dubbo-3.0.12-src.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/3.0.12/apache-dubbo-3.0.12-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2718-2022-09-29">2.7.18 (2022-09-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.18/apache-dubbo-2.7.18-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.18/apache-dubbo-2.7.18-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.18/apache-dubbo-2.7.18-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2717-2022-08-23">2.7.17 (2022-08-23)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.17/apache-dubbo-2.7.17-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.17/apache-dubbo-2.7.17-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.17/apache-dubbo-2.7.17-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="3011-2022-08-23">3.0.11 (2022-08-23)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.11/apache-dubbo-3.0.11-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.11/apache-dubbo-3.0.11-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.11/apache-dubbo-3.0.11-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="310-2022-08-22">3.1.0 (2022-08-22)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.1.0/apache-dubbo-3.1.0-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.0/apache-dubbo-3.1.0-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.1.0/apache-dubbo-3.1.0-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="3010-2022-07-21">3.0.10 (2022-07-21)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.10/apache-dubbo-3.0.10-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.10/apache-dubbo-3.0.10-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.10/apache-dubbo-3.0.10-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2716-2022-07-06">2.7.16 (2022-07-06)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.16/apache-dubbo-2.7.16-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.16/apache-dubbo-2.7.16-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.16/apache-dubbo-2.7.16-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="309-2022-06-23">3.0.9 (2022-06-23)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.9/apache-dubbo-3.0.9-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.9/apache-dubbo-3.0.9-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.9/apache-dubbo-3.0.9-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="308-2022-05-11">3.0.8 (2022-05-11)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.8/apache-dubbo-3.0.8-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.8/apache-dubbo-3.0.8-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.8/apache-dubbo-3.0.8-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="307-2022-04-01">3.0.7 (2022-04-01)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.7/apache-dubbo-3.0.7-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.7/apache-dubbo-3.0.7-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.7/apache-dubbo-3.0.7-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="306-2022-02-28">3.0.6 (2022-02-28)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.6/apache-dubbo-3.0.6-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.6/apache-dubbo-3.0.6-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.6/apache-dubbo-3.0.6-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="305-2021-12-30">3.0.5 (2021-12-30)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.5/apache-dubbo-3.0.5-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.5/apache-dubbo-3.0.5-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.5/apache-dubbo-3.0.5-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2715-2021-12-29">2.7.15 (2021-12-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.15/apache-dubbo-2.7.15-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.15/apache-dubbo-2.7.15-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.15/apache-dubbo-2.7.15-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2612-2021-12-29">2.6.12 (2021-12-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.12/apache-dubbo-2.6.12-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.6.12/apache-dubbo-2.6.12-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.6.12/apache-dubbo-2.6.12-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="304-2021-10-24">3.0.4 (2021-10-24)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.4/apache-dubbo-3.0.4-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.4/apache-dubbo-3.0.4-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.4/apache-dubbo-3.0.4-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="303-2021-09-27">3.0.3 (2021-09-27)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.3/apache-dubbo-3.0.3-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.3/apache-dubbo-3.0.3-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.3/apache-dubbo-3.0.3-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2714-2021-09-20">2.7.14 (2021-09-20)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.14/apache-dubbo-2.7.14-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.14/apache-dubbo-2.7.14-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.14/apache-dubbo-2.7.14-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2611-2021-09-18">2.6.11 (2021-09-18)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/2.6.11/apache-dubbo-2.6.11-source-release.zip">source&lt;/a> |
&lt;a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/2.6.11/apache-dubbo-2.6.11-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/2.6.11/apache-dubbo-2.6.11-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="3021-2021-08-23">3.0.2.1 (2021-08-23)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.2.1/apache-dubbo-3.0.2.1-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.2.1/apache-dubbo-3.0.2.1-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.2.1/apache-dubbo-3.0.2.1-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="302-2021-08-16">3.0.2 (2021-08-16)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.2/apache-dubbo-3.0.2-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.2/apache-dubbo-3.0.2-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.2/apache-dubbo-3.0.2-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2713-2021-08-05">2.7.13 (2021-08-05)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.13/apache-dubbo-2.7.13-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.13/apache-dubbo-2.7.13-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.13/apache-dubbo-2.7.13-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="301-2021-07-02">3.0.1 (2021-07-02)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.1/apache-dubbo-3.0.1-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.1/apache-dubbo-3.0.1-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.1/apache-dubbo-3.0.1-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="300-2021-06-16">3.0.0 (2021-06-16)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/3.0.0/apache-dubbo-3.0.0-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.0/apache-dubbo-3.0.0-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/3.0.0/apache-dubbo-3.0.0-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2712-2021-06-11">2.7.12 (2021-06-11)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.12/apache-dubbo-2.7.12-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.12/apache-dubbo-2.7.12-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.12/apache-dubbo-2.7.12-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2711-2021-05-12">2.7.11 (2021-05-12)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.11/apache-dubbo-2.7.11-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.11/apache-dubbo-2.7.11-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.11/apache-dubbo-2.7.11-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2710-2021-04-08">2.7.10 (2021-04-08)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.10/apache-dubbo-2.7.10-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.10/apache-dubbo-2.7.10-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.10/apache-dubbo-2.7.10-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="279-2020-02-23">2.7.9 (2020-02-23)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.9/apache-dubbo-2.7.9-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.9/apache-dubbo-2.7.9-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.9/apache-dubbo-2.7.9-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="278-2020-07-28">2.7.8 (2020-07-28)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.8/apache-dubbo-2.7.8-source-release.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.8/apache-dubbo-2.7.8-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.8/apache-dubbo-2.7.8-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="277-2020-05-18">2.7.7 (2020-05-18)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.7/apache-dubbo-2.7.7-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.7/apache-dubbo-2.7.7-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.7/apache-dubbo-2.7.7-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="275-2019-12-29">2.7.5 (2019-12-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.5/apache-dubbo-2.7.5-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.5/apache-dubbo-2.7.5-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.5/apache-dubbo-2.7.5-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="2741-2019-10-27">2.7.4.1 (2019-10-27)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.4.1/apache-dubbo-2.7.4.1-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.4.1/apache-dubbo-2.7.4.1-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.4.1/apache-dubbo-2.7.4.1-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="274-2019-10-19">2.7.4 (2019-10-19)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.4/apache-dubbo-2.7.4-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.4/apache-dubbo-2.7.4-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.4/apache-dubbo-2.7.4-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="273-2019-07-19">2.7.3 (2019-07-19)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.3/apache-dubbo-2.7.3-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.3/apache-dubbo-2.7.3-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.3/apache-dubbo-2.7.3-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="272-2019-06-06">2.7.2 (2019-06-06)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/dubbo/2.7.2/apache-dubbo-2.7.2-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.2/apache-dubbo-2.7.2-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/dubbo/2.7.2/apache-dubbo-2.7.2-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="271-2019-03-26">2.7.1 (2019-03-26)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip">binary&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="270-2019-01-29">2.7.0 (2019-01-29)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip">binary&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="267-2019-07-15">2.6.7 (2019-07-15)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-source-release.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/2.6.7/apache-dubbo-2.6.7-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/2.6.7/apache-dubbo-2.6.7-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-bin-release.zip">binary&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/2.6.7/apache-dubbo-2.6.7-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/dubbo/2.6.7/apache-dubbo-2.6.7-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="266-2019-03-07">2.6.6 (2019-03-07)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip">source&lt;/a> |
&lt;a href="https://downloads.apache.org/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip">binary&lt;/a> |
&lt;a href="https://downloads.apache.org/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://downloads.apache.org/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="265-2018-11-23">2.6.5 (2018-11-23)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip">binary&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="264-2018-10-08">2.6.4 (2018-10-08)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip">binary&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="263-2018-09-11">2.6.3 (2018-09-11)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip">binary&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="262-2018-06-07">2.6.2 (2018-06-07)&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip">source&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip">binary&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.asc">asc&lt;/a> |
&lt;a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.sha512">sha512&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="dubbo-spring-boot-starter">Dubbo Spring Boot Starter&lt;/h2>
&lt;blockquote>
&lt;p>GitHub: &lt;a href="https://github.com/apache/incubator-dubbo-spring-boot-project">https://github.com/apache/incubator-dubbo-spring-boot-project&lt;/a> &lt;br>
Release Notes: &lt;a href="https://github.com/apache/incubator-dubbo-spring-boot-project/releases">https://github.com/apache/incubator-dubbo-spring-boot-project/releases&lt;/a>&lt;/p></description></item><item><title>Annual Review and Summary of Apache Dubbo from 2019 to 2020</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/11/annual-review-and-summary-of-apache-dubbo-from-2019-to-2020/</link><pubDate>Mon, 11 May 2020 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2020/05/11/annual-review-and-summary-of-apache-dubbo-from-2019-to-2020/</guid><description>&lt;p>Thank you all for your attention to the Dubbo community. In this article, we will summarize the achievements made by the Dubbo community over the past year, covering both community and framework evolution, and look forward to future plans (roadmap) for the Dubbo community and framework. Community building is a very important aspect of promoting Dubbo&amp;rsquo;s healthy and sustainable development. We need to maintain positive interactions within the community, have active contributors, and engage in constructive discussions. Over the past year, the entire Dubbo community has made significant progress in this regard. In terms of framework evolution, we primarily released 6 feature versions from 2.7.0 to 2.7.5, covering various aspects including programming models, protocols, service governance, and performance optimization. In addition to released features, we also explored deeply into areas such as Dubbo 3.0 protocol, service introspection, and cloud-native directions. Support for these areas will be crucial for Dubbo&amp;rsquo;s future work, and we hope to share more detailed thoughts and plans through this article.&lt;/p></description></item><item><title>Dubbo Admin service test</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/08/26/service-test/</link><pubDate>Mon, 26 Aug 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/08/26/service-test/</guid><description>&lt;p>Based on the metadata of Dubbo2.7, Dubbo Admin implements the service test function, which can call the real service provider on the console through generalized call.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Deploy the provider: You can download the demo &lt;a href="https://github.com/nzomkxia/dubbo-demo">here&lt;/a>. This project is based on Spring Boot, which is convenient to start in the IDE or command line. For service testing, you only need to start &lt;code>dubbo-basic-provider&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Service-seeking: After completing the server deployment, you can query the corresponding service on the Dubbo Admin&amp;rsquo;s &lt;code>service test&lt;/code> page:
&lt;img alt="testSearch" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/admin/testSearch.jpg">&lt;br>
the information here is similar to the metadata, including the method name, parameter type and return value. Click the label on the right to enter the &lt;code>service test&lt;/code> page.&lt;/p></description></item><item><title>Tracing Dubbo service with Apache Skywalking</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/</link><pubDate>Sun, 11 Aug 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/</guid><description>&lt;h2 id="introduction-to-apache-skywalking">Introduction to Apache Skywalking&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/skywalking">Apache Skywalking&lt;/a> is the APM system that it designed for micro-services architectures and cloud native architecture systems and supports distribute tracking. &lt;a href="https://github.com/apache/skywalking">Apache skywalking (incubator)&lt;/a> collects and analyzes the trace data and generates the relationship between the application and the service metric, Apache skywalking supports multiple languages agent, for example &lt;a href="https://github.com/apache/skywalking">Java&lt;/a>,&lt;a href="https://github.com/OpenSkywalking/skywalking-netcore">.net core&lt;/a>,&lt;a href="https://github.com/OpenSkywalking/skywalking-nodejs">Node.js&lt;/a> and &lt;a href="https://github.com/SkyAPM/go2sky">Go&lt;/a>.&lt;/p>
&lt;p>Currently, Skywalking has supported analysis the operation of distributed systems from 6 visual dimensions. The overview view is a global view of your applications and components, including the number of components and applications, application alarm fluctuations, slow service lists, and application throughput; The topology shows the topological relationship of the whole application; The application view represents the upstream and downstream relationship of the application from single application, TOP N services and servers, JVM, host and process info. The service view focuses on the operation of a single service portal and the upstream and downstream dependencies of this service and it helps the user to optimize and monitor a single service; the trace graph shows all the buried points of the invocation and the execution time of each burial point, and the alarm view is based on the configuration threshold for the application, server, service for real-time alarms&lt;/p></description></item><item><title>Using Apache Skywalking (Incubator) for Distributed Tracing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/08/11/using-apache-skywalking-incubator-for-distributed-tracing/</link><pubDate>Sun, 11 Aug 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/08/11/using-apache-skywalking-incubator-for-distributed-tracing/</guid><description>&lt;h2 id="introduction-to-apache-skywalking-incubator">Introduction to Apache Skywalking (Incubator)&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/skywalking">Apache Skywalking (Incubator)&lt;/a> is an APM system designed for microservice architecture and cloud-native architecture systems that supports distributed tracing. &lt;a href="https://github.com/apache/skywalking">Apache Skywalking (Incubator)&lt;/a> collects application call chain information by loading probes and analyzes the collected call chain information to generate relationships and service metrics between applications and services. Currently, &lt;a href="https://github.com/apache/skywalking">Apache Skywalking (Incubating)&lt;/a> supports multiple languages, including &lt;a href="https://github.com/apache/skywalking">Java&lt;/a>, &lt;a href="https://github.com/OpenSkywalking/skywalking-netcore">.Net Core&lt;/a>, &lt;a href="https://github.com/OpenSkywalking/skywalking-nodejs">Node.js&lt;/a>, and &lt;a href="https://github.com/SkyAPM/go2sky">Go&lt;/a>.&lt;/p>
&lt;p>Skywalking currently supports dissecting the operation of distributed systems from six visualization dimensions. The overview view provides a global view of applications and components, including the number of components and applications, alarm fluctuations, slow service lists, and application throughput; the topology map shows the entire application&amp;rsquo;s topology based on application dependencies; the application view shows upstream and downstream relationships, TopN services, JVM-related information, and corresponding host information from the perspective of a single application. The service view focuses on the operating status of a single service entry and its upstream and downstream dependencies, helping users optimize and monitor individual services; the call chain shows all points of interest along with the execution duration of each point for a single request; the alarm view provides real-time alerts for applications, servers, and services based on configured thresholds.&lt;/p></description></item><item><title>Dubbo extensible mechanism source code analysis - part 2</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/</link><pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/</guid><description>&lt;p>In the &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/">actual implementation of the Dubbo extensibility mechanism&lt;/a>, we learned some concepts of the Dubbo extension mechanism, explored the implementation of LoadBalance in Dubbo, and implemented a LoadBalance on our own. Do you think Dubbo&amp;rsquo;s extension mechanism is great? Next, we will go deep into the source code of Dubbo and see what it is.&lt;/p>
&lt;h2 id="extensionloader">ExtensionLoader&lt;/h2>
&lt;p>&lt;code>ExtensionLoader&lt;/code> is the core class, which is responsible for the loading and lifecycle management of extension points. Let&amp;rsquo;s start with this class. There are many methods of Extension, and the common methods include:&lt;/p></description></item><item><title>Dubbo extensible mechanism source code analysis - part 1</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/</link><pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/</guid><description>&lt;h2 id="1-extension-mechanism-of-dubbo">1. Extension Mechanism of Dubbo&lt;/h2>
&lt;p>Dubbo is claimed as a high-performance RPC framework on its official website. Today, I want to talk about another great specialty of Dubbo &amp;mdash; its scalability. As quote: Rome wasn’t built in a day. Any successful system always starts as a prototype. It is impossible to design a perfect system at the beginning. Instead, we should focus on true demand and keep improving the system. On the coding side, it requires us to pay attention on abstraction layers and high-level isolation. In that case, the system could keep a healthy structure and easy to maintain while new features or third-party extensions are added. Under some circumstances, a designer should pursue more of scalability than the system’s current performance.
When talking about software design, people always mention scalability. A framework with good scalability requires the following:
1.The framework should follow opening/closed principle: software entities should be open for extension, but closed for modification; This means a framework should allow the maintainer to add new functions with as few modifications as possible.
2.The framework should allow the user to add new functions by adding code on his project without modifying the framework&amp;rsquo;s original source code base.
With microkernel architecture and extension mechanism, Dubbo satisfies such requirements and achieves good scalability. In the following chapters, we will discuss Dubbo&amp;rsquo;s extension mechanism in detail.&lt;/p></description></item><item><title>Implementation background and practice of Dubbo client asynchronous interface</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/</link><pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/</guid><description>&lt;h2 id="preface">Preface&lt;/h2>
&lt;p>&lt;img alt="image | left" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/dubboasyn_client/1_en.png">&lt;/p>
&lt;p>Let&amp;rsquo;s start with a brief introduction about the stages of a complete Dubbo invocation.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Biz~ represents business thread, that is, the thread where the business logic is located. Biz~ thread pool may be created and maintained by business itself, most of which may be managed by system framework itself (for example, a web system runs under Tomcat container, Biz~ thread is maintained by Tomcat); IO~ stands for network data processing thread, which is created and maintained by IO framework (such as Netty, Grizzly). Dubbo Remoting&amp;rsquo;s default Netty implementation is NioEventloopLoopGroup. In addition, according to the binding relationship between Channel and IO thread, IO~ can also be regarded as an acceptable Channel for event messages. Asynchronous processing stages such as Biz and IO are abstractly described in JDK8 as completionstages.&lt;/p></description></item><item><title>Implementation background and practice of Dubbo server asynchronous interface</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/</link><pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/</guid><description>&lt;h2 id="preface">Preface&lt;/h2>
&lt;p>It is suggested to make an understanding of the thread phase involved in the process of Dubbo first, please refer to &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/">Implementation background and practice of Dubbo client asynchronous interface&lt;/a> for details.&lt;/p>
&lt;h2 id="implementation-background">Implementation background&lt;/h2>
&lt;p>It is necessary to introduce the server-side thread strategy in more detail to deepen the user&amp;rsquo;s judgment basis for selecting server-side asynchrony. It is also necessary to introduce coroutines, the &amp;ldquo;secret weapon&amp;rdquo; often used in server-side asynchrony.&lt;/p></description></item><item><title>When Dubbo Meets Arthas: Problem Diagnosis in Practice</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/02/when-dubbo-meets-arthas-problem-diagnosis-in-practice/</link><pubDate>Sat, 02 Feb 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/02/02/when-dubbo-meets-arthas-problem-diagnosis-in-practice/</guid><description>&lt;p>Apache Dubbo is Alibaba&amp;rsquo;s open-source high-performance RPC framework with a large user base in China.&lt;/p>
&lt;ul>
&lt;li>Github: &lt;a href="https://github.com/apache/dubbo">https://github.com/apache/dubbo&lt;/a>&lt;/li>
&lt;li>Documentation: &lt;a href="http://dubbo.apache.org/en-us/">http://dubbo.apache.org/en-us/&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Arthas is Alibaba&amp;rsquo;s open-source application diagnosis tool, which has gained over 6000 stars on Github within three months of its release in September.&lt;/p>
&lt;ul>
&lt;li>Github: &lt;a href="https://github.com/alibaba/arthas">https://github.com/alibaba/arthas&lt;/a>&lt;/li>
&lt;li>Documentation: &lt;a href="https://arthas.aliyun.com/doc/">https://arthas.aliyun.com/doc/&lt;/a>&lt;/li>
&lt;li>Arthas open-source exchange QQ Group: 916328269&lt;/li>
&lt;li>Arthas open-source exchange DingTalk Group: 21965291&lt;/li>
&lt;/ul>
&lt;p>What sparks will fly when Dubbo meets Arthas? Here are some experiences in diagnosing Dubbo issues using Arthas.&lt;/p></description></item><item><title>Meet Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/26/meet-dubbo/</link><pubDate>Sat, 26 Jan 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/26/meet-dubbo/</guid><description>&lt;p>I am a programmer with a Dubbo obsession.&lt;/p>
&lt;p>Dubbo has accompanied me throughout my coding career for a short time in various ways. Not long ago, I was elected as a &lt;code>Committer&lt;/code> through community voting. At that time, I posted a phrase on my social network, which encapsulated my journey from starting to use Dubbo, researching Dubbo, contributing to Dubbo, and finally becoming a &lt;code>Committer&lt;/code>, providing me with a unique source of internal joy: it’s particularly happy to see footprints in the process of growth.&lt;/p></description></item><item><title>How to Use Seata to Ensure Consistency Between Dubbo Microservices</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/</link><pubDate>Thu, 17 Jan 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/</guid><description>&lt;h2 id="case">Case&lt;/h2>
&lt;p>The user purchases product business, which consists of 3 microservices:&lt;/p>
&lt;ul>
&lt;li>Inventory Service: Deducts the inventory quantity of the given product.&lt;/li>
&lt;li>Order Service: Generates an order based on the purchase request.&lt;/li>
&lt;li>Account Service: Deducts from the user&amp;rsquo;s account balance.&lt;/li>
&lt;/ul>
&lt;h3 id="business-structure-diagram">Business Structure Diagram&lt;/h3>
&lt;p>&lt;img alt="Architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/fescar/fescar-1.png">&lt;/p>
&lt;h3 id="storageservice">StorageService&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">StorageService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * Deduct storage quantity
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">deduct&lt;/span>(String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> count);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="orderservice">OrderService&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">OrderService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * Create order
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Order &lt;span style="color:#268bd2">create&lt;/span>(String userId, String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="accountservice">AccountService&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">AccountService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * Debit from user account
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">debit&lt;/span>(String userId, &lt;span style="color:#dc322f">int&lt;/span> money);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="main-business-logic">Main Business Logic:&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">BusinessServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> BusinessService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> StorageService storageService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> OrderService orderService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * Purchase
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">purchase&lt;/span>(String userId, String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> orderCount) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storageService.deduct(commodityCode, orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> orderService.create(userId, commodityCode, orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">StorageServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> StorageService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> StorageDAO storageDAO;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Override&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">deduct&lt;/span>(String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> count) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Storage storage &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> Storage();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storage.setCount(count);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storage.setCommodityCode(commodityCode);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storageDAO.update(storage);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">OrderServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> OrderService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> OrderDAO orderDAO;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> AccountService accountService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Order &lt;span style="color:#268bd2">create&lt;/span>(String userId, String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> orderCount) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">int&lt;/span> orderMoney &lt;span style="color:#719e07">=&lt;/span> calculate(commodityCode, orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> accountService.debit(userId, orderMoney);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Order order &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> Order();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.userId &lt;span style="color:#719e07">=&lt;/span> userId;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.commodityCode &lt;span style="color:#719e07">=&lt;/span> commodityCode;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.count &lt;span style="color:#719e07">=&lt;/span> orderCount;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.money &lt;span style="color:#719e07">=&lt;/span> orderMoney;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> orderDAO.insert(order);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="seata-distributed-transaction-solution">Seata Distributed Transaction Solution&lt;/h2>
&lt;p>&lt;img alt="undefined" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/fescar/fescar-2.png">&lt;/p></description></item><item><title>How to use Seata to ensure consistency between Dubbo Microservices</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/</link><pubDate>Thu, 17 Jan 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/</guid><description>&lt;h2 id="use-case">Use case&lt;/h2>
&lt;p>A business logic for user purchasing commodities. The whole business logic is powered by 3 microservices:&lt;/p>
&lt;ul>
&lt;li>Storage service: deduct storage count on given commodity.&lt;/li>
&lt;li>Order service: create order according to purchase request.&lt;/li>
&lt;li>Account service: debit the balance of user&amp;rsquo;s account.&lt;/li>
&lt;/ul>
&lt;h3 id="architecture">Architecture&lt;/h3>
&lt;p>&lt;img alt="Architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/fescar/fescar-1.png">&lt;/p>
&lt;h3 id="storageservice">StorageService&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">StorageService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * deduct storage count
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">deduct&lt;/span>(String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> count);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="orderservice">OrderService&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">OrderService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * create order
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Order &lt;span style="color:#268bd2">create&lt;/span>(String userId, String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="accountservice">AccountService&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">AccountService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * debit balance of user&amp;#39;s account
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">debit&lt;/span>(String userId, &lt;span style="color:#dc322f">int&lt;/span> money);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="main-business-logic">Main business logic&lt;/h3>
&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">BusinessServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> BusinessService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> StorageService storageService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> OrderService orderService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> * purchase
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">purchase&lt;/span>(String userId, String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> orderCount) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storageService.deduct(commodityCode, orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> orderService.create(userId, commodityCode, orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">StorageServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> StorageService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> StorageDAO storageDAO;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">@Override&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#dc322f">void&lt;/span> &lt;span style="color:#268bd2">deduct&lt;/span>(String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> count) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Storage storage &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> Storage();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storage.setCount(count);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storage.setCommodityCode(commodityCode);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> storageDAO.update(storage);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&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>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">OrderServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> OrderService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> OrderDAO orderDAO;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">private&lt;/span> AccountService accountService;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> Order &lt;span style="color:#268bd2">create&lt;/span>(String userId, String commodityCode, &lt;span style="color:#dc322f">int&lt;/span> orderCount) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#dc322f">int&lt;/span> orderMoney &lt;span style="color:#719e07">=&lt;/span> calculate(commodityCode, orderCount);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> accountService.debit(userId, orderMoney);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Order order &lt;span style="color:#719e07">=&lt;/span> &lt;span style="color:#719e07">new&lt;/span> Order();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.userId &lt;span style="color:#719e07">=&lt;/span> userId;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.commodityCode &lt;span style="color:#719e07">=&lt;/span> commodityCode;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.count &lt;span style="color:#719e07">=&lt;/span> orderCount;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> order.money &lt;span style="color:#719e07">=&lt;/span> orderMoney;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">return&lt;/span> orderDAO.insert(order);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="distributed-transaction-solution-with-seata">Distributed Transaction Solution with Seata&lt;/h2>
&lt;p>&lt;img alt="undefined" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/fescar/fescar-2.png">&lt;/p></description></item><item><title>Introduction to the New Dubbo Admin</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/07/introduction-to-the-new-dubbo-admin/</link><pubDate>Mon, 07 Jan 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/07/introduction-to-the-new-dubbo-admin/</guid><description>&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>github: https://github.com/apache/dubbo-ops
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The previous versions of Dubbo Admin were outdated and lacked maintenance for a long time. Therefore, a major refactoring of the project was carried out mid last year, with the following structural changes:&lt;/p>
&lt;ul>
&lt;li>The backend framework was replaced from webx to spring boot.&lt;/li>
&lt;li>The frontend uses Vue and Vuetify.js as the development framework.&lt;/li>
&lt;li>Removed velocity templates.&lt;/li>
&lt;li>Integrated swagger for API management features.&lt;/li>
&lt;/ul>
&lt;p>The current version of Dubbo Admin includes most of the functions from previous versions, including service governance and service query, while supporting the new service governance features introduced in Dubbo 2.7.&lt;/p></description></item><item><title>The Practice of Dubbo at Guazi Used Car</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/05/the-practice-of-dubbo-at-guazi-used-car/</link><pubDate>Sat, 05 Jan 2019 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2019/01/05/the-practice-of-dubbo-at-guazi-used-car/</guid><description>&lt;h2 id="preface">Preface&lt;/h2>
&lt;p>  With the continuous development of Guazi&amp;rsquo;s business, the system scale is gradually expanding. Currently, hundreds of Dubbo applications and thousands of Dubbo instances are running on Guazi&amp;rsquo;s private cloud. Each department of Guazi has rapidly developed its own versions without timely alignment. With the construction of the second data center, the need for a unified Dubbo version has become increasingly urgent. A few months ago, a production incident related to Dubbo occurred, which became a catalyst for the company&amp;rsquo;s Dubbo version upgrade.&lt;/p></description></item><item><title>The Fifth Dubbo Developer Salon Successfully Held in Hangzhou</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/12/10/the-fifth-dubbo-developer-salon-successfully-held-in-hangzhou/</link><pubDate>Mon, 10 Dec 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/12/10/the-fifth-dubbo-developer-salon-successfully-held-in-hangzhou/</guid><description>&lt;p>The fifth Dubbo Developer Salon was successfully held in Hangzhou,&lt;/p>
&lt;p>Guest speakers&lt;/p>
&lt;ul>
&lt;li>Li Ding: How to Participate in the Dubbo Open Source Community &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/how-to-involve-in-dubbo-community.pdf">slides&lt;/a>&lt;/li>
&lt;li>Cao Shengli: Introduction and Demonstration of New Features in Dubbo 2.7 &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/dubbo-2.7-introduction.pdf">slides&lt;/a>&lt;/li>
&lt;li>Tao Yang: Application Practice of Dubbo at Koala &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/dubbo-practice-in-netease-koala.pdf">slides&lt;/a>&lt;/li>
&lt;li>Xiao Ma Ge: Reimplementation of Dubbo + Nacos Service Governance &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/nacos-support-in-dubbo.pdf">slides&lt;/a>&lt;/li>
&lt;li>Zhao Yihao: Sentinel: Traffic Guard for Distributed Services &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/sentinel-support-for-dubbo.pdf">slides&lt;/a>&lt;/li>
&lt;li>Chen Zhixuan: When Dubbo Meets Arthas: Troubleshooting Practice &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/troubleshooting-dubbo-with-arthas.pdf">slides&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Dubbo Integrates Nacos as a Registry Center</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/11/07/dubbo-integrates-nacos-as-a-registry-center/</link><pubDate>Wed, 07 Nov 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/11/07/dubbo-integrates-nacos-as-a-registry-center/</guid><description>&lt;p>Nacos is an important registry center implementation in the Dubbo ecosystem, and &lt;a href="https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos">&lt;code>dubbo-registry-nacos&lt;/code>&lt;/a> is the implementation for integrating Nacos as a registry center in Dubbo.&lt;/p>
&lt;h2 id="preparations">Preparations&lt;/h2>
&lt;p>Before integrating &lt;a href="https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos">&lt;code>dubbo-registry-nacos&lt;/code>&lt;/a> into your Dubbo project, make sure that the Nacos service is started in the background. If you are not familiar with the basic usage of Nacos, you can refer to the &lt;a href="https://nacos.io/en-us/docs/quick-start.html">Nacos Quick Start&lt;/a>. It is recommended to use Nacos version &lt;code>0.6.1&lt;/code> or above.&lt;/p></description></item><item><title>Dubbo Integrates with Nacos to Become a Registry</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/</link><pubDate>Wed, 07 Nov 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/</guid><description>&lt;p>Nacos is an important registry in the Dubbo ecosystem, and dubbo-registry-nacos is the implementation of the Dubbo-integrated Nacos registry.&lt;/p>
&lt;h2 id="preparation-works">Preparation Works&lt;/h2>
&lt;p>Before you integrate dubbo-registry-nacos into your Dubbo project, ensure the Nacos service is started in the background. If you are not familiar with the basic use of Nacos, you can refer to the Quick Start for Nacos: &lt;a href="https://nacos.io/en-us/docs/quick-start.html">https://nacos.io/en-us/docs/quick-start.html&lt;/a>. Nacos versions above 0.6.1 are recommended.&lt;/p>
&lt;h2 id="get-started-quickly">Get Started Quickly&lt;/h2>
&lt;p>The steps to integrate Dubbo with Nacos as a registry are simple, generally divided into &amp;ldquo;add Maven dependency&amp;rdquo; and &amp;ldquo;configure the registry.&amp;rdquo;&lt;/p></description></item><item><title>Introduction to the Dubbo protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/</link><pubDate>Fri, 05 Oct 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/</guid><description>&lt;h2 id="the-concept-of-the-protocol">The concept of the protocol&lt;/h2>
&lt;p>The protocol is the foundation of communication between two network entities, and data is transmitted from one entity to another in the form of a byte stream over the network. In the world of byte streams, this one-dimensional byte stream cannot be reshaped into two-dimensional or multi-dimensional data structures and domain objects without a protocol.&lt;/p>
&lt;h3 id="what-is-the-protocol">What is the protocol&lt;/h3>
&lt;p>The protocol is the semantics determined by both parties for the communication. For example, we design a protocol for string transmission, which allows the client to send a string and the server receives the corresponding string.&lt;/p></description></item><item><title>Integrate Dubbo with Kubernetes</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/</link><pubDate>Sun, 30 Sep 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/</guid><description>&lt;h1 id="general-goal">General goal&lt;/h1>
&lt;p>Dubbo&amp;rsquo;s provider don&amp;rsquo;t care about service registration.Open its Dubbo service port,the declaration and publishment of the service will be executed by Kubernetes.
Dubbo&amp;rsquo;s consumer directly discovers the corresponding service endpoints of Kubernetes during service discovery procedure, thereby reusing Dubbo&amp;rsquo;s existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be seamlessly integrated into the multi-tenant security system of Kubernetes. Reference demo : &lt;a href="https://github.com/dubbo/dubbo-Kubernetes">https://github.com/dubbo/dubbo-ubernetes&lt;/a>&lt;/p></description></item><item><title>How to Prepare Apache Release</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/09/02/how-to-prepare-apache-release/</link><pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/09/02/how-to-prepare-apache-release/</guid><description>&lt;h2 id="understanding-apache-release-content-and-processes">Understanding Apache Release Content and Processes&lt;/h2>
&lt;p>In general, the Source Release is the focus of Apache and is essential for the release; the Binary Release is optional. Dubbo can choose whether to publish a binary package to the Apache repository or release it to the Maven Central Repository.&lt;/p>
&lt;p>Please refer to the following links for more about ASF&amp;rsquo;s release guidelines:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.apache.org/dev/release-publishing">Apache Release Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/release.html">Apache Release Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="preparing-local-build-environment">Preparing Local Build Environment&lt;/h2>
&lt;p>Mainly includes signing tools and Maven repository authentication preparations.&lt;/p></description></item><item><title>How to implement a fully asynchronous calls chain based on Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/</link><pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/</guid><description>&lt;p>Implementing the full asynchronous programming based on Dubbo, which is a new feature introduced in version 2.7.0 after the enhancement of the existing asynchronous mode.This article first reviews the supported functions and existing problems of asynchronization in 2.6.x and earlier versions, and introduces the targeted enhancements based on CompletableFuture in version 2.7.0. Then, the use of enhanced asynchronous programming is elaborated through several examples. Finally, it summarizes the new problems brought by the introduction of asynchronous mode and corresponding solutions from Dubbo. By reading this article, it is easy to implement a fully asynchronous remote service call chain based on Dubbo 2.7.0+.&lt;/p></description></item><item><title>The 4th Dubbo Developer Salon Held in Chengdu on August 26</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/26/the-4th-dubbo-developer-salon-held-in-chengdu-on-august-26/</link><pubDate>Sun, 26 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/26/the-4th-dubbo-developer-salon-held-in-chengdu-on-august-26/</guid><description>&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/meetup-chengdu/all-hands.webp">&lt;/p>
&lt;h2 id="in-depth-communication-with-users">In-depth Communication with Users&lt;/h2>
&lt;p>On August 26, from 10:00 to 12:00, we invited four companies: Truck Alliance, Yuntu Jin Control, former BBD, and Feiyu Star, to participate in face-to-face discussions with open-source enthusiasts and heavy users. According to participant feedback, many questions about Dubbo were answered, especially regarding how to contribute to the community and the value points brought by donating code. We hope to engage more deeply in the Dubbo community and activities in the future.&lt;/p></description></item><item><title>Quick Integration of Dubbo + Hystrix in Spring Applications</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/22/quick-integration-of-dubbo--hystrix-in-spring-applications/</link><pubDate>Wed, 22 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/22/quick-integration-of-dubbo--hystrix-in-spring-applications/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Hystrix is designed to provide more robust fault tolerance by controlling the nodes that access remote systems, services, and third-party libraries, thus providing stronger resilience against latency and failures. Hystrix includes thread and signal isolation, fallback mechanisms, circuit breaker functionality, request caching, request bundling, as well as monitoring and configuration.&lt;/p>
&lt;p>Dubbo is an open-source Java RPC framework from Alibaba and is currently the most popular in China.&lt;/p>
&lt;p>This article describes how to combine Dubbo and Hystrix in a Spring application.&lt;/p></description></item><item><title> Dubbo Basic Usage - Dubbo Consumer Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/</guid><description>&lt;h2 id="dubbo-consumer-configuration">Dubbo Consumer Configuration&lt;/h2>
&lt;h3 id="consumer-configuration-detailed">Consumer Configuration Detailed&lt;/h3>
&lt;p>There are 3 ways to configure the Dubbo Consumer: XML configuration, API call mode configuration, and annotation mode configuration.&lt;/p>
&lt;h4 id="xml-configuration">XML Configuration&lt;/h4>
&lt;h6 id="example-of-the-simplest-configuration">Example of the simplest configuration:&lt;/h6>
&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-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;beans xmlns=&amp;#34;http://www.springframework.org/schema/beans&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Xmlns:xsi=&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Xmlns:dubbo=&amp;#34;http://dubbo.apache.org/schema/dubbo&amp;#34;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Xsi:schemaLocation=&amp;#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema /dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;dubbo:application name=&amp;#34;hello-world-app&amp;#34; /&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;dubbo:registry address=&amp;#34;multicast://224.5.6.7:1234&amp;#34; /&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;dubbo:protocol name=&amp;#34;dubbo&amp;#34; port=&amp;#34;20880&amp;#34; /&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;dubbo:reference id=&amp;#34;demoServiceRemote&amp;#34; interface=&amp;#34;com.alibaba.dubbo.demo.DemoService&amp;#34; /&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/beans&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>For the supported configuration tags and corresponding configuration items, refer to the usage in the provider.&lt;/p></description></item><item><title>Dubbo: Several ways about synchronous/asynchronous invoke</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/</guid><description>&lt;p>As we all know，Dubbo adopts a single large join protocol by default and takes the NIO asynchronous communication mechanism of Netty as the low-level implementation. Based on this mechanism, Dubbo implements several invocation modes as follows:&lt;/p>
&lt;ul>
&lt;li>synchronous invoke&lt;/li>
&lt;li>asynchronous invoke&lt;/li>
&lt;li>parameters callback&lt;/li>
&lt;li>event notification&lt;/li>
&lt;/ul>
&lt;h3 id="synchronous-invoke">Synchronous invoke&lt;/h3>
&lt;p>Synchronous invoke is a kind of blocking invocation mode, that is the Consumer keeps blocking and waiting, until the Provider returns.&lt;/p>
&lt;p>Generally, a typical synchronous invocation process is as follows:&lt;/p></description></item><item><title>Dubbo Basic Usage -- Dubbo Provider Configuration</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/</guid><description>&lt;p>This chapter mainly talking about how to configure dubbo. According to the configuration mode, it can be divided into the following mode: XML Configuration, Properties Configuration, Annotation Configuration, API Invocation Mode Configuration. And according to the function, we can divide them into Dubbo Provider and Dubbo Consumer. In the following sections, we would explain Dubbo Provider and Dubbo Consumer respectively.&lt;/p>
&lt;h2 id="dubbo-provider-configuration">Dubbo Provider Configuration&lt;/h2>
&lt;h3 id="provider-configuration-in-detail">Provider Configuration in Detail&lt;/h3>
&lt;p>The configuration mode of Dubbo Provider has 4 different ways: XML Configuration, Properties Configuration, API Invocation Mode Configuration and Annotation Configuration.&lt;/p></description></item><item><title>Manipulating Services Dynamically via QoS</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/</guid><description>&lt;h1 id="manipulating-services-dynamically-via-qos">Manipulating Services Dynamically via QoS&lt;/h1>
&lt;p>QoS (short form of &lt;strong>Quality of Service&lt;/strong>), is a common terminology talking about network devices. For example, by adjusting and manipulating the weights of ports of a router dynamically via QoS, engineers could give priority to services running on these ports and make sure these services&amp;rsquo; quality and reliability.&lt;/p>
&lt;p>In Dubbo, QoS is used to query and manipulate services dynamically, like getting a list of active provider and consumer services, and launching or withdrawing services (i.e registering to or unregistering services from registration center).&lt;/p></description></item><item><title>Source code analysis of spring-boot+Dubbo App start and stop</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>&lt;a href="https://github.com/apache/dubbo-spring-boot-project">Dubbo Spring Boot&lt;/a> project is dedicated to simplifying the development of the Dubbo RPC framework in the Spring Boot application. It also integrates the feature of Spring Boot:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/apache/dubbo-spring-boot-project/blob/master/dubbo-spring-boot-autoconfigure">Autoconfigure&lt;/a> (ex: Annotation driver, Autoconfigure, etc.)&lt;/li>
&lt;li>&lt;a href="https://github.com/apache/dubbo-spring-boot-project/blob/master/dubbo-spring-boot-actuator">Production-Ready&lt;/a> (ex: Security, Healthy check, Externalize configuration, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="the-analysis-of-dubboconsumer-startup">The analysis of DubboConsumer startup&lt;/h2>
&lt;p>Have you ever thought about this : since the &lt;code>DubboConsumerDemo&lt;/code> application in &lt;code>dubbo-spring-boot-project&lt;/code> has only one line of code, why not just exit directly when the &lt;code>main&lt;/code> method is executed?&lt;/p></description></item><item><title>Implementation of cross-language calls by Dubbo2.js</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/</guid><description>&lt;blockquote>
&lt;p>&lt;a href="https://github.com/dubbo/dubbo2.js">dubbo2.js&lt;/a> is a Dubbo client for node.js developed by &lt;a href="https://www.qianmi.com/">Qianmiwang&lt;/a>. It supports Dubbo&amp;rsquo;s native protocol, which makes the RPC calls between javascript and java efficient and agile. This tool has been contributed to Dubbo&amp;rsquo;s community.&lt;/p>
&lt;/blockquote>
&lt;h2 id="cross-language-calls-for-micro-service">Cross-language calls for micro service&lt;/h2>
&lt;p>Nowadays, Internet architecture tends to be micro-service way. The discussions about micro-service architecture become the most mentioned topic in different technical conferences. In China, most of the companies, such as Qianmiwang, choose Dubbo as their micro-service architecture solution. As most of the internet companies, Qianmiwang uses various programming languages. Java is for most of the backend services. Each business based on these backend can choose its own programming language such as go, python and javascript. Therefore, here comes a challenge, cross-language calls. Some well-known solutions are as follows:&lt;/p></description></item><item><title>From Cross-Language Calls to dubbo2.js</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/from-cross-language-calls-to-dubbo2.js/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/from-cross-language-calls-to-dubbo2.js/</guid><description>&lt;blockquote>
&lt;p>&lt;a href="https://github.com/dubbo/dubbo2.js">dubbo2.js&lt;/a> is a Node.js Dubbo client contributed by &lt;a href="https://www.qianmi.com/">Qianmi&lt;/a> to the Dubbo community. It provides support for the native Dubbo protocol in Node.js, making RPC calls between Node.js and Java, two heterogeneous languages, convenient and efficient.&lt;/p>
&lt;/blockquote>
&lt;h2 id="cross-language-calls-in-microservices">Cross-Language Calls in Microservices&lt;/h2>
&lt;p>Microservice architecture has become the trend in today’s internet architecture, and discussions about microservices occupy most of the various technical conferences. The most widely used service governance framework in China is undoubtedly Dubbo, an open-source project from Alibaba. Qianmi has also chosen Dubbo as its microservice governance framework. On the other hand, like most internet companies, Qianmi has a diverse range of development languages, with most backend services supported by Java, while each business line has the freedom to choose its own development language, leading to issues of calling Node.js, Python, and Go in a multi-language environment. Cross-language invocation is a broad and challenging topic, and several solutions frequently mentioned in the industry are as follows:&lt;/p></description></item><item><title>Generic invoke of Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/generic-invoke-of-dubbo/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/generic-invoke-of-dubbo/</guid><description>&lt;h1 id="generic-invoke-of-dubbo">Generic invoke of Dubbo&lt;/h1>
&lt;p>The generic invoke could be considered to be used in the following cases:&lt;/p>
&lt;ul>
&lt;li>Service test platform&lt;/li>
&lt;li>API service gateway&lt;/li>
&lt;/ul>
&lt;p>The generic invoke is mainly used when the consumer does not have an API interface;
instead of depending the interface jar package, the service call is initiated directly through the GenericService interface, and all POJOs in the parameters and return values are represented by a &lt;code>Map&lt;/code>.
Generic invoke does not require attention on the server and can be exposed as normal services.&lt;/p></description></item><item><title>Native Image using GraalVM</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/native-image-using-graalvm/</link><pubDate>Tue, 14 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/14/native-image-using-graalvm/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>This document will show you how to access GraalVM with a dubbo project and how to compile the project to a binary executable using native-image. The document also introduces the efforts we made in achieving this.&lt;/p>
&lt;p>GraalVM&amp;rsquo;s essential is the Graal compiler, an excellent just-in-time (JIT) compiler. It can be used as both a JIT compiler and a static compiler for ahead-of-time compilation. Graal compiler completes the primary compilation work.&lt;/p></description></item><item><title>Dubbo's Load Balance</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/10/dubbos-load-balance/</link><pubDate>Fri, 10 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/10/dubbos-load-balance/</guid><description>&lt;h2 id="background">Background&lt;/h2>
&lt;p>Dubbo is a distributed service framework that avoids single point of failure and horizontal expansion of support services. A service typically deploys multiple instances. How to select a call from a cluster of multiple service providers involves a load balancing strategy.&lt;/p>
&lt;h2 id="concepts">Concepts&lt;/h2>
&lt;p>Before discussing load balancing, I will explain these three concepts first.&lt;/p>
&lt;ol>
&lt;li>Load Balancing&lt;/li>
&lt;li>Fault-tolerant Cluster&lt;/li>
&lt;li>Service Route&lt;/li>
&lt;/ol>
&lt;p>These three concepts are confusing. They all describe how to choose from multiple Providers to make calls. So what is the difference between them? Let me give a simple example and explain these concepts clearly.&lt;/p></description></item><item><title>Use Annotations In Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/use-annotations-in-dubbo/</link><pubDate>Tue, 07 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/use-annotations-in-dubbo/</guid><description>&lt;p>With the widely promotion and implementation of Microservices Architecture, the Microservices Architecture represented by Spring Boot and Spring Cloud, in Java ecosystem, introduced some brand new programming model, like:&lt;/p>
&lt;ul>
&lt;li>Annotation-Driven&lt;/li>
&lt;li>External Configuration&lt;/li>
&lt;li>Auto-Configure&lt;/li>
&lt;/ul>
&lt;p>New programming model have some advantages, for example, it does not require &lt;code>XML&lt;/code> configuration, it can simplify deployment process, beyond that，it can promote development efficiency. In order to implement the microservice architecture better，Dubbo has provided more perfect support for the above three scenarios since version 2.5.8. This article focuses on introduce annotations rather than discuss the traditional XML configuration approach. There are two kinds of automatic assembly, external configuration and automatic assembly, will be introduced in another aricle.&lt;/p></description></item><item><title>Using Zookeeper in Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/using-zookeeper-in-dubbo/</link><pubDate>Tue, 07 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/using-zookeeper-in-dubbo/</guid><description>&lt;h2 id="introduction-of-zookeeper">Introduction of Zookeeper&lt;/h2>
&lt;h3 id="the-basic-concept">The basic concept&lt;/h3>
&lt;p>In the mordern distrbuted applications, there are multiple coordination problems between nodes and nodes, including: leader election, group service, locking, configuration management, naming and synchronization. Apache Zookeeper, as its name implied, is a distributed, open-source coordination service framwork to address these demand.&lt;/p>
&lt;p>In order to ensure the high performance, highly available and strictly ordered access, the performance aspects of ZooKeeper means it can be used in large, distributed systems and can also be deployed in cluster mode, which called &amp;lsquo;ZooKeeper ensemble&amp;rsquo;. In ZooKeeper ensemble, all write requests from clients are forwarded to a single server, called the leader, through the ZAB(Zookeeper Atomic Broadcast Protocol) to make sure the message in each nodes are same. Clients can access any one of the clusters to read and write data without worrying about inconsistencies in the data.&lt;/p></description></item><item><title>Using Zookeeper in Dubbo Applications</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/using-zookeeper-in-dubbo-applications/</link><pubDate>Tue, 07 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/using-zookeeper-in-dubbo-applications/</guid><description>&lt;h2 id="introduction-to-zookeeper">Introduction to Zookeeper&lt;/h2>
&lt;h3 id="basic-concepts">Basic Concepts&lt;/h3>
&lt;p>In modern distributed applications, coordination issues often arise between nodes, including leader election, cluster management, distributed locks, distributed configuration management, unified naming services, and state synchronization. &lt;a href="https://zookeeper.apache.org">Apache Zookeeper&lt;/a>, as its name suggests, is a distributed coordination service framework designed to address these concerns.&lt;/p>
&lt;p>To ensure high availability, ZooKeeper can be deployed in a cluster mode, known as a &lt;em>ZooKeeper ensemble&lt;/em>. Within a ZooKeeper cluster, one node always acts as the leader, and through the &lt;em>ZAB (Zookeeper Atomic Broadcast Protocol) &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/em> protocol, it ensures the consistency of information across all nodes. Clients can access any node in the cluster for read and write operations without worrying about data inconsistency.&lt;/p></description></item><item><title>Your First Dubbo Demo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/dubbo-101/</link><pubDate>Tue, 07 Aug 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/08/07/dubbo-101/</guid><description>&lt;h2 id="java-rmi-introduction">Java RMI Introduction&lt;/h2>
&lt;p>Java RMI (Remote Method Invocation) is a mechanism that allows users to access or invocate an object and a method running on another JVM (Java Virtual Machine). RMI is an implementation of RPC (Remote Procedure Call) in java with support of OOP (Object Oriented Paradigms). Instead of bothering IDL (Interface Define Language), users can build distributed applications by depending on interfaces in an easy and natural way.&lt;/p></description></item><item><title>The Third Dubbo Developer Salon Held Successfully in Shenzhen</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/30/the-third-dubbo-developer-salon-held-successfully-in-shenzhen/</link><pubDate>Mon, 30 Jul 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/30/the-third-dubbo-developer-salon-held-successfully-in-shenzhen/</guid><description>&lt;p>The third Dubbo Developer Salon was successfully held in Shenzhen, with over 2,000 developers registering, more than 700 participants on-site, and a total of 17,000 online views guided by Alibaba Cloud&amp;rsquo;s Tianchi, Yunqi Community, and Daka Talk.&lt;/p>
&lt;p>Speakers&lt;/p>
&lt;ul>
&lt;li>Chen Zhixuan: The Current State of Dubbo Open Source and the Plan for 2.7&lt;/li>
&lt;li>Kang Bin: The Microservices Journey of Lexin Group&lt;/li>
&lt;li>Lin Jialiang: Sentinel - The All-Round Traffic Sentinel for Enterprise Users&lt;/li>
&lt;/ul></description></item><item><title>Sentinel: The flow sentinel of Dubbo services</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/</link><pubDate>Fri, 27 Jul 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/</guid><description>&lt;p>In large clusters there may be thousands of Dubbo service instances in production, with continuous traffic coming in. However, in distributed systems, some services may be unavailable due to various of failure such as traffic surge, high system load, and network latency. If no control actions are performed, this may cause cascading failure, affecting the availability of the service. So we need a powerful library - Sentinel, which can guarantee the stability of the service, to protect the Dubbo service.&lt;/p></description></item><item><title>Sentinel Safeguarding Dubbo Services</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/27/sentinel-safeguarding-dubbo-services/</link><pubDate>Fri, 27 Jul 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/27/sentinel-safeguarding-dubbo-services/</guid><description>&lt;p>In complex production environments, thousands of Dubbo service instances may be deployed, with continuous traffic flowing in and services calling each other. However, distributed systems may encounter issues like traffic surges, system overload, and network delays, leading to service unavailability. If not controlled, this may cause cascading failures, impacting service availability. Hence, the rational control of traffic becomes key to ensuring service stability.&lt;/p>
&lt;p>&lt;a href="https://github.com/alibaba/Sentinel">Sentinel&lt;/a> is an open-source lightweight traffic control product developed by Alibaba&amp;rsquo;s middleware team, focusing on traffic dynamics and helping users protect service stability through &lt;strong>traffic control&lt;/strong>, &lt;strong>circuit breaking&lt;/strong>, and &lt;strong>system load protection&lt;/strong>. This article will explore how Sentinel performs traffic control based on Dubbo, providing best practices for Dubbo integration with Sentinel.&lt;/p></description></item><item><title>Tracking with Pinpoint</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/12/tracking-with-pinpoint/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/12/tracking-with-pinpoint/</guid><description>&lt;p>After using Dubbo to serve or integrate applications, assuming that a service backstage log shows an exception and that the service is invoked by multiple applications, it is often difficult to determine which application is called, and what is the cause of the problem, so we need a set of distributed tracking systems to quickly locate the problem. Pinpoint can help us quickly locate problems (of course, there are more than one solution).&lt;/p></description></item><item><title>Using Pinpoint for Distributed Tracing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/12/using-pinpoint-for-distributed-tracing/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/12/using-pinpoint-for-distributed-tracing/</guid><description>&lt;p>When using Dubbo for service-oriented or integrated applications, if a service&amp;rsquo;s backend logs show an exception, and this service is called by multiple applications, it is often difficult to determine which application made the call and what the cause of the issue is. Thus, we need a distributed tracing system to quickly locate the problem, and Pinpoint can help us achieve this (of course, there are other solutions as well).&lt;/p></description></item><item><title>Your First Dubbo Filter</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/01/your-first-dubbo-filter/</link><pubDate>Sun, 01 Jul 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/07/01/your-first-dubbo-filter/</guid><description>&lt;h3 id="overview">Overview&lt;/h3>
&lt;p>In overall design of Dubbo, Filter is a very important concept, most of Dubbo&amp;rsquo;s functions are based on this
extension point, and the Filter interception will be executed during each call.&lt;/p>
&lt;h4 id="extension-mechanism-of-dubbo-filter">Extension Mechanism of Dubbo Filter&lt;/h4>
&lt;p>There are already about 20 Filters implemented in Dubbo. Their entry is ProtocolFilterWrapper, ProtocolFilterWrapper
makes a Wrapper on Protocol and will be loaded when the extension is loaded. Then, let&amp;rsquo;s see how
the Filter chain is constructed.&lt;/p></description></item><item><title>The Second Dubbo Developer Salon Successfully Held in Shanghai</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/06/23/the-second-dubbo-developer-salon-successfully-held-in-shanghai/</link><pubDate>Sat, 23 Jun 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/06/23/the-second-dubbo-developer-salon-successfully-held-in-shanghai/</guid><description>&lt;p>The Second Dubbo Developer Salon was successfully held in Shanghai, with over 700 developers registered and 300+ participants on site. The online live broadcast, guided by Alibaba Cloud Tianchi, Yunqi Community, and Daka Shuo, reached over 10,000 views.&lt;/p>
&lt;p>Speakers and PPT:&lt;/p>
&lt;ul>
&lt;li>Zhu Yong: The Current State and Future Plans of Dubbo (Chinese) &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-status-and-roadmap.pdf">slides&lt;/a>&lt;/li>
&lt;li>Xiao Ma Ge: Practical Experiences and Reflections on the Road to Dubbo Cloud Native (Chinese) &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-cloud-native-practices-and-thoughts.pdf">slides&lt;/a>&lt;/li>
&lt;li>Guo Ping: Nacos - Contributing to the Dubbo Ecosystem, Alibaba&amp;rsquo;s Open Source Plans for the Registration Center and Configuration Center (Chinese) &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/nacos-open-source-initiative.pdf">slides&lt;/a>&lt;/li>
&lt;li>Pan Zhiwei: Application Scenarios of Dubbo in the Internet Finance Industry (Chinese) &lt;a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201806%40Shanghai/dubbo-practices-on-internet-finance-industries.pdf">slides&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Using Zipkin in Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/06/17/using-zipkin-in-dubbo/</link><pubDate>Sun, 17 Jun 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/06/17/using-zipkin-in-dubbo/</guid><description>&lt;p>As business grows, the scale of applications continues to expand, and traditional application architectures cannot meet demands. The transformation to a service-oriented architecture is imperative, with distributed service frameworks like Dubbo becoming essential. As the microservices concept becomes widely accepted, applications are further segmented into finer granularity, and different applications are independently managed by various development teams, resulting in a very complex distributed system. No one can clearly and timely know the overall dependency relationships within the system. When problems occur, it&amp;rsquo;s also not possible to quickly identify which link in the chain fails.&lt;/p></description></item><item><title>The First Dubbo Developer Salon Successfully Held in Beijing</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/05/12/the-first-dubbo-developer-salon-successfully-held-in-beijing/</link><pubDate>Sat, 12 May 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/05/12/the-first-dubbo-developer-salon-successfully-held-in-beijing/</guid><description>&lt;p>The First Dubbo Developer Salon was successfully held in Beijing, with over 400 developers participating. This is a great start!&lt;/p>
&lt;p>The speakers and topics are as follows:&lt;/p>
&lt;ul>
&lt;li>Luo Yi: The Current Status and Future Planning of Dubbo &lt;a href="https://github.com/dubbo/awesome-dubbo/raw/master/slides/meetup/201805%40Beijing/dubbo-present-and-future.pdf">PDF&lt;/a>&lt;/li>
&lt;li>Liu Jun: The Fourth Ali Middleware Performance Challenge &lt;a href="https://github.com/dubbo/awesome-dubbo/raw/master/slides/meetup/201805%40Beijing/introduction-to-4th-aliware-performance-challenge.pdf">PDF&lt;/a>&lt;/li>
&lt;li>Chen Zhi Xuan: Quickly Building Microservices with Dubbo and Spring Boot &lt;a href="https://github.com/dubbo/awesome-dubbo/raw/master/slides/meetup/201805%40Beijing/quickly-building-microservice-with-dubbo-and-springboot.pdf">PDF&lt;/a>&lt;/li>
&lt;li>Wang Xin: Sharing the Service-Oriented Practice Journey of Dubbo and Weidian &lt;a href="https://github.com/dubbo/awesome-dubbo/raw/master/slides/meetup/201805%40Beijing/dubbo-and-weidian's-practice-on-microservice-architecture.pdf">PDF&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>ApacheCon NA Conference Agenda Published</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/05/02/apachecon-na-conference-agenda-published/</link><pubDate>Wed, 02 May 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/05/02/apachecon-na-conference-agenda-published/</guid><description>&lt;p>Luo Yi/Liu Jun will give a talk titled &amp;ldquo;Introducing Apache Dubbo (Incubating): What is Dubbo and How it Works&amp;rdquo; at the ApacheCon conference held in Montreal. Please click &lt;a href="https://apachecon.dukecon.org/acna/2018/#/scheduledEvent/b8db9dc580d85853f">here&lt;/a> to view the conference agenda, and register &lt;a href="https://www.eventbrite.com/e/apachecon-north-america-2018-registration-43200327342">here&lt;/a>.&lt;/p></description></item><item><title>2018 Projects Announced at Google Summer of Code</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/04/25/2018-projects-announced-at-google-summer-of-code/</link><pubDate>Wed, 25 Apr 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/04/25/2018-projects-announced-at-google-summer-of-code/</guid><description>&lt;p>At the Google Summer of Code, 2018 projects were announced, and Raghu Reddy&amp;rsquo;s project &amp;ldquo;Apache Dubbo extends support for serial protocols&amp;rdquo; was &lt;a href="https://summerofcode.withgoogle.com/projects/#4747840161579008">accepted&lt;/a>! Congratulations to him!&lt;/p></description></item><item><title>Publishing Dubbo Admin Images on DockerHub</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/04/23/publishing-dubbo-admin-images-on-dockerhub/</link><pubDate>Mon, 23 Apr 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/04/23/publishing-dubbo-admin-images-on-dockerhub/</guid><description>&lt;p>Dubbo Admin is the service governance center for Dubbo, providing many features such as service governance and configuration management needed for daily operations.&lt;/p>
&lt;p>Dubbo Admin includes both front-end and back-end code. If users need to download the source code and compile it themselves, it will take some time. This experience is not ideal, especially for users who wish to quickly research and try Dubbo Admin.&lt;/p>
&lt;p>Docker is an open-source application container engine that allows developers to package applications and their dependencies into a portable image. There is a strong demand in the community for a Dubbo Admin image. Docker maintains a public repository, DockerHub, which also has many domestic mirrors, allowing for faster access. Publishing the Dubbo Admin image to DockerHub is a good choice.&lt;/p></description></item><item><title>Dubbo Roadmap Revealed at QCon Beijing 2018</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/04/22/dubbo-roadmap-revealed-at-qcon-beijing-2018/</link><pubDate>Sun, 22 Apr 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/04/22/dubbo-roadmap-revealed-at-qcon-beijing-2018/</guid><description>&lt;p>Ro Yi delivered a keynote speech on the current status and future plans of Dubbo at QCon Beijing 2018. For more details, please check the &lt;a href="https://github.com/dubbo/awesome-dubbo/raw/master/slides/qcon2018/dubbo-present-and-future.pdf">slides&lt;/a>.&lt;/p></description></item><item><title>How to Contribute to the Dubbo Community</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/03/11/how-to-contribute-to-the-dubbo-community/</link><pubDate>Sun, 11 Mar 2018 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/2018/03/11/how-to-contribute-to-the-dubbo-community/</guid><description>&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/blog/involve-dubbo/head.jpg">&lt;/p>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This article was first shared at the Apache Dubbo meetup in Chengdu, where the topic was discussed for the first time. It&amp;rsquo;s not that we lack better topics; rather, we believe this topic is crucial and even suggest it should be covered in every meetup.&lt;/p>
&lt;p>Most of you are familiar with the development history of Dubbo. Dubbo was open-sourced on GitHub in 2011 and, for several years, was not maintained due to various reasons. It was restarted by Alibaba in July last year and donated to Apache on February 16, 2018.&lt;/p></description></item><item><title/><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/config/properties/</guid><description>&lt;p>aliases:&lt;/p>
&lt;ul>
&lt;li>/en/docs3-v2/java-sdk/reference-manual/config/properties/&lt;/li>
&lt;li>/en/docs3-v2/java-sdk/reference-manual/config/properties/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/performance/dump/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/performance/lazy-connect/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/performance/simplify-registry-data/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/performance/stickiness/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/service/delay-publish/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/service/preflight-check/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/service/registry-only/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/service/service-downgrade/&lt;/li>
&lt;li>/en/overview/mannual/java-sdk/advanced-features-and-usage/service/subscribe-only/
description: Contains all configuration components supported by Dubbo and all configuration items supported by each configuration component.
linkTitle: Configuration Manual
title: Configuration Reference Manual
type: docs
weight: 6&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="jvm--d-parameters">JVM (-D) Parameters&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">JVM Parameter&lt;/th>
 &lt;th style="text-align: left">Example Value&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.{config-name}.{property}&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.name=&amp;ldquo;dubbo-demo&amp;rdquo;&lt;br/>&lt;br/>-Ddubbo.registry.address=&amp;ldquo;nacos://host:port&amp;rdquo;&lt;br/>&lt;br/>-Ddubbo.protocol.port=&amp;ldquo;20880&amp;rdquo;&lt;br/>&lt;br/>&amp;hellip;&amp;hellip;&lt;/td>
 &lt;td style="text-align: left">Dubbo supports specifying all configuration items in the JVM parameter format. Here, &lt;code>config&lt;/code> refers to items such as application, registry, protocol, and &lt;code>property&lt;/code> refers to specific properties within each configuration item.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.resolve.file&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.resolve.file=/home/ken/&amp;hellip;/dubbo-resolve.properties&lt;/td>
 &lt;td style="text-align: left">Specifies the direct connection URL for each interface in the file, e.g., org.apache.dubbo.demo.DemoService=tri://127.0.0.1:50051/org.apache.dubbo.demo.DemoService?xxx=xxx&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">org.graalvm.nativeimage.imagecode&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/oracle/graal/blob/master/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/ImageInfo.java">https://github.com/oracle/graal/blob/master/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/ImageInfo.java&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.properties.file&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.properties.file=foo.properties&lt;/td>
 &lt;td style="text-align: left">Specifies the properties configuration file path, which can be an absolute path or a classpath-relative path. Default value is &lt;code>dubbo.properties&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.jstack-dump.max-line&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.jstack-dump.max-line=20&lt;/td>
 &lt;td style="text-align: left">Dubbo supports automatic printing of the call stack. This parameter controls the number of stack lines, e.g., only the first 20 lines will be printed.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.json-framework.prefer&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.json-framework.prefer=gson&lt;/td>
 &lt;td style="text-align: left">Sets the specific implementation of JSON serialization in the framework. Currently available implementations are &lt;code>fastjson2&lt;/code>, &lt;code>fastjson&lt;/code>, &lt;code>gson&lt;/code>, &lt;code>jackson&lt;/code>. The framework automatically finds the available implementation in decreasing order of preference.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.network.interface.ignored&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.network.interface.ignored=eth1,eth2&lt;/td>
 &lt;td style="text-align: left">In multi-network card environments, used when you need to manually control the network card address registered with the registry. It is used to exclude certain network cards.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.network.interface.preferred&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.network.interface.preferred=eth0&lt;/td>
 &lt;td style="text-align: left">In multi-network card environments, used to specify a particular network card for registration with the registry.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">sun.rmi.transport.tcp.responseTimeout&lt;/td>
 &lt;td style="text-align: left">-Dsun.rmi.transport.tcp.responseTimeout=5000&lt;/td>
 &lt;td style="text-align: left">Sets the timeout for RMI protocol, in milliseconds.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">env&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Specific parameter for Apollo configuration center.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">app.id&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Specific parameter for Apollo configuration center.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">apollo.cluster&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Specific parameter for Apollo configuration center.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">apollo.meta&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Specific parameter for Apollo configuration center.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.mapping.cache.filePath&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.mapping.cache.filePath=~/.dubbo/mapping/&lt;/td>
 &lt;td style="text-align: left">Sets the cache file for &lt;code>interface-application&lt;/code> mapping, usually for service discovery. The file&amp;rsquo;s absolute path address.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.mapping.cache.fileName&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.mapping.cache.fileName=dubbo-mapping&lt;/td>
 &lt;td style="text-align: left">Sets the cache file for &lt;code>interface-application&lt;/code> mapping, usually for service discovery. The file name; the final file will be stored as &lt;code>dubbo-mapping.dubbo.cache&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.mapping.cache.entrySize&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.mapping.cache.maxFileSize=300&lt;/td>
 &lt;td style="text-align: left">Sets the maximum number of entries in the &lt;code>interface-application&lt;/code> mapping cache file, usually for service discovery.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.mapping.cache.maxFileSize&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.mapping.cache.maxFileSize=104857600&lt;/td>
 &lt;td style="text-align: left">Sets the maximum space for the &lt;code>interface-application&lt;/code> mapping cache file, usually for service discovery, in bytes.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.meta.cache.filePath&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.meta.cache.filePath=~/.dubbo/meta/&lt;/td>
 &lt;td style="text-align: left">Sets the cache file for &lt;code>metadata&lt;/code> cache, usually for service discovery. The file&amp;rsquo;s absolute path address.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.meta.cache.fileName&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.meta.cache.fileName=dubbo-meta&lt;/td>
 &lt;td style="text-align: left">Sets the cache file for &lt;code>metadata&lt;/code> cache, usually for service discovery. The file name; the final file will be stored as &lt;code>dubbo-meta.dubbo.cache&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.meta.cache.entrySize&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.meta.cache.maxFileSize=300&lt;/td>
 &lt;td style="text-align: left">Sets the maximum number of entries in the &lt;code>metadata&lt;/code> cache file, usually for service discovery.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.meta.cache.maxFileSize&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.meta.cache.maxFileSize=104857600&lt;/td>
 &lt;td style="text-align: left">Sets the maximum space for the &lt;code>metadata&lt;/code> cache file, usually for service discovery, in bytes.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.application.use-secure-random-request-id&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.use-secure-random-request-id=true&lt;/td>
 &lt;td style="text-align: left">Sets the rule for generating the request ID for each RPC call. If not set, an incremental value will be used.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.protocol.default-close-timeout&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.protocol.default-close-timeout=10000&lt;/td>
 &lt;td style="text-align: left">Sets the TCP server shutdown wait time, in milliseconds.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.protocol.default-heartbeat&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.protocol.default-heartbeat=10000&lt;/td>
 &lt;td style="text-align: left">Sets the interval for initiating heartbeat, in milliseconds.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.hessian.allowNonSerializable&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Allows serialization of classes that do not implement the &lt;code>Serializable&lt;/code> interface, effective for Hessian serialization.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.application.hessian2.whitelist&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.hessian2.whitelist=true&lt;/td>
 &lt;td style="text-align: left">Enables a whitelist mechanism for Hessian serialization. If set to true, it will continue to configure the following allow rules; otherwise, it will configure the deny rules.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.application.hessian2.allow&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.hessian2.allow=org.apache.dubbo.&lt;em>;com.company.&lt;/em>&lt;/td>
 &lt;td style="text-align: left">If true, configures allow rules (refer to the documentation for more details).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.application.hessian2.deny&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.hessian2.deny=org.apache.dubbo.&lt;em>;io.commons.&lt;/em>&lt;/td>
 &lt;td style="text-align: left">If false, configures deny rules (refer to the documentation for more details).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.application.manual-register&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.manual-register=true&lt;/td>
 &lt;td style="text-align: left">When set, all services will not be automatically registered to the registry until the user calls &lt;code>online&lt;/code> or other commands to manually complete registration.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.compact.enable&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.migration-file.enable&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.migration-file.enable=true&lt;/td>
 &lt;td style="text-align: left">Whether to enable rule file reading during migration to application-level address discovery.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.migration.file&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.migration.file=dubbo-migration.yaml&lt;/td>
 &lt;td style="text-align: left">Specifies the path to the rule file for migrating to application-level address discovery, which can be an absolute or classpath-relative path. Default value is &lt;code>dubbo-migration.yaml&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.application.logger&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.application.logger=slf4j&lt;/td>
 &lt;td style="text-align: left">Sets the logging component used by the Dubbo framework. After setting, Dubbo&amp;rsquo;s own logs will be printed here (does not affect application logs). Currently supported components are &lt;code>slf4j&lt;/code>, &lt;code>log4j&lt;/code>, &lt;code>log4j2&lt;/code>, etc. Ensure that the corresponding component dependency is added to the application.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.properties.file&lt;/td>
 &lt;td style="text-align: left">-Ddubbo.properties.file=foo.properties&lt;/td>
 &lt;td style="text-align: left">Specifies the properties configuration file path, which can be an absolute or classpath-relative path. Default value is &lt;code>dubbo.properties&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="environment-variables">Environment Variables&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Environment Variable&lt;/th>
 &lt;th style="text-align: left">Example Value&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_{CONFIG-NAME}.{PROPERTY}&lt;/td>
 &lt;td style="text-align: left">DUBBO_APPLICATION_NAME=&amp;ldquo;dubbo-demo&amp;rdquo;&lt;br/>&lt;br/>DUBBO_REGISTRY_ADDRESS=&amp;ldquo;nacos://host:port&amp;rdquo;&lt;br/>&lt;br/>DUBBO_PROTOCOL_PORT=&amp;ldquo;20880&amp;rdquo;&lt;br/>&lt;br/>&amp;hellip;&amp;hellip;&lt;/td>
 &lt;td style="text-align: left">Dubbo supports specifying all configuration items as environment variables. &lt;code>CONFIG-NAME&lt;/code> refers to items such as application, registry, protocol, and &lt;code>PROPERTY&lt;/code> refers to specific properties within each item.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_DEFAULT_SERIALIZATION&lt;/td>
 &lt;td style="text-align: left">DUBBO_DEFAULT_SERIALIZATION=&amp;ldquo;hessian2&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">Sets the default serialization method for the framework, e.g., &lt;code>hessian2&lt;/code>, &lt;code>fastjson2&lt;/code>, &lt;code>msgpack&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO2_COMPACT_ENABLE&lt;/td>
 &lt;td style="text-align: left">DUBBO2_COMPAT_ENABLE=&amp;ldquo;true&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_ENV_KEYS&lt;/td>
 &lt;td style="text-align: left">DUBBO_LABELS=&amp;ldquo;tag1=value1; tag2=value2&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">&lt;code>tag1=value1&lt;/code> will be reported as an additional parameter to the URL, serving as a system environment variable for instance tagging, etc.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_LABELS&lt;/td>
 &lt;td style="text-align: left">DUBBO_ENV_KEYS=&amp;ldquo;DUBBO_TAG1, DUBBO_TAG2&amp;rdquo;&lt;/td>
 &lt;td style="text-align: left">Dubbo will read &lt;code>DUBBO_TAG1&lt;/code>, &lt;code>DUBBO_TAG2&lt;/code> environment variables, and report values such as &lt;code>DUBBO_TAG1=value&lt;/code> as additional parameters to the URL.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">POD_NAMESPACE&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Specifies the namespace for Kubernetes Service scenarios.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">CLUSTER_DOMAIN&lt;/td>
 &lt;td style="text-align: left">&lt;/td>
 &lt;td style="text-align: left">Specifies the cluster name for Kubernetes Service scenarios, default is &lt;code>default&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_IP_TO_REGISTRY&lt;/td>
 &lt;td style="text-align: left">DUBBO_IP_TO_REGISTRY=30.123.45.187&lt;/td>
 &lt;td style="text-align: left">Specifies the IP address to register in the registry URL.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_PORT_TO_REGISTRY&lt;/td>
 &lt;td style="text-align: left">DUBBO_PORT_TO_REGISTRY=20880&lt;/td>
 &lt;td style="text-align: left">Specifies the port number to register in the registry URL.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_{PROTOCOL}_PORT_TO_REGISTRY&lt;/td>
 &lt;td style="text-align: left">DUBBO_DUBBO_IP_TO_REGISTRY=30.123.45.187&lt;br/>&lt;br/>DUBBO_TRI_IP_TO_REGISTRY=30.123.45.187&lt;/td>
 &lt;td style="text-align: left">Specifies the IP address to register in the registry URL, and can specify different IPs for different protocols.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_{PROTOCOL}_PORT_TO_REGISTRY&lt;/td>
 &lt;td style="text-align: left">DUBBO_DUBBO_PORT_TO_REGISTRY=20880&lt;br/>&lt;br/>DUBBO_TRI_PORT_TO_REGISTRY=50051&lt;/td>
 &lt;td style="text-align: left">Specifies the port number to register in the registry URL, and can specify different ports for different protocols.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_IP_TO_BIND&lt;/td>
 &lt;td style="text-align: left">DUBBO_IP_TO_BIND=30.123.45.187&lt;/td>
 &lt;td style="text-align: left">Specifies the IP address for TCP binding.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_PORT_TO_BIND&lt;/td>
 &lt;td style="text-align: left">DUBBO_PORT_TO_BIND=20880&lt;/td>
 &lt;td style="text-align: left">Specifies the port for TCP binding.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_{PROTOCOL}_IP_TO_BIND&lt;/td>
 &lt;td style="text-align: left">DUBBO_DUBBO_IP_TO_BIND=30.123.45.187&lt;br/>&lt;br/>DUBBO_TRI_IP_TO_BIND=30.123.45.187&lt;/td>
 &lt;td style="text-align: left">Specifies the IP address for TCP binding, and can specify different IPs for different protocols.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">DUBBO_{PROTOCOL}_PORT_TO_BIND&lt;/td>
 &lt;td style="text-align: left">DUBBO_DUBBO_PORT_TO_BIND=20880&lt;br/>&lt;br/>DUBBO_TRI_PORT_TO_BIND=50051&lt;/td>
 &lt;td style="text-align: left">Specifies the port for TCP binding, and can specify different ports for different protocols.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.properties.file&lt;/td>
 &lt;td style="text-align: left">dubbo.properties.file=foo.properties&lt;/td>
 &lt;td style="text-align: left">Specifies the properties configuration file path, which can be an absolute or classpath-relative path. Default value is &lt;code>dubbo.properties&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">dubbo.migration.file&lt;/td>
 &lt;td style="text-align: left">dubbo.migration.file=dubbo-migration.yaml&lt;/td>
 &lt;td style="text-align: left">Specifies the migration rule file path for application-level address discovery, which can be an absolute or classpath-relative path. Default value is &lt;code>dubbo-migration.yaml&lt;/code>.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="configuration-manual">Configuration Manual&lt;/h2>
&lt;p>Regardless of whether you are using Spring Boot, XML, annotations, or APIs to write Dubbo applications, you can refer to the table below to understand the specific meaning of each configuration item.&lt;/p></description></item><item><title/><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/common/readme/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/common/readme/</guid><description>&lt;h1 id="common">Common&lt;/h1>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/common/faq/">FAQ&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title/><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/http/</guid><description>&lt;h1 id="http">HTTP&lt;/h1>
&lt;p>Base on sample/http.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/simple/http-http/">http-http&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/pixiu/other/user/samples/http/grpc/http-grpc/">http-gprc&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>AOP and Extension Mechanism</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/aop_and_extension/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/aop_and_extension/</guid><description>&lt;h2 id="1-extension-module-and-init-method">1. Extension Module and Init Method&lt;/h2>
&lt;h3 id="11-interface-and-implementation">1.1 Interface and Implementation&lt;/h3>
&lt;p>In Golang, an interface is often accompanied by multiple implementation classes. Dubbo-go provides a pluggable and extensible mechanism for interface implementation classes, reducing coupling between modules and facilitating developers in introducing and customizing components.&lt;/p>
&lt;h3 id="12-init-method-in-golang">1.2 Init Method in Golang&lt;/h3>
&lt;p>The init method, as a special method in Golang, executes first on program startup when a user imports a set of modules, performing loading logic. This method is an important way for dubbogo to register extension components.&lt;/p></description></item><item><title>Architecture</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/architecture/</guid><description>&lt;h3 id="architecture-description">Architecture Description&lt;/h3>
&lt;p>&lt;img alt="architecture" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/golang-sdk/concept/more/architecture/architecture.png">&lt;/p>
&lt;h3 id="node-description">Node Description&lt;/h3>
&lt;ul>
&lt;li>&lt;code>Registry&lt;/code> : The registry center responsible for service registration and discovery in dubbo-go&lt;/li>
&lt;li>&lt;code>Consumer&lt;/code> : The service consumer that calls remote services&lt;/li>
&lt;li>&lt;code>Provider&lt;/code> : The service provider that exposes services&lt;/li>
&lt;/ul>
&lt;h3 id="process-description">Process Description&lt;/h3>
&lt;ul>
&lt;li>&lt;code>0. register&lt;/code> : When the service provider starts, it will automatically register its services with the registry center&lt;/li>
&lt;li>&lt;code>1. subscribe&lt;/code> : The service consumer will subscribe to the services it needs from the registry center upon starting&lt;/li>
&lt;li>&lt;code>2. notify&lt;/code> : The registry center returns service registration information to the service consumer. When the subscribed service changes, the change data will be pushed to the consumer&lt;/li>
&lt;li>&lt;code>3. invoke&lt;/code> : The service consumer selects a suitable service address based on the service addresses obtained from the registry center and initiates a request after applying the load balancing algorithm&lt;/li>
&lt;/ul></description></item><item><title>Enhanced HTTP Standard Capabilities of Triple - Multi Content-Type Support</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/support-more-content-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/proposals/support-more-content-types/</guid><description>&lt;h3 id="enhanced-http-standard-capabilities-of-triple---multi-content-type-support">&lt;strong>Enhanced HTTP Standard Capabilities of Triple - Multi Content-Type Support&lt;/strong>&lt;/h3>
&lt;blockquote>
&lt;p>This article mainly introduces how Triple supports more standard HTTP Content-Types and how services should handle these requests.&lt;/p>
&lt;/blockquote>
&lt;h4 id="overview">&lt;strong>Overview&lt;/strong>&lt;/h4>
&lt;p>Triple currently supports two serialization methods: Json and protobuf, corresponding to the ContentTypes:&lt;/p>
&lt;ul>
&lt;li>application/json&lt;/li>
&lt;li>application/grpc+proto&lt;/li>
&lt;/ul>
&lt;p>This poses no problem when both consumers and providers are backend services. However, for browser clients, they may send more types of ContentTypes that the server needs to support for decoding, such as:&lt;/p></description></item><item><title>Enhanced HTTP Standard Capabilities of Triple Protocol</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/</guid><description>&lt;h2 id="enhanced-http-standard-capabilities-of-triple-protocol---support-for-multiple-content-type">Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type&lt;/h2>
&lt;blockquote>
&lt;p>This article focuses on how Triple supports more of the HTTP standard Content-Type and how the service receives these requests.&lt;/p>
&lt;/blockquote>
&lt;h4 id="overview">&lt;strong>Overview&lt;/strong>&lt;/h4>
&lt;p>Triple currently supports two serialization methods: Json and protobuf, corresponding to the ContentTypes:&lt;/p>
&lt;ul>
&lt;li>application/json&lt;/li>
&lt;li>application/grpc+proto&lt;/li>
&lt;/ul>
&lt;p>This poses no issue when both the consumer and provider are backend services. However, for browser clients, they may send a wider variety of ContentTypes, which requires server-side support for decoding, such as:&lt;/p></description></item><item><title>Extension Point Development Guide</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/</guid><description>&lt;h2 id="1-introduction-to-dubbo-spi-extensions">1. Introduction to Dubbo SPI Extensions&lt;/h2>
&lt;p>The extension mechanism in Dubbo is similar to the &lt;a href="https://www.baeldung.com/java-spi" target="_blank">JDK standard SPI extension points&lt;/a> principle. Dubbo has made certain modifications and enhancements:&lt;/p>
&lt;ul>
&lt;li>The JDK standard SPI instantiates all extension point implementations at once, which can waste resources if the extension implementations are resource-intensive but not used.&lt;/li>
&lt;li>If an extension point fails to load, JDK SPI does not provide detailed information to locate the problem, while Dubbo SPI logs the actual failure reason on failure and prints it out.&lt;/li>
&lt;li>Adds &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/#23-ioc-mechanism">IOC&lt;/a>, &lt;a href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/architecture/dubbo-spi/#24-aop-mechanism">AOP&lt;/a> capabilities.&lt;/li>
&lt;li>Adds sorting capabilities.&lt;/li>
&lt;li>Adds conditional activation capabilities.&lt;/li>
&lt;li>Provides a series of more flexible APIs, such as &lt;code>getting all SPI extension implementations&lt;/code>, &lt;code>querying a specific extension implementation by name&lt;/code>, querying extensions by type, and querying extension implementations that match conditions.&lt;/li>
&lt;/ul>
&lt;h3 id="11-definition-of-spi">1.1 Definition of SPI&lt;/h3>
&lt;p>The SPI plugin in Dubbo is standard Java Interface definition and must contain the &lt;code>@org.apache.dubbo.common.extension.SPI&lt;/code> annotation:&lt;/p></description></item><item><title>Graceful Shutdown</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/graceful_shutdown/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/graceful_shutdown/</guid><description>&lt;h1 id="graceful-shutdown">Graceful Shutdown&lt;/h1>
&lt;h2 id="background">Background&lt;/h2>
&lt;p>In a stable production environment, container scheduling is fully managed by k8s, and microservice governance is maintained and managed by the service framework or operations personnel. In scenarios like releasing a new version or scaling up/down, old container instances will be terminated and replaced with new ones. If this replacement process is not handled properly in high-traffic online production environments, it can lead to a large number of erroneous requests in a short time, triggering alarms and even affecting normal business operations. For larger organizations, the losses from issues during the release process can be enormous. Hence, the need for graceful shutdown has arisen. This requires the service framework to provide stable guarantees during the service offline process on top of stable service invocation and traditional service governance capabilities, thus reducing operational costs and improving application stability.&lt;/p></description></item><item><title>Introduction to the error code mechanism</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/reference-manual/faq/intro/</guid><description>&lt;h3 id="background">Background&lt;/h3>
&lt;p>The Logger abstraction layer relied on by Dubbo provides logging capabilities, but most exception logs do not include troubleshooting explanations, making it difficult for users to handle issues when they see exceptions.&lt;/p>
&lt;p>To address this problem, starting from version 3.1 of Dubbo, an error code mechanism has been introduced. It links the error code FAQ in the official documentation with the logging framework. When exceptions are output in the log abstraction, the corresponding official documentation link is also provided to guide users in self-troubleshooting.&lt;/p></description></item><item><title>How to Install Protocol Buffer Compiler</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protoc-installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/reference/protoc-installation/</guid><description>&lt;p>Although not mandatory, Apache Dubbo supports using &lt;a href="https://protobuf.dev/programming-guides/proto3">Protocol Buffers (proto3)&lt;/a> for service definitions and serialization protocols.&lt;/p>
&lt;p>Within the protocol buffer framework, we use &lt;code>.proto&lt;/code> files to define services and message body formats, and the &lt;code>protoc&lt;/code> compiler to compile &lt;code>.proto&lt;/code> files. You can install &lt;code>protoc&lt;/code> in the following ways.&lt;/p>
&lt;h3 id="installing-via-package-manager">Installing via Package Manager&lt;/h3>
&lt;p>On Linux or macOS, you can use a package manager to install &lt;code>protoc&lt;/code>.&lt;/p>


&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>

 &lt;p>&lt;strong>Be sure to check the installed version of &lt;code>protoc&lt;/code>!&lt;/strong> This can be done as described below, since some package managers might install severely outdated versions of &lt;code>protoc&lt;/code>.&lt;/p></description></item><item><title>Proxyless Service Mesh</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/proxyless_service_mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/tutorial/deploy2/proxyless_service_mesh/</guid><description>&lt;h2 id="1-what-is-proxyless-service-mesh">1. What is Proxyless Service-Mesh?&lt;/h2>
&lt;h3 id="11-brief-analysis-of-service-mesh">1.1 Brief Analysis of Service Mesh&lt;/h3>
&lt;p>Istio is the most popular open-source service mesh today. It consists of a control plane and a data plane, as shown in the architecture below, image sourced from &lt;a href="https://istio.io/">istio official website&lt;/a>&lt;/p>
&lt;p>&lt;img alt="After using Istio" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/golang-sdk/concept/mesh/proxyless_service_mesh/service-mesh.svg">&lt;/p>
&lt;p>The control plane located at the bottom half of the image is responsible for the distribution of resources like configurations, service information, and certificates. The data plane, located at the upper half, focuses on the communication traffic between services; traditional service meshes intercept all business network traffic through proxies, which need to be aware of the configuration resources issued by the control plane to manage traffic directions as required.&lt;/p></description></item><item><title>The Application and Interface of Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/app_and_interface/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/golang-sdk/refer/sourcecode/app_and_interface/</guid><description>&lt;h2 id="dubbogo-service-levels">Dubbogo Service Levels&lt;/h2>
&lt;p>Dubbogo service levels consist of two levels: Application Level and Interface Level, which are closely related to the &lt;strong>framework configuration&lt;/strong> structure.&lt;/p>
&lt;p>As shown in the diagram below, the components at the application level are marked in light red, while those at the interface level are marked in light blue:&lt;/p>
&lt;p>&lt;img alt="img" src="https://deploy-preview-3202--dubbo.netlify.app/imgs/docs3-v2/golang-sdk/concept/more/app_and_interface/dubbogo-concept.png">&lt;/p>
&lt;h2 id="1-application-level-components">1. Application Level Components&lt;/h2>
&lt;p>Characteristics of application level components: shared by all interface level components of the current application.&lt;/p></description></item></channel></rss>