Dubbo 的扩展机制是其架构设计的核心,通过 SPI(Service Provider Interface)增强机制实现高度可扩展性,支持在不修改框架源码的情况下定制功能。其核心包含四大机制:
一、SPI 服务发现机制
-
配置文件声明扩展点
- 在
META-INF/dubbo/
目录下创建以接口全限定名命名的文件,内容为key=实现类全限定名
。 - 示例(定义 Protocol 扩展):
dubbo=org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol http=org.apache.dubbo.rpc.protocol.http.HttpProtocol
- 通过
ExtensionLoader.getExtension("dubbo")
加载指定扩展实现。
- 在
-
改进原生 SPI 的缺陷
- 懒加载:仅在使用时实例化扩展类,避免资源浪费。
- 失败隔离:扩展点加载失败时精准定位问题(如依赖缺失)。
二、自适应扩展机制(@Adaptive)
-
动态适配实现类