Library / SDK
apache/dubbo avatar
apache/dubbo

Apache Dubbo: Java RPC and Microservice Framework with Triple Protocol and Spring Boot

The java implementation of Apache Dubbo. An RPC and microservice framework.

41,582 stars26,357 forksJavaApache-2.0

At a glance

What is it?
Apache Dubbo is an Apache-2.0 Java framework for RPC communication and microservice management that supports the Triple protocol (gRPC-compatible), service discovery via Zookeeper or Nacos, traffic management, observability with OpenTelemetry, and Spring Boot integration. Multiple language implementations exist in Go, Python, PHP, Rust, and Node.js.
Who is it for?
Apache Dubbo is a good fit for Java-based microservice architectures where service-to-service calls need protocol flexibility (gRPC-compatible Triple, TCP, REST), traffic management, and built-in observability without assembling those pieces manually.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Apache Dubbo Solves in a Microservice Architecture

In a distributed system with many services, three problems recur: how services find each other at runtime, how they communicate reliably, and how traffic is managed when deployments change. Apache Dubbo provides a unified answer to all three by acting as both an RPC communication layer and a microservice management framework.

The README describes Dubbo as providing solutions for communication, service discovery, traffic management, observability, security, tooling, and best practices for building enterprise-grade microservices. This positions it as a full-stack microservice framework rather than a narrow RPC library.

Dubbo's primary language is Java, and the main repository is the Java implementation. Separate repositories exist for Go (dubbo-go), Python (py-client-for-apache-dubbo), PHP (dubbo-php-framework), Erlang (dubbo-erlang), Rust (dubbo-rust), and Node.js/Web (dubbo-js). The Java version has the most feature coverage and the most active maintenance.

Protocol Stack: Triple, Dubbo2, TCP, and REST

The README describes three primary protocols available in the current release:

Triple is described as gRPC-compatible. Services written to the Triple protocol can interoperate with standard gRPC clients and can be called directly using cURL, based on the README's description of Triple as supporting gRPC/cURL in the version 3.3.5 highlights. This is the protocol the README recommends for new projects in the 3.3.x series.

Dubbo2 uses TCP and is the protocol from the 2.x series. It remains available for compatibility with existing deployments.

REST support is listed alongside Triple in the 3.3.5 feature highlights. Custom protocols are also documented as an option for cases where the built-in choices do not fit the deployment.

The README mentions that communication between consumers and providers happens via the selected RPC protocol, with consumers discovering provider instances dynamically from registries rather than connecting to fixed addresses.

Service Discovery, Traffic Management, and Observability

Dubbo consumers discover provider instances from a registry. The README names Zookeeper and Nacos as registry options. Consumers retrieve the list of available provider instances from the registry and apply traffic management strategies to decide which instance handles each request.

Traffic management in Dubbo covers routing, load balancing, circuit breaking, and configuration changes without redeployment. The README links to separate documentation pages for deploying, monitoring, and managing traffic for Dubbo services. These are described as hands-on tasks rather than configuration that works out of the box without setup.

Observability is built in. The README lists metrics and tracing as features of the 3.2.x series, and the version 3.2.16 highlights mention a 30 percent performance improvement and thread pool isolation alongside metrics and tracing. The README also mentions a visualized console (dubbo-admin, maintained as a separate repository) for managing services.

Security features include connection security and, in the Spring Boot Starter path, a Spring 6 Security Plugin added in version 3.3.6.

Getting Started with Dubbo and the Spring Boot Starter

The README offers two starting paths. The lightweight RPC API path uses a minimal Dubbo SDK and is described in a linked 5-minute guide for cases where Spring Boot is not part of the stack. The Spring Boot Starter path is the other option.

For the Spring Boot path, the README states: using just a dependency and a YAML config, you can access service discovery, observability, tracing, and other Dubbo features. The exact Maven or Gradle dependency declaration is in the linked Spring Boot Starter guide on the documentation site (cn.dubbo.apache.org), not inline in the README.

The project also provides a project template launcher documented at dubbo.apache.org/zh-cn/overview/tasks/develop/template/. This generates a project structure similar to Spring Initializr, with the Dubbo dependency and configuration pre-populated.

For teams already using a Dubbo 2.x deployment, the 3.2 and 3.3 series both document migration paths, and the README's version table shows which JDK versions each line supports.

Version Lines, End-of-Life, and JDK Requirements

The README publishes a version compatibility table. The current actively maintained lines are 3.3.x (JDK 1.8 to 21, with 25 support coming in the 3.3.7 snapshot) and 3.2.x (JDK 1.8 to 17). Version 3.1.x is marked as stable but not actively maintained. Dubbo 2.7.23 and the 2.6.x and 2.5.x lines are marked as EOL.

The version 3.3.6 release, published on 2025-10-17, added Mutiny Reactive Support, an Affinity Router, method-level TPS limiting, the Spring 6 Security Plugin, and enhanced environment variable configuration. The version 3.2.16 release, published on 2026-05-17, is described in the 3.2 line highlights as adding metrics and tracing, thread pool isolation, and native image support.

The implication for teams is: new projects should use 3.3.x; existing 2.7.x deployments should plan migration since that line is EOL; 3.1.x deployments receive no active bug fixes.

Apache Dubbo vs Spring Cloud

Spring Cloud is an alternative microservice toolkit built on Spring Boot that addresses service discovery, configuration, circuit breaking, and API gateways through a collection of libraries. The design difference is that Spring Cloud integrates with Netflix OSS components and Kubernetes natively but does not provide its own RPC protocol. Service-to-service calls in Spring Cloud default to REST over HTTP.

Dubbo provides its own RPC protocols (Triple, Dubbo2) alongside REST. The Triple protocol's gRPC compatibility means Dubbo services can participate in a broader ecosystem of gRPC clients across multiple languages. For Java-to-Java communication on high-throughput internal APIs, a binary RPC protocol like Triple can reduce serialisation overhead compared to JSON over HTTP.

The trade-off is framework weight and team familiarity. Spring Cloud is more widely adopted in projects already using the Spring ecosystem, and its documentation is extensive. Dubbo's strength is the triple-protocol flexibility and the multi-language client coverage.

Maintenance Status and Apache Licence

The last push to the main Dubbo repository was on 2026-09-23. The default branch is 3.3, reflecting the current development focus on the 3.3.x series. The recent release dubbo-3.2.20 was published on 2026-05-17, indicating the 3.2.x maintenance line also receives ongoing patches.

Apache Dubbo is licensed under the Apache License 2.0. This is a permissive licence with no copyleft clause. Commercial use, modification, and redistribution are permitted without requiring source disclosure. Attribution (retaining the copyright notice and licence text) is required.

The project is governed by the Apache Software Foundation. Contributions follow the ASF contribution process; the repository includes CONTRIBUTING.md and a Jenkinsfile for CI, with the primary build tooling being Maven (mvnw is present in the root).

Editorial conclusion

Apache Dubbo is a good fit for Java-based microservice architectures where service-to-service calls need protocol flexibility (gRPC-compatible Triple, TCP, REST), traffic management, and built-in observability without assembling those pieces manually. It is not the right choice for teams standardising on a cloud-native service mesh that already handles traffic policy at the infrastructure layer, or for small applications where the discovery and registry infrastructure adds more complexity than it removes. Before adopting Dubbo 3.3.x, verify JDK compatibility: the current stable 3.3.6 requires JDK 1.8 through 21, and the next snapshot targets JDK 25 support.

Frequently asked questions

What is Apache Dubbo used for?

Apache Dubbo is used to build communication between services in a Java microservice architecture. It provides RPC protocols (Triple, which is gRPC-compatible, and Dubbo2 over TCP), service discovery via Zookeeper or Nacos, traffic management, and observability. It also supports Spring Boot integration for teams already using that stack.

Which version of Apache Dubbo should I use?

The README recommends 3.3.x for new projects, which supports JDK 1.8 through 21. The 3.2.x line is also actively maintained and supports JDK 1.8 through 17. Dubbo 2.7.23 and older lines are marked as EOL.

Does Apache Dubbo support languages other than Java?

Yes. The README lists separate implementations for Go (dubbo-go), Python, PHP, Erlang, Rust, and Node.js/Web, each maintained in their own repositories under the Apache organization.

Is Apache Dubbo compatible with gRPC?

The Triple protocol in Dubbo 3.x is described in the README as gRPC-compatible and supports direct calling via cURL. Services using Triple can interoperate with standard gRPC clients.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/apache-dubbo.svg)](https://hysenlabs.com/projects/apache-dubbo)
Community notes

Community notes