<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ecosystem on Apache Dubbo</title><link>https://deploy-preview-3202--dubbo.netlify.app/en/tags/ecosystem/</link><description>Recent content in Ecosystem on Apache Dubbo</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 15 Nov 2025 11:38:51 +0800</lastBuildDate><atom:link href="https://deploy-preview-3202--dubbo.netlify.app/en/tags/ecosystem/index.xml" rel="self" type="application/rss+xml"/><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>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>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>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>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>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>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>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>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>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>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>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></channel></rss>