1. 程式人生 > >Dubbo 的叢集容錯模式:Available Cluster

Dubbo 的叢集容錯模式:Available Cluster

本文簡單介紹 Dubbo 中的 Available Cluster(可用的例項)。

簡介

呼叫目前可用的例項(只調用一個),如果當前沒有可用的例項,則丟擲異常。

如何使用

<dubbo:service cluster="available" />

<dubbo:reference cluster="available" />

實現邏輯

  1. 遍歷所有的例項
  2. 遍歷到第一個可用的例項,呼叫該例項
  3. 如果沒有可用的例項,則丟擲異常

原始碼

public class AvailableClusterInvoker<T> extends
AbstractClusterInvoker<T> {
public AvailableClusterInvoker(Directory<T> directory) { super(directory); } @Override public Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException { // 呼叫所有可用的例項
for (Invoker<T> invoker : invokers) { if (invoker.isAvailable()) { // 例項可用則呼叫 return invoker.invoke(invocation); } } // 如果沒有可用的例項,則丟擲異常 throw new RpcException("No provider available in " + invokers); } }

做個有夢想的程式猿
個人公眾號