blob: 3f9b1a18d7bcda83b1969d4e7bba2ffbcf9649f9 [file] [log] [blame]
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – Tasks</title><link>https://dubbo.apache.org/en/overview/tasks/</link><description>Recent content in Tasks on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://dubbo.apache.org/en/overview/tasks/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview: Traffic Management</title><link>https://dubbo.apache.org/en/overview/tasks/traffic-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/traffic-management/</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://dubbo.apache.org/en/overview/tasks/traffic-management/timeout/'>Dynamically adjust request timeout&lt;/a>
&lt;/h4>
&lt;p>Setting a timeout period for Dubbo requests can effectively improve system stability and prevent individual services from being blocked and occupying too many resources. &lt;br/>&lt;br/>By dynamically adjusting the service timeout period during the running period, it can effectively deal with problems such as frequent service timeouts and service blocking caused by unreasonable timeout settings and system emergencies, and improve system stability. &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://dubbo.apache.org/en/overview/tasks/traffic-management/weight/'>Adjust traffic distribution by weight&lt;/a>
&lt;/h4>
&lt;p>Adjust traffic distribution by weight&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://dubbo.apache.org/en/overview/tasks/traffic-management/isolation/'>Temporarily kick the service instance&lt;/a>
&lt;/h4>
&lt;p>Temporarily kick the service instance&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://dubbo.apache.org/en/overview/tasks/traffic-management/traffic-gray/'>traffic grayscale&lt;/a>
&lt;/h4>
&lt;p>According to the tags in the request context, the traffic is restricted and the grayscale release&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://dubbo.apache.org/en/overview/tasks/traffic-management/traffic-routing/'>Routing according to request conditions&lt;/a>
&lt;/h4>
&lt;p>Routing according to the request initiator and method condition&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm col-md-6 mb-4 mb-md-0" style="margin-bottom:20px">
&lt;div class="h-100 card shadow">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/traffic-management/traffic-condition/'>Traffic isolation&lt;/a>
&lt;/h4>
&lt;p>Isolate service traffic in different environments to ensure that services are not affected by each other&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://dubbo.apache.org/en/overview/tasks/traffic-management/zone/'>Same computer room/zone priority&lt;/a>
&lt;/h4>
&lt;p>When an application invokes a service, it preferentially invokes the service provider in the same computer room/area. &lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section></description></item><item><title>Overview: Kubernetes Deployment Solution</title><link>https://dubbo.apache.org/en/overview/tasks/kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/kubernetes/</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://dubbo.apache.org/en/overview/tasks/kubernetes/deploy-on-k8s/'>API-SERVER&lt;/a>
&lt;/h4>
&lt;p>Use API-SERVER as the registration center, deploy Dubbo application to Kubernetes and reuse Kubernetes Native Service example&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" href="#">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/mesh/'>Dubbo Mesh&lt;/a>
&lt;/h4>
&lt;p>Through the Dubbo Control Plane, the details of service governance are shielded, while retaining the native ability to adapt to kubernetes, the decoupling of the data plane and kubernetes is realized from the architecture, and various problems caused by direct communication between the data plane and kubernetes are avoided. &lt;br/>&lt;br/>For details, please refer to the Mesh solution section&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section></description></item><item><title>Overview: Mesh Deployment Solution</title><link>https://dubbo.apache.org/en/overview/tasks/mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/mesh/</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://dubbo.apache.org/en/overview/tasks/mesh/dubbo-mesh/'>Istio + Sidecar + Thin SDK&lt;/a>
&lt;/h4>
&lt;p>Demonstration of Dubbo3's Sidecar Mesh form, which can fully access Istio's service governance capabilities. This solution limits Dubbo3 application-level service discovery. &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://dubbo.apache.org/en/overview/tasks/mesh/dubbo-mesh/'>Istio + Proxyless&lt;/a>
&lt;/h4>
&lt;p>The Dubbo3 Proxyless Mesh form without Sidecar can fully access the service management capability of Istio. This solution limits Dubbo3 application-level service discovery. &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;!-- &lt;a href='https://dubbo.apache.org/en/overview/tasks/mesh/dubbo-mesh/'>Dubbo Control Plane + Thin SDK (TBD)&lt;/a> -->
&lt;p>Dubbo Control Plane + Thin SDK (document construction)&lt;/p>
&lt;/h4>
&lt;p>&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;!-- &lt;a href='https://dubbo.apache.org/en/overview/tasks/mesh/dubbo-mesh/'>Dubbo Control Plane + Proxyless (TBD)&lt;/a> -->
&lt;p>Dubbo Control Plane + Proxyless (document construction)&lt;/p>
&lt;/h4>
&lt;p>&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section></description></item><item><title>Overview: Triple Usage Example</title><link>https://dubbo.apache.org/en/overview/tasks/triple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/triple/</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://dubbo.apache.org/en/overview/tasks/triple/idl/'>Define a service using IDL&lt;/a>
&lt;/h4>
&lt;p>Using IDL to define cross-language services&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" href="#">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/triple/wrap/'>Pojo serialization compatibility mode&lt;/a>
&lt;/h4>
&lt;p>Pojo serialization compatibility mode&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" href="#">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/triple/streaming/'>Streaming communication&lt;/a>
&lt;/h4>
&lt;p>Stream communication mode&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section></description></item><item><title>Overview: How to smoothly migrate to the new functions of Dubbo3</title><link>https://dubbo.apache.org/en/overview/tasks/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/migration/</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://dubbo.apache.org/en/overview/tasks/migration/2to3/'>Smooth upgrade to Dubbo3&lt;/a>
&lt;/h4>
&lt;p>Smoothly upgrade to Dubbo3 version. &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://dubbo.apache.org/en/overview/tasks/migration/service-discovery-samples/'>Migrate to Dubbo3 application-level service discovery&lt;/a>
&lt;/h4>
&lt;p>Migrate to Dubbo3 application-level service discovery. &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://dubbo.apache.org/en/overview/tasks/migration/migration-triple/'>Migrate to Triple Protocol&lt;/a>
&lt;/h4>
&lt;p>Migrate to Dubbo3 Triple protocol&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section></description></item><item><title>Overview: Microservice Governance</title><link>https://dubbo.apache.org/en/overview/tasks/ecosystem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/ecosystem/</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://dubbo.apache.org/en/overview/tasks/ecosystem/transaction/'>Transaction Management&lt;/a>
&lt;/h4>
&lt;p>This example demonstrates how to implement transaction management of distributed Dubbo services through Seata to ensure data consistency. &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://dubbo.apache.org/en/overview/tasks/ecosystem/rate-limit/'>rate limit downgrade&lt;/a>
&lt;/h4>
&lt;p>Use Sentinel to protect your application from stability issues caused by sudden traffic overload of individual services. &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;p>http gateway access (document construction)&lt;/p>
&lt;/h4>
&lt;p>By converting the gateway http to dubbo protocol, the front-end traffic can be connected to the back-end dubbo service. &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;p>Spring Cloud system interoperability (document construction)&lt;/p>
&lt;/h4>
&lt;p>Demonstrates how to communicate with Spring Cloud's rest protocol through the Dubbo3 application-level service discovery mechanism. &lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section></description></item><item><title>Overview: Custom Extensions</title><link>https://dubbo.apache.org/en/overview/tasks/extensibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/overview/tasks/extensibility/</guid><description>
&lt;h2 id="dubbos-extensibility-design-philosophy">Dubbo&amp;rsquo;s Extensibility Design Philosophy&lt;/h2>
&lt;ul>
&lt;li>Equality towards third-party implementations: In Dubbo, all internal and external implementations are treated equally. Users can replace Dubbo&amp;rsquo;s native implementations based on their business requirements.&lt;/li>
&lt;li>Each extension point encapsulates only one variable factor for maximum reuse: The implementer of each extension point is often only concerned with one thing. If users need to extend functionality, they only need to extend the relevant extension points, significantly reducing the workload.&lt;/li>
&lt;/ul>
&lt;h2 id="java-spi-based-extensibility-design">Java SPI-based Extensibility Design&lt;/h2>
&lt;p>Dubbo&amp;rsquo;s extensibility comes from an enhanced version of the JDK standard SPI (Service Provider Interface). It improves upon the following issues with the JDK&amp;rsquo;s standard SPI:&lt;/p>
&lt;ul>
&lt;li>The standard SPI instantiates all extension points at once, wasting resources if some are not used.&lt;/li>
&lt;li>If extension point loading fails, even the name of the extension point cannot be retrieved.&lt;/li>
&lt;/ul>
&lt;p>Dubbo&amp;rsquo;s extensibility features:&lt;/p>
&lt;ul>
&lt;li>On-demand loading: Dubbo doesn&amp;rsquo;t instantiate all implementations at once, reducing resource waste.&lt;/li>
&lt;li>IOC (Inversion of Control) capabilities: Dubbo not only discovers extension service implementation classes but also automatically injects dependent objects into the extension class.&lt;/li>
&lt;li>AOP (Aspect-Oriented Programming) capabilities: Dubbo automatically discovers wrapper classes for extensions, constructing them to enhance extension functionality.&lt;/li>
&lt;li>Dynamic extension selection: Dubbo dynamically chooses the corresponding extension class based on parameters at runtime.&lt;/li>
&lt;li>Extension implementation sorting: Users can specify the execution order of extension implementations.&lt;/li>
&lt;li>Adaptive extension points: Extensions can be made effective on either the consumer or provider side.&lt;/li>
&lt;/ul>
&lt;h3 id="extension-loading-process">Extension Loading Process&lt;/h3>
&lt;p>Dubbo&amp;rsquo;s extension loading process is as follows:&lt;/p>
&lt;p>&lt;img src="https://dubbo.apache.org/imgs/v3/concepts/extension-load.png" alt="//imgs/v3/concepts/extension-load.png">&lt;/p>
&lt;p>The main steps are:&lt;/p>
&lt;ul>
&lt;li>Read and parse the configuration file&lt;/li>
&lt;li>Cache all extension implementations&lt;/li>
&lt;li>Instantiate the corresponding extension implementation based on the user-executed extension name&lt;/li>
&lt;li>Perform IOC injection for extension instance attributes and instantiate extension wrapper classes for AOP features&lt;/li>
&lt;/ul>
&lt;h2 id="task-items">Task Items&lt;/h2>
&lt;p>Next, let&amp;rsquo;s introduce Dubbo&amp;rsquo;s extensibility features through the following task items.&lt;/p>
&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">
&lt;div class="h-100 card shadow" href="#">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/extensibility/filter/'>Custom Filters&lt;/a>
&lt;/h4>
&lt;p>Dynamically load custom filters through the SPI mechanism to uniformly handle, validate returned results, and minimize developer interruptions.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm col-md-6 mb-4">
&lt;div class="h-100 card shadow">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/extensibility/router/'>Custom Routing&lt;/a>
&lt;/h4>
&lt;p>Customize routing strategies during service invocation based on actual use-cases to effectively improve service throughput and latency.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm col-md-6 mb-4">
&lt;div class="h-100 card shadow">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/extensibility/protocol/'>Custom Protocols&lt;/a>
&lt;/h4>
&lt;p>Use custom transport protocols for different heterogeneous systems to eliminate the differences between protocols and facilitate system integration.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div class="col-sm col-md-6 mb-4">
&lt;div class="h-100 card shadow">
&lt;div class="card-body">
&lt;h4 class="card-title">
&lt;a href='https://dubbo.apache.org/en/overview/tasks/extensibility/registry/'>Custom Registry Centers&lt;/a>
&lt;/h4>
&lt;p>Include services from different registry centers into the Dubbo ecosystem. Customizing registry centers is a key to bridging different service ecosystems.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;hr>
&lt;/div>
&lt;/section>
&lt;p>Dubbo&amp;rsquo;s extensibility design aims to provide users with a highly flexible extension mechanism, offering features like dynamic extension selection, IOC, and AOP. This makes it easier to adapt Dubbo to various scenarios and integrate it into different technology stacks.&lt;/p></description></item></channel></rss>