RPC_04_Dubbo扩展点加载机制

4 篇文章 0 订阅

6


Dubbo扩展点加载机制

Dubbo良好的扩展性来自两个方面,一是针对不同的场景,采用恰当的设计模式,二是基于DubboSPI加载机制让整个框架的接口和具体实现完全解耦。


一、加载机制概述

DubboSPI在JavaSPI的思想上进行了改进,DubboSPI能够兼容JavaSPI,在启动时,Dubbo会查找扩展点的所有实现。

1. Java SPI

JavaSPI (Service Provider Interface) 是由JDK官方提供的用于厂商开发插件的加载机制,具体实现流程如下:

  • 创建需要实现的接口
  • 编写接口的实现类
  • 在META-INF/services/目录下创建相关配置文件
  • 在代码中通过java.util.ServiceLoader加载具体的实现类

*通过SPI加载机制,可以在程序中获取相应接口的由配置文件指定的实现

2. Dubbo SPI

DubboSPI相比JavaSPI有很多改进,解决了一些问题

  • 支持选择性加载扩展点(JavaSPI是全部加载)
  • 加载失败会抛出异常(JavaSPI的加载失败异常可能被吞掉)
  • 实现了IOC和AOP机制,支持扩展点的依赖注入

配置规范

  • 在META-INF/dubbo/路径下放置对应的配置文件(配置文件中可以设置扩展点别名)
  • 采用DubboSPI注解规定SPI的接口,注解参数为配置文件中的别名
  • DubboSPI还兼容JavaSPI
  • Dubbo启动时默认扫描 META-INF/services/、META-INF/dubbo/、META-INF/dubbo/internal/ 三个目录

3.扩展点的分类与缓存

由缓存类型可以分为两种

  • Class缓存
  • 实例缓存

根据缓存类的种类分为四种

  • 普通扩展类
  • 包装扩展类(Wrapper)
  • 自适应扩展类(Adaptive)
  • 其他缓存

4.扩展点的特性

  • 自动包装(装饰器模式)
  • 自动加载
  • 自适应(通过URL动态指定扩展点的具体实现类,采用@Adaptive实现类)
  • 自动激活

参考

  • 深入理解 Apache Dubbo 与实战
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值