<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Traffic Control on Apache Dubbo</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/what/core-features/traffic/</link><description>Recent content in Traffic Control on Apache Dubbo</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-3199--dubbo.netlify.app/en/overview/what/core-features/traffic/index.xml" rel="self" type="application/rss+xml"/><item><title>Condition Routing Rules</title><link>https://deploy-preview-3199--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-3199--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>Introduction to Dubbo Routing (router) Mechanism and How It Implements Traffic Control</title><link>https://deploy-preview-3199--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-3199--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>Tag Routing Rules</title><link>https://deploy-preview-3199--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-3199--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>Script Routing Rules</title><link>https://deploy-preview-3199--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-3199--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>Configuration Rule</title><link>https://deploy-preview-3199--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-3199--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>Rate Limiting &amp; Circuit Breaking</title><link>https://deploy-preview-3199--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-3199--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>Mesh Routing Rules</title><link>https://deploy-preview-3199--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-3199--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></channel></rss>