TopGit
GitHub Repo Review

Apache Dubbo: The Dubbo RPC Framework for Java

apache/dubbo
ATopGit review image for apache/dubbo
Review by Topgit.dev for apache/dubbo, with GitHub repository stats and README context.
Quick verdict

Apache Dubbo is a mature RPC and microservice framework for Java teams that have outgrown plain REST and need built-in service discovery, traffic control, and protocol choice. It's worth adopting once you're running several interdependent services on Zookeeper or Nacos; for a two-service side project, the setup cost outweighs the benefit.

Stars
β˜… 41.6k
Forks
β‘‚ 26.4k
Contributors
πŸ‘₯ 710
Language
Java
License
Apache-2.0
Topic
Backend
Updated
Sep 2026
Homepage

The challenge of inter-service communication

A Java team moving from a monolith to microservices needs more than a way to call methods across the network β€” it needs service discovery, load balancing, and traffic rules that don't come with plain gRPC or REST out of the box. Stitching those together from separate libraries (a registry client, a load balancer, a tracing agent) is its own project before you've shipped a single service.

What is Apache Dubbo?

Apache Dubbo is an RPC and microservice framework built primarily for Java, with implementations for Go, Python, PHP, Erlang, Rust, and Node.js, that bundles communication, service discovery, traffic management, observability, and security into one framework. It talks over its own Triple protocol (gRPC-compatible), the classic Dubbo2 TCP protocol, or REST, and connects to registries like Zookeeper or Nacos to find service instances.

Core features of Dubbo

  • βœ“Triple protocol: a Dubbo-native RPC protocol that's gRPC-compatible, so Dubbo services can also be called with a plain gRPC or cURL client β€” sits alongside legacy Dubbo2 TCP and REST for teams migrating gradually.
  • βœ“Pluggable service discovery through registries like Zookeeper or Nacos, with dynamic config, metrics, and tracing wired in rather than bolted on afterward.
  • βœ“Multi-language client support beyond Java: separate implementations exist for Go, Python, PHP, Erlang, Rust, and Node.js, letting non-Java services join the same Dubbo mesh.
  • βœ“A Spring Boot Starter that adds Dubbo to an existing Spring app with one dependency and a YAML config block, per the project's own getting-started guide.
  • βœ“REST support ships too, if that's all your team wants.
  • βœ“Kubernetes and service mesh integration, documented as a first-class deployment target rather than an afterthought.
  • βœ“Version 3.2.16 adds native image support and thread pool isolation; 3.3.x adds an affinity router, method-level TPS limiting, and a Spring 6 Security Plugin.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history β†—

What you can build with Dubbo

  • β€’Splitting a Java monolith into services that call each other over Triple/gRPC instead of internal method calls, without hand-rolling a discovery layer.
  • β€’Enterprise microservice systems that need traffic management (canary releases, routing rules) and observability out of the box, per the project's core-features list.
  • β€’Mixed-language service meshes where a Java backend needs to talk to Go, Python, or Node.js services using the same discovery and protocol layer.
  • β€’Migrating an existing Dubbo2 TCP deployment to the Triple protocol incrementally, since Dubbo3 keeps both protocols available side by side.
  • β€’Running services on Kubernetes with a service mesh, using Dubbo's documented Kubernetes & service mesh integration instead of assembling one from scratch.

Getting started with Dubbo and Spring Boot

The README points to two starting paths. For a minimal setup, its Lightweight RPC API lets you build RPC services with a small SDK and a 5-minute guide, choosing between the Triple, Dubbo2 (TCP), REST, or a custom protocol. For a Spring app, the Dubbo Spring Boot Starter is the documented path: add the starter dependency and a YAML config block, and the README says that alone wires up service discovery, observability, and tracing. Beyond the dependency and config file, the README does not walk through the YAML keys or a full working example inline β€” it links out to the docs site for that.

Adding Dubbo to your project

The README doesn't include a copy-pasteable Maven or Gradle snippet β€” it links out to the Spring Boot Starter task guide and a project template instead. What it does specify is compatibility: Dubbo 3.3.x needs JDK 1.8 through 21 (3.3.7-SNAPSHOT extends that to JDK 25), Dubbo 3.2.16 supports JDK 1.8–17, and the whole 2.x line is marked end-of-life. Pick a version off that compatibility table before adding it to a build file, since the older branches are no longer actively maintained.

Why teams choose Dubbo

  • βœ“Service discovery, traffic rules, observability, and security are part of the same framework, not four separate libraries to wire together.
  • βœ“Protocol flexibility: Triple (gRPC-compatible), Dubbo2 TCP, and REST all coexist, so a migration from Dubbo2 to Triple doesn't require a big-bang rewrite.
  • βœ“The Spring Boot path is described as minimal by the README β€” just a dependency and a YAML config block β€” for teams already standardized on Spring.
  • βœ“Active version cadence: the compatibility table lists point releases up to 3.3.6 with a 3.3.7-SNAPSHOT already adding JDK 25 support.
  • βœ“Apache governance (Apache-2.0 license, Apache Software Foundation project) rather than a single vendor's open-core product.

Known limitations of Dubbo

  • β–³Multi-language support is uneven: the Go, Python, PHP, Erlang, and Rust clients live in separate repos with their own release cadence, not guaranteed to track the main Java release.
  • β–³The 2.x branch (2.7.23 and 2.6.x/2.5.x) is marked end-of-life in the compatibility table, so anything still running old Dubbo2 is on an unsupported path.
  • β–³The README itself doesn't include install commands or a runnable example β€” you're routed to the external docs site for the details that matter most when adopting it.
  • β–³It's a Java-centric framework at heart; running Triple/gRPC-compatible clients in other languages means adopting a second toolchain per language, not one unified SDK.
View on GitHub β†—Homepage β†—

Dubbo vs gRPC, Spring Cloud, and other RPC frameworks

Frequently asked questions

What programming languages does Dubbo support?

Apache Dubbo's primary implementation is Java, but the project also maintains separate client implementations for Go, Python, PHP, Erlang, Rust, and Node.js, each in its own repository under the Apache Dubbo GitHub organization. A Go or Python service can join a Dubbo-based system this way, though each language client has its own release pace and feature set relative to the Java core.

Which version of Java does Dubbo 3.x require?

Dubbo 3.x's JDK requirements vary by release: Dubbo 3.3.5 and 3.3.6 support JDK 1.8 through 21, Dubbo 3.2.16 supports JDK 1.8 through 17, and the upcoming 3.3.7-SNAPSHOT extends support to JDK 25. Check the version compatibility table in the Dubbo README before picking a release, since older branches drop JDK support earlier.

Is Dubbo production-ready for enterprise applications?

Apache Dubbo is an Apache Software Foundation top-level project, licensed under Apache-2.0, with an active compatibility table tracking point releases through 3.3.6 and a 3.3.7-SNAPSHOT already in progress.

Can Dubbo work with Kubernetes and service mesh environments?

Apache Dubbo documents Kubernetes and service mesh integration as one of its core features, with dedicated guides for deploying, monitoring, and managing traffic for Dubbo services on Kubernetes. The project's own feature list treats this as a first-class scenario rather than something added through a third-party plugin.

How does the Triple protocol differ from traditional Dubbo2?

Triple is Dubbo's newer RPC protocol, built to be gRPC-compatible, so a Triple-based Dubbo service can be called with a plain gRPC or cURL client β€” something the older Dubbo2 TCP protocol doesn't support. Dubbo3 keeps both available side by side, per the version compatibility table, so teams can move services to Triple incrementally instead of switching a whole deployment at once.

What registries does Dubbo support for service discovery?

The Apache Dubbo README names Zookeeper and Nacos as example registries for dynamic service discovery, where consumers look up available provider instances and apply traffic strategies.

Who should try it β€” and who should skip

Try Apache Dubbo if you're a Java team already running several services with real inter-service traffic and want service discovery, traffic rules, and observability bundled instead of assembled from separate libraries β€” especially if you're on Zookeeper or Nacos already, or migrating off an old Dubbo2 TCP deployment onto Triple. Skip it for a small number of services talking over plain HTTP, or if your team doesn't want a second protocol stack alongside REST; a couple of gRPC or REST calls between two services doesn't need a full RPC framework wrapped around them.

Related repositories

Source & attribution

Facts and quotes drawn from the apache/dubbo GitHub repository (github.com/apache/dubbo) β€” description, topics, and README as published there.

GitHub data Β· last synced Aug 15, 2026Reviewed by Henry
← Back to TopGit

Curious whether dubbo is right for you?

Let ChatGPT, Claude, or Perplexity look into it β€” click below and see what AI actually says about dubbo.

GitHub