![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dubbo
文章平均质量分 77
小小少年_
这个作者很懒,什么都没留下…
展开
-
@Extension、@SPI注解原理
在dubbo源码中,涉及到一些dubbo自定义的注解,这篇笔记主要记录这些注解的原理和使用方式,了解了这些之后,便于我们对dubbo进行二次扩展dubbo的SPI机制,和Java原生的SPI机制相比,新增了name,可以指定某一个实现类对应的name,我们在使用的时候,可以根据name,获取自己想要使用的扩展类,如果在获取实现类时,指定name为true,默认返回的是@spi注解中指定的name对应的实现类简单来说:@SPI注解中指定的value值,是当前接口默认的实现类,比如,下面的这个截图,就表示Pr原创 2022-07-03 14:02:40 · 2028 阅读 · 0 评论 -
dubbo源码-隐式传参
在业务系统中,如果要使用dubbo的隐式传参功能,可以使用RpcContext对象使用在服务消费者这一端这样设置即可RpcContext.getContext().setAttachment("age","22");然后在服务提供者这一端String age = RpcContext.getContext().getAttachment("age");System.out.println("隐式传参获取到的age:" + age);就可以获取到设置的参数源码分析其实要实现隐式传输的传递原创 2022-02-19 13:15:36 · 720 阅读 · 1 评论 -
dubbo 自定义filter
目的通过自定义filter,在dubbo接口被调用的时候,打印入参信息、请求接口名称和返回值信息,这样可以避免在每个接口中手动打印接口请求的入参等日志,实现统一打印日志的方式有多种,这里只是为了学习自定义filter,所以以这个为例应用要实现自定义filter,需要有以下几个步骤1.自定义filter实现类@Activate(group = "provider")public class DubboProviderLogFilter implements Filter { @Overri原创 2020-12-18 12:01:33 · 3032 阅读 · 1 评论 -
dubbo的线程模型、派发策略、线程池策略
https://dubbo.apache.org/zh/docs/advanced/thread-model/dubbo提供了自己的线程池以及派发策略,其实官方文档上讲的是比较清楚的,只需要结合着源码看下,就能明白具体的原理原创 2022-02-19 10:43:30 · 2107 阅读 · 0 评论 -
dubbo之SPI扩展机制注解:@Extension注解的作用
在接口的实现类上可以使用该注解,如果该实现类在扩展文件中,没有配置name,就可以通过@Extension注解,指定name原创 2021-09-25 13:11:48 · 1060 阅读 · 0 评论 -
dubbo超时机制原理
如果服务消费者调用超时,会抛出异常,来看下异常的原理:原创 2021-09-16 08:48:30 · 2701 阅读 · 0 评论 -
dubbo服务调用为何先进入到mockClusterInvoker执行
原来在学习源码的时候,没有注意到这个点,也没觉得有什么问题,但是最近忽然想到,为什么会先经过mockClusterInvoker的处理,然后再经过集群容错相关cluster的处理?原创 2021-09-04 08:43:09 · 515 阅读 · 0 评论 -
dubbo源码之SPI机制源码
在dubbo中,对Java中的spi机制进行了扩展,具体spi机制的使用,就不说了,在dubbo中进行了如下的扩展1.可以通过xxxname = com.xxxx.MyFilter的配置方式,来指定自定义实现类的name2.在使用的时候,可以根据name获取指定的扩展类,而不是像Java的spi机制直接获取所有的扩展类在源码层面,SPI机制最为重要的类就是ExtensionLoader类,在该类中,有三个比较重要的方法getExtension(String name)getActivateExte原创 2021-03-11 21:59:30 · 209 阅读 · 0 评论 -
dubbo如何利用spring扩展点完成初始化
dubbo在初始化的时候,充分利用了spring的扩展点,进行初始化,这篇笔记主要记录dubbo是如何利用spring的扩展点来进行初始化的;这篇笔记只记录dubbo启动的时候的源码,不记录启动过程中服务导出和服务引入的源码dubbo关键类@DubboComponentScanDubboComponentScanRegistrarServiceAnnotationBeanPostProcessorReferenceAnnotationBeanPostProcessorServiceBeanR原创 2021-01-09 16:01:39 · 725 阅读 · 4 评论 -
dubbo源码 -- 服务导出
结论所谓的服务导出,就是服务提供者将本地服务注册到zk集群,并且开启netty,用来接收消费者的请求,dubbo服务提供者就是一个netty服务端对于服务导出,会进行以下几个步骤1.进行一些校验、参数取值、赋值等(同一个参数配置的覆盖)2.获取所有的注册中心、获取所有配置的协议3.组装url对象,由于dubbo是基于url来完成注册的,所以,会先拼接、组装url4.根据url和registry(注册中心)生成Invoker对象5.将Invoker对象进行包装,然后进行真正的导出5.1 首先会原创 2021-03-01 13:08:10 · 220 阅读 · 0 评论