本文基于dubbo 2.7.5版本代码
集群容错顶层抽象类AbstractClusterInvoker详解
上一篇文章已经介绍了Cluster接口有10个实现类。每个Cluster实现类都会创建一个对应的Cluster Invoker对象。
MockClusterWrapper是包装类,ZoneAwareCluster在多个配置中心场景下使用,这两个类其他文章介绍。
其余的8个实现类及其对应的Cluster Invoker类如下:
Cluster | Cluster Invoker | 作用 |
---|---|---|
FailoverCluster | FailoverClusterInvoker | |
FailfastCluster | FailfastClusterInvoker | |
FailsafeCluster | FailsafeClusterInvoker | |
FailbackCluster | FailbackClusterInvoker | |
ForkingCluster | ForkingClusterInvoker | |
AvailableCluster | AvailableClusterInvoker | |
MergeableCluster | MergeableClusterInvoker | |
BroadcastCluster | BroadcastClusterInvoker |
Cluster Invoker类都继承AbstractClusterInvoker类,实现了抽象方法doInvoke。
AbstractClusterInvoker
AbstractClusterInvoker实现了接口Invoker。构造方法入参必须有Directory对象。
Directory对象叫做服务目录,持有全部可用的远程服务提供者列表,客户端使用远程服务提供者访问远程服务。远程服务提供者也实现了Invoker接口,如果远程服务以dubbo协议提供,那么客户端通过Invoker接口的实现类DubboInvoker访问。Directory后面的文章在做介绍。
AbstractClusterInvoker类中最关键的方法是:
public Result invoke(final Invocation invocation