dubbo-rs-cluster
Cluster fault-tolerance strategies, service directory abstraction, and traffic routing for dubbo-rs.
Provides the Directory and Cluster traits that decouple service discovery from invocation strategy, along with ConditionRouter, TagRouter, and RouterChain for traffic management.
Installation
Add this to your Cargo.toml:
[]
= "0.1"
Or use cargo add:
Key Types
Directory trait
Supplies available invokers for a service. Can be static or backed by a registry.
| Method | Description |
|---|---|
list(ctx) |
Returns Vec<Arc<dyn Invoker>> for the invocation |
get_url() |
Returns the service URL |
Cluster trait
Joins a directory into a single fault-tolerant invoker.
| Method | Description |
|---|---|
join(directory) |
Returns Box<dyn Invoker> with cluster logic |
Cluster Implementations
| Struct | Behavior |
|---|---|
FailoverCluster |
Retries up to retries + 1 total attempts across all invokers (default retries: 2) |
FailfastCluster |
Single attempt on the first available invoker, no retry |
Directory Implementations
| Struct | Description |
|---|---|
StaticDirectory |
Fixed invoker list for direct-connect mode |
RegistryDirectory |
Dynamic list updated via NotifyListener; supports custom InvokerFactory |
Routers
| Type | Description |
|---|---|
ConditionRouter |
Rule-based filtering: "region=beijing => env=gray" syntax |
TagRouter |
Traffic coloring via dubbo.tag attachment; falls back to untagged invokers |
RouterChain |
Sequential pipeline of condition + tag routers |
Usage
Failover cluster with static directory
use URL;
use ;
use InvocationContext;
async
Router chain
use ;
let chain = new
.with_condition_router
.with_tag_router;
// let filtered_indices = chain.route(&invokers, &ctx);
Re-exports
pub use dubbo_rs_common as commonpub use dubbo_rs_protocol as protocolpub use dubbo_rs_registry as registry
License
Apache-2.0