Cluster Expansion
Expansion Description
When there are multiple service providers, organize multiple service providers into a cluster and pretend to be one provider.
Extension ports
org.apache.dubbo.rpc.cluster.Cluster
Extended configuration
<dubbo:protocol cluster="xxx" />
<!-- Default value configuration, if <dubbo:protocol> is not configured with cluster, use this configuration -->
<dubbo:provider cluster="xxx" />
Known extensions
org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper
org.apache.dubbo.rpc.cluster.support.FailoverCluster
org.apache.dubbo.rpc.cluster.support.FailfastCluster
org.apache.dubbo.rpc.cluster.support.FailsafeCluster
org.apache.dubbo.rpc.cluster.support.FailbackCluster
org.apache.dubbo.rpc.cluster.support.ForkingCluster
org.apache.dubbo.rpc.cluster.support.AvailableCluster
org.apache.dubbo.rpc.cluster.support.MergeableCluster
org.apache.dubbo.rpc.cluster.support.BroadcastCluster
org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster
Extended example
Maven project structure:
src
|-main
|-java
|-com
|-xxx
|-XxxCluster.java (implements the Cluster interface)
|-resources
|-META-INF
|-dubbo
|-org.apache.dubbo.rpc.cluster.Cluster (plain text file, content: xxx=com.xxx.XxxCluster)
XxxCluster.java:
package com.xxx;
import org.apache.dubbo.rpc.cluster.Cluster;
import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
import org.apache.dubbo.rpc.cluster.Directory;
import org.apache.dubbo.rpc.cluster.LoadBalance;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
public class XxxCluster implements Cluster {
public <T> Invoker<T> merge(Directory<T> directory) throws RpcException {
return new AbstractClusterInvoker<T>(directory) {
public Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {
//...
}
};
}
}
META-INF/dubbo/org.apache.dubbo.rpc.cluster.Cluster:
xxx=com.xxx.XxxCluster
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified January 2, 2023: Enhance en docs (#1798) (95a9f4f6c)