首页 > 编程语言 >Dubbo源码-12-Cluster

Dubbo源码-12-Cluster

时间:2022-12-02 16:13:18浏览次数:45  
标签:Dubbo 12 dubbo alibaba cluster rpc 源码 com Cluster

一 接口声明

@SPI(FailoverCluster.NAME)
public interface Cluster {

    /**
     * Merge the directory invokers to a virtual invoker.
     *
     * @param <T>
     * @param directory
     * @return cluster invoker
     * @throws RpcException
     */
    @Adaptive
    <T> Invoker<T> join(Directory<T> directory) throws RpcException;

}

默认实现是FailoverCluster,扩展实现名称是cluster

二 自适应扩展类

package com.alibaba.dubbo.rpc.cluster;

import com.alibaba.dubbo.common.extension.ExtensionLoader;

public class Cluster$Adaptive implements com.alibaba.dubbo.rpc.cluster.Cluster {
    public com.alibaba.dubbo.rpc.Invoker join(com.alibaba.dubbo.rpc.cluster.Directory arg0) throws com.alibaba.dubbo.rpc.RpcException {
        if (arg0 == null)
            throw new IllegalArgumentException("com.alibaba.dubbo.rpc.cluster.Directory argument == null");
        if (arg0.getUrl() == null)
            throw new IllegalArgumentException("com.alibaba.dubbo.rpc.cluster.Directory argument getUrl() == null");
        com.alibaba.dubbo.common.URL url = arg0.getUrl();
        String extName = url.getParameter("cluster", "failover");
        if (extName == null)
            throw new IllegalStateException("Fail to get extension(com.alibaba.dubbo.rpc.cluster.Cluster) name from url(" + url.toString() + ") use keys([cluster])");
        com.alibaba.dubbo.rpc.cluster.Cluster extension = (com.alibaba.dubbo.rpc.cluster.Cluster) ExtensionLoader.getExtensionLoader(com.alibaba.dubbo.rpc.cluster.Cluster.class).getExtension(extName);
        return extension.join(arg0);
    }
}

标签:Dubbo,12,dubbo,alibaba,cluster,rpc,源码,com,Cluster
From: https://www.cnblogs.com/miss-u/p/16944746.html

相关文章

  • Bert源码学习
    文章目录​​前言​​​​1.bert模型网络modeling.py​​​​1.1整体架构BertModel(object):​​​​1.2embedding层​​​​1.2.1embedding_lookup​​​​1.2.2词向......
  • 2022年12月2日
      静水流深,水低为王。 真正厉害的人,都很安静。越安静的人,越能活出自我,内心丰盈,幸福快乐。 骄傲和言多,必会招致失败和是非。 谦虚低调感恩,是万事万物的灵丹妙药......
  • Java数组JAVA基础班2022122
    1数组的定义publicstaticvoidmain(String[]args){//数组---存储固定类型,固定长度容器。//长度元素的个数//创建数组--语法......
  • RS485 MODBUS转PROFINET网关案例丨汇川变频器接入到1200 PROFINET
    本案例介绍的是用北京小疆智控(北京)技术有限公司生产的GW-PN5003型MODBUSRTU转PROFINET网关将汇川变频器接入西门子PLC1200PROFINET网络的使用方法:  1、首先创建新......
  • 源码注释中的"方法签名"是什么意思?
    我们经常可以在源码注释中看到methodsignature,也就是方法签名,那它指的是方法中的哪部分呢?好比@Async中的第二段注释中《Java语言程序设计》一书中对方法的描述中有......
  • 直播系统app源码,设置样式(字体样式、行列宽高、对齐方式、边框)
    直播系统app源码,设置样式(字体样式、行列宽高、对齐方式、边框)1.字体样式 fromopenpyxlimportWorkbookfromopenpyxl.stylesimportFontwb=Workbook()ws=wb.act......
  • 数据库三大范式-2022-12-2
    为什么要规范化?  1、信息重复  2、更新异常 3、插入异常   ---无法正常显示信息 4、删除异常   ---丢失有效信息三大范式概念解释:三大范式......
  • Mysql 源码解读-执行器
    Mysql源码解读-执行器一条sql执行过程中,首先进行词法分析和语法分析,然后将由优化器进行判断,如何执行更有效率,生成执行计划,后面的任务就交给了执行器。在执行的过程中,执......
  • [leetcode每日一题]12.2
    ​​1769.移动所有球到每个盒子所需的最小操作数​​有 ​​n​​ 个盒子。给你一个长度为 ​​n​​ 的二进制字符串 ​​boxes​​ ,其中 ​​boxes[i]​​ 的值......
  • 2022-12-01 缠论级别再思考
    什么叫破坏:应用动能公式。相同空间里,一个线段破坏前面三个线段,相当于低级别破坏高级别一笔破坏前面三笔,也是一样的。------------------------------------------------......