美文网首页
dubbo自适应拓展

dubbo自适应拓展

作者: ZMRWEGo | 来源:发表于2019-03-24 15:45 被阅读0次

在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并不想在框架启动阶段被加载,而是希望在拓展方法被调用时,根据运行时参数进行加载。这听起来有些矛盾。拓展未被加载,那么拓展方法就无法被调用(静态方法除外)。拓展方法未被调用,拓展就无法被加载。对于这个矛盾的问题,Dubbo 通过自适应拓展机制很好的解决了。
自适应拓展机制的实现逻辑比较复杂,首先 Dubbo 会为拓展接口生成具有代理功能的代码,(拓展接口所定义的方法会在开始时就加载)然后通过 javassist 或 jdk 编译这段代码,得到 Class 类,有点像CGLIB。

一、Adaptive注解

该注解可作用在注解上或方法上,主要是作用在接口方法上,拓展的加载逻辑可由框架自动生成。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Adaptive {
    String[] value() default {};
}

通过URL来获取需要实例化的对象

  1. 首先生成接口类的代码
  2. 编译为class文件
  3. 通过反射进行实例化(运行时获取新的对象)

相关文章

  • dubbo自适应拓展

    在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBa...

  • Dubbo之自适应拓展机制

    什么是自适应拓展机制? 1、基于Dubbo实现的拓展机制,在对拓展(接口实现类)通过SPI方式进行类加载时,有时候...

  • dubbo的SPI详解

    dubbo的SPI常用方法 //获取SPI自适应拓展点,具体哪个实现,在运行时决定ExtensionLoader....

  • Dubbo扩展点

    dubbo拓展点机制在dubbo中应用广泛,使框架中的接口与实现完全解耦,给予了dubbo强大的定制、拓展能力。 ...

  • Dubbo自适应拓展机制原理与实例

    JDK SPI 基本原理 java.util.ServiceLoader 加载 META-INF/services...

  • dubbo 原理解析

    rpc 流程:1、dubbo spi 中的 warp 机制,实现类增强2、dubbo spi 中的自适应机制,通过...

  • 🍎 Dubbo SPI 之扩展点自动包装 Wrapper 类

    之前的文章我们分析了 Dubbo 的扩展点自适应机制。Dubbo SPI 主要思想也是来自于 JDK 原生的 SP...

  • dubbo原理:SPI机制(二)

    在上一篇:SPI机制(一)中研究了Dubbo SPI的自适应原理;SPI机制(二)中我们来研究下Dubbo SPI...

  • Dubbo源码解析

    Dubbo与spring整合、SPI拓展机制、服务暴露、服务引用、容错机制、预热。 Dubbo架构图(取自dubb...

  • dubbo use

    一. what is dubbo   dubbo是个rpc框架,核心是远程方法调用。围绕着远程方法调用拓展了:服务...

网友评论

      本文标题:dubbo自适应拓展

      本文链接:https://www.haomeiwen.com/subject/tbduvqtx.html