This topic describes the user documentation of Apache Dubbo for your reference.
Get started
Set up your environment and get a Dubbo application running.
Topic | Description |
Background information | Core concepts behind Apache Dubbo and its role in distributed systems |
Requirements | Software and environment prerequisites |
Architecture 2.6.1 | Component layout and interaction model for Dubbo 2.6.1 |
Architecture 2.7.1 | Updated architecture and new capabilities in Dubbo 2.7.1 |
Usage | Basic patterns for building and running Dubbo services |
Quick start | Step-by-step guide to get started with your first Dubbo application |
Dependencies | Required libraries and dependencies |
Maturity | Feature stability levels and production-readiness indicators |
Configuration
Configure Dubbo services through XML, properties files, annotations, or the API.
Topic | Description |
XML configuration | Define services, references, and registries in XML files |
Properties configuration | Use |
API configuration | Configure Dubbo programmatically with Java code |
Annotation configuration | Use Java annotations to declare services and references |
Dynamic configuration center | Push configuration changes at runtime |
Configuration loading process | How Dubbo resolves and merges configuration from multiple sources |
Automatic loading of environment variables | Map environment variables to Dubbo configuration properties |
Examples
Working examples for common Dubbo features, organized by category.
Service registration and discovery
Topic | Description |
Preflight check | Verify provider availability before the consumer starts |
Explicit target | Connect directly to a specific provider, bypassing the registry |
Subscribe only | Discover providers through the registry without registering the local service |
Register only | Register the local service with the registry without subscribing to other providers |
Static service | Register services with a fixed address that does not change dynamically |
Multiple registries | Route services across more than one registry server |
Load balancing and fault tolerance
Topic | Description |
Load balancing | Configure load balancing strategies for service invocations |
Fault tolerance strategy | Handle failures with configurable fault tolerance policies |
Service downgrade | Return fallback results when a provider is unavailable or slow |
Routing rule | Direct traffic to specific providers based on conditions |
Configure rules | Apply governance rules dynamically at runtime |
Service model and versioning
Topic | Description |
Service group | Isolate different implementations of the same interface by group |
Multiple versions | Run multiple versions of a service side by side for safe rollout |
Multiple protocols | Expose the same service over more than one protocol simultaneously |
Group merger | Aggregate results from providers across different service groups |
Invocation patterns
Topic | Description |
Asynchronous call | Invoke remote services without blocking the calling thread |
Asynchronous execution | Run provider-side logic asynchronously to improve throughput |
Local call | Invoke a service within the same JVM, skipping network overhead |
Callback parameter | Receive asynchronous results through a callback interface |
Event notification | Trigger events on invocation success, failure, or completion |
Generic reference | Call any service without compile-time dependency on its interface |
Generic service | Implement a provider that handles arbitrary service interfaces |
Echo service | Test service availability with a lightweight echo request |
Context | Pass and retrieve request-scoped metadata during invocations |
Implicit parameters | Attach hidden key-value pairs to RPC calls without changing the interface signature |
Traffic control and connection management
Topic | Description |
Concurrency control | Limit the number of concurrent requests a provider or consumer handles |
Configure connections | Set connection pool size, timeout, and keep-alive parameters |
Lazy connect | Delay TCP connection creation until the first request is sent |
Stickiness connection | Pin a consumer to the same provider for session-affinity use cases |
Token authorization | Require a token to prevent unauthorized direct access to providers |
Thread model | Customize the Netty thread pool and dispatch strategy |
Advanced features
Topic | Description |
Local stub | Run pre- or post-processing logic on the consumer side before or after a remote call |
Local mock | Return mock data when the provider is unavailable, useful for testing and degradation |
Delay publish | Hold off service registration until the application is fully initialized |
Parameter validation | Validate method parameters before the call runs |
Cache result | Cache invocation results to reduce repeated remote calls |
ReferenceConfig cache | Reuse |
Distributed transaction | Coordinate transactions across multiple services |
Automatic thread dump | Trigger a thread dump automatically when Dubbo detects an issue |
Graceful shutdown | Drain in-flight requests and deregister the provider before the JVM exits |
Logging, networking, and serialization
Topic | Description |
Hostname binding | Control which network interface and hostname Dubbo binds to |
Logger strategy | Switch between Log4j, SLF4J, JCL, and JDK logging frameworks |
Access log | Record every incoming invocation for auditing and debugging |
Service container | Run Dubbo services standalone without a web container |
Netty4 | Enable the Netty 4 transport for improved performance |
Using efficient Java serialization in Dubbo (Kryo and FST) | Replace the default serializer with Kryo or FST for faster serialization |
Simplify registry URLs | Reduce registry URL length by removing redundant parameters |
API reference
Java API documentation for Dubbo classes and interfaces.
XML configuration reference
Detailed attribute and usage descriptions for each Dubbo XML tag.
Tag | Description |
Introduction | Common attributes and conventions shared across Dubbo XML tags |
| Expose a local Java class as a remote Dubbo service |
| Create a proxy to consume a remote Dubbo service |
| Configure the communication protocol (port, serialization, thread pool) |
| Connect to a registry server for service discovery |
| Enable invocation metrics collection and reporting |
| Set application-level properties such as name and owner |
| Group related services into a logical module |
| Set default values for all |
| Set default values for all |
| Override settings for a specific method within a service or reference |
| Configure serialization or validation rules for a specific method argument |
| Pass arbitrary key-value pairs as extension parameters |
| Connect to an external configuration center for centralized management |
Protocol references
Supported communication protocols, each with connection details, use cases, and constraints.
Protocol | Description |
Introduction | Protocol selection guidance and comparison |
| Default high-performance binary protocol suited for high-throughput and low-latency scenarios |
| Java RMI protocol for integration with legacy RMI services |
| Hessian binary protocol with built-in HTTP transport, useful for cross-language calls |
| Standard HTTP protocol for simple RESTful-style invocations |
| SOAP-based Web Services protocol for enterprise system integration |
| Apache Thrift protocol for cross-language RPC |
| Access Memcached servers through the Dubbo service interface |
| Access Redis servers through the Dubbo service interface |
| RESTful protocol for HTTP-based service invocations |
Registry server references
Registry options for service discovery, each with setup instructions and trade-offs.
Registry | Description |
Introduction | Registry selection guidance and comparison |
Multicast registry | Zero-dependency registry for development and testing on a local network |
ZooKeeper registry server | Production-grade registry backed by Apache ZooKeeper |
Nacos registry center | Registry and configuration center backed by Alibaba Nacos |
Redis registry server | Registry implementation using Redis pub/sub for service notifications |
Simple registry server | Lightweight registry for testing, implemented as a standard Dubbo service |
Metadata reference
Service metadata management: how Dubbo handles interface metadata across providers and consumers.
Telnet command reference
Use the built-in Telnet interface to inspect running services, invoke methods, and troubleshoot issues from the command line.
QoS command usage
The Quality of Service (QoS) command port provides health checks, graceful shutdown, and runtime diagnostics.
Maven plug-in reference
Maven plug-in for Dubbo applications.
Best practice
Topic | Description |
Recommended usage | Preferred approaches for common configuration scenarios |
Capacity plan | Estimate hardware and cluster size based on expected traffic |
Performance report | Benchmark data and tuning guidelines for optimizing Dubbo throughput and latency |
Test coverage report | Code coverage metrics and testing strategies for Dubbo services |
Version upgrade
Topic | Description |
2.7.x upgrade procedures and notes | Breaking changes, migration steps, and compatibility notes for upgrading to Dubbo 2.7.x |
Erlang
Apache Dubbo provides an Erlang client. The topics below cover setup and configuration for Erlang-based consumers and providers.
Topic | Description |
Quick start | Set up an Erlang Dubbo project and run a basic consumer-provider example |
Consumer configuration | Configure service references, timeouts, and load balancing for Erlang consumers |
Provider configuration | Register and expose Erlang services to the Dubbo ecosystem |
Serialization configuration | Choose and configure a serialization format for Erlang Dubbo communication |