Dubbo系列之 (一)SPI扩展】的更多相关文章

一.实现Filter接口 1.消费者过滤器:ConsumerTraceFilter.java package com.dubbo.demo.Filter; import com.alibaba.dubbo.rpc.*; import java.util.Map; import java.util.UUID; public class ConsumerTraceFilter implements Filter { @Override public Result invoke(Invoker<?>…
一.用法 Activate注解表示一个扩展是否被激活(使用),可以放在类定义和方法上,dubbo用它在spi扩展类定义上,表示这个扩展实现激活条件和时机. @Activate(group = Constants.PROVIDER) public class DrpcServerInterceptor implements Filter{ private final ServerRequestInterceptor serverRequestInterceptor; private final S…
一.基础铺垫 1.@SPI .@Activate. @Adaptive a.对于 @SPI,Dubbo默认的特性扩展接口,都必须打上这个@SPI,标识这是个Dubbo扩展点.如果自己需要新增dubbo的扩展点我们就需要新增接口,并且这个接口必须标注@SPI. b.@SPI可以填入一个值,这个值代表某个扩展点的名称,一般作为默认扩展点. c.@Activate,这个注解可以打在方法上或者类上,主要的作用是自动的激活某个扩展点. d.@Adaptive 注解为自适应注解,该注解可以标注在方法上或者类…
dubbo的SPI机制类似与Java的SPI,Java的SPI会一次性的实例化所有扩展点的实现,有点显得浪费资源. dubbo的扩展机制可以方便的获取某一个想要的扩展实现,每个实现都有自己的name,可以通过name找到具体的实现. 每个扩展点都有一个@Adaptive实例,用来注入到依赖这个扩展点的某些类中,运行时通过url参数去动态判断最终选择哪个Extension实例用. dubbo的SPI扩展机制增加了对扩展点自动装配(类似IOC)和自动包装(类似AOP)的支持. 标注了@Activat…
接Dubbo源码剖析六之SPI扩展点的实现之getExtensionLoader - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)继续分析Adaptive功能实现原理.Adaptive的主要功能是对所有的扩展点进行封装为一个类,通过URL传入参数的时动态选择需要使用的扩展点(参考Dubbo SPI机制之三Adaptive自适应功能 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中案例).其底层的实现原理就是动态代理,这里我们会通过源码的形式告诉大家,他是如何通过动态代理…
上文Dubbo源码剖析六之SPI扩展点的实现之getExtensionLoader - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中分析了getExtensionLoader,本文继续分析SPI扩展点实现的getExtension. 通过方法名称不难看出其功能是根据name加载指定扩展点. 通过源码可知getExtension的主要作用是根据name对扩展点进行处理和进行加锁来创建真实的引用,其中都是有使用缓存.在实现过程中使用createExtension方法根据扩展的class…
Dubbo SPI机制之三Adaptive自适应功能 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中,示例案例中自定义了扩展接口而不是使用Dubbo已提供的扩展接口.在案例中,主程序分别使用了不同的加载方法,如下: getExtensionLoader:获取扩展点加载器并加载锁对于的所有扩展点实现 getExtension:根据name获取扩展的指定实现 从ExtensionLoader扩展点加载类注释分析: 图中红框中的三个类是配合使用,如果在单进程中存在多dubbo服务应用是…
一.代码准备 1.示例代码 参考dubbo系列二.dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台) 2.简单了解下spring自定义标签 https://www.jianshu.com/p/16b72c10fca8 Spring自定义标签总共可以分为以下几个步骤 定义Bean 标签解析生成接收配置的POJO. 定义schema文件,定义自定义标签的attr属性 定义解析类parser,遇到自定义标签如何解析. 定义命名空间处理类namespaceSup…
目录 Dubbo 系列(07-2)集群容错 - 服务路由 1. 背景介绍 1.1 继承体系 1.2 SPI 2. 源码分析 2.1 创建路由规则 2.2 RouteChain 2.3 条件路由 Dubbo 系列(07-2)集群容错 - 服务路由 1. 背景介绍 相关文档推荐: Dubbo 路由规则配置 Dubbo 源码解读 - 服务路由 在上一节 Dubbo 系列(06-1)集群容错 - 服务字典 中分析服务字典的源码,服务字典是 Dubbo 集群容错的基础,这节只在服务字典的基础上继续分析服务…
辅助链接 Dubbo系列之 (一)SPI扩展 Dubbo系列之 (二)Registry注册中心-注册(1) Dubbo系列之 (三)Registry注册中心-注册(2) Dubbo系列之 (四)服务订阅(1) 介绍 dubbo的服务订阅可以通过2种方式: 1)通过xml文件的标签<dubbo:reference /> ;2)通过注解@DubboReference. 这2种服务订阅在使用上基本没区别,因为标签<dubbo:reference />上的属性字段都可以在注解@DubboR…