<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Registry, Service Discovery, and Load Balancing on Apache Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/</link><description>Recent content in Registry, Service Discovery, and Load Balancing on Apache Dubbo</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-3202--dubbo.netlify.app/en/overview/mannual/java-sdk/tasks/service-discovery/index.xml" rel="self" type="application/rss+xml"/><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>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>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>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>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></channel></rss>