<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Proposals on Apache Dubbo</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/reference/proposals/</link><description>Recent content in Proposals on Apache Dubbo</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-3199--dubbo.netlify.app/en/overview/reference/proposals/index.xml" rel="self" type="application/rss+xml"/><item><title>Rest Protocol</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/reference/proposals/protocol-http/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--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>Registry Center, Configuration Center, and Metadata Center</title><link>https://deploy-preview-3199--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-3199--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>Overall Architecture Design of Dubbo Admin Control Plane</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/reference/proposals/admin/</link><pubDate>Tue, 28 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--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-3199--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>Metrics tracking</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/reference/proposals/metrics/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--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-3199--dubbo.netlify.app/imgs/docs3-v2/java-sdk/observability/dataflow.png">&lt;/p></description></item><item><title>Adaptive Load Balancing and Flow Control</title><link>https://deploy-preview-3199--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-3199--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>Dubbo3 Application-level Service Discovery Design</title><link>https://deploy-preview-3199--dubbo.netlify.app/en/overview/reference/proposals/service-discovery/</link><pubDate>Mon, 30 Jan 2023 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--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-3199--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>Enhanced HTTP Standard Capabilities of Triple - Multi Content-Type Support</title><link>https://deploy-preview-3199--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-3199--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></channel></rss>