自定义扩展
演示如何使用 Dubbo 的可扩展性功能。
Dubbo 的可扩展性设计理念
- 平等对待第三方实现:在 Dubbo 中,所有内部和外部实现都被平等对待。用户可以根据其业务需求替换 Dubbo 的原生实现。
- 每个扩展点只封装一个可变因素,以实现最大程度的复用:每个扩展点的实现者通常只关注一件事。如果用户需要扩展功能,他们只需要扩展相关的扩展点,从而显著减少工作量。
基于 Java SPI 的可扩展性设计
Dubbo 的可扩展性源于 JDK 标准 SPI(服务提供者接口)的增强版本。它改进了 JDK 标准 SPI 的以下问题
- 标准 SPI 同时实例化所有扩展点,如果某些扩展点未使用,就会浪费资源。
- 如果扩展点加载失败,甚至无法检索扩展点的名称。
Dubbo 的可扩展性功能
- 按需加载:Dubbo 不会同时实例化所有实现,从而减少资源浪费。
- IOC(控制反转)功能:Dubbo 不仅发现扩展服务实现类,还会自动将依赖对象注入到扩展类中。
- AOP(面向切面编程)功能:Dubbo 自动发现扩展的包装类,构造它们以增强扩展功能。
- 动态扩展选择:Dubbo 在运行时根据参数动态选择相应的扩展类。
- 扩展实现排序:用户可以指定扩展实现的执行顺序。
- 自适应扩展点:扩展可以在消费者或提供者端生效。
扩展加载过程
Dubbo 的扩展加载过程如下
主要步骤是
- 读取和解析配置文件
- 缓存所有扩展实现
- 根据用户执行的扩展名称实例化相应的扩展实现
- 对扩展实例属性执行 IOC 注入,并为 AOP 功能实例化扩展包装类
任务项
接下来,让我们通过以下任务项介绍 Dubbo 的可扩展性功能。
Dubbo 的可扩展性设计旨在为用户提供高度灵活的扩展机制,提供动态扩展选择、IOC 和 AOP 等功能。这使得 Dubbo 更容易适应各种场景,并将其集成到不同的技术栈中。
上次修改时间:2023 年 11 月 1 日:翻译扩展相关文档 (#2844) (e603103c03a)