Dubbo
文章平均质量分 79
Leo Han
Leo Han
展开
-
Dubbo中Filter过滤器,拦截器的实现原理,实现自定义的Filter过滤器
我们知道Dubbo中大部分的实现类加载都是通过SPI实现,同样Dubbo也提供了Filter机制,这个部分研究下怎么实现了,是怎样的一个调用逻辑。首先我们看下Dubbo中Filter的定义: * Filter Chain in 3.x * * -> Filter -> Invoker * * Proxy -> ClusterFilter -> ClusterInvoker -> Fil原创 2021-11-21 22:45:36 · 4548 阅读 · 0 评论 -
Dubbo中的SPI机制实现,自定义对接SPI
SPI在java中称为Service Provider Interface,Dubbo中对java的spi机制自己实现相对应的逻辑。我们以Dubbo中的Protociol为例,一般我们去获取对应的Protocol的时候都是通过如下方式:ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();// 或者ExtensionLoader.getExtensionLoader(Protocol.class).getE原创 2021-11-20 23:03:34 · 1650 阅读 · 0 评论 -
Dubbo中服务降级、服务限流限流措施
作为一个RPC框架,Dubbo同时提供了兼具微服务的一些服务管理功能:服务降级、限流服务降级Dubbo中服务降级可以通过mock实现,在消费端,通过配置mock选项,来支持服务降级如:@DubboReference(mock = "force:return null")@DubboReference(mock = "return null")@DubboReference(mock = "throw") // 抛出 RpcException@DubboReference(mock = "t原创 2021-11-20 14:38:21 · 2607 阅读 · 0 评论 -
Dubbo中服务注册与发现实现原理
我们知道,现在一般微服务为了更好的管理都会提供对应的服务注册与服务发现机制,Dubbo作为一个RPC框架和微服务组件也提供了服务注册和服务发现机制,接下来我们看看Dubbo是怎么实现的服务注册我们还是基于之前 dubbo服务端启动源码分析我们知道,在对外发布服务的时候是通过ServiceConfig.export来进行服务的暴露发布的,而服务注册的时机也是在这个时候,ServiceConfig.export,会调用doExportUrls来进行服务发布和注册:private void doExpor原创 2021-11-19 15:47:25 · 1998 阅读 · 0 评论 -
Dubbo消费端集群、负载均衡实现、路由Router
我们知道,一般Dubbo服务端会存在多个实例,Dubbo消费端内置了策略,可以进行负载均衡调度。我们接下来大致看下。原创 2021-11-17 22:02:03 · 645 阅读 · 0 评论 -
Dubbo中基于Springboot的配置注入实现
我们知道,当我们使用springboot框架引入Dubbo的时候,只需要在启动类上加入EnableDubbo注解的时候就能够注入Dubbo相关配置,我们看下怎么实现。如果要了解这篇文档的一些内容,需要先看下之前对Springboot配置的研究SpringBoot源码读取配置源码分析,配置优先级,加载Bean信息当我们在引入dubbo-spring-boot-starter模块的时候,查看包下面对应的spring.factorues文件,会自动注入如下类:org.springframework.boot原创 2021-11-16 20:35:18 · 1867 阅读 · 0 评论 -
Dubbo服务端、消费端网络连接数控制
我们知道,在Dubbo中,默认底层是通过Netty来进行网络通信的,而我们知道单台计算机能够支持的网络连接的数量是有限制的,那么在Dubbo中是怎么来设置这些连接的数量呢 ?消费端通过之前的分析(Dubbo消费端启动流程、处理逻辑,方法调用实现(基于Dubbo3))[https://blog.csdn.net/LeoHan163/article/details/121333133]我们知道在DubboProtocol中会生成对应的服务端的连接,通过getClients方法:private Excha原创 2021-11-15 22:17:59 · 1599 阅读 · 0 评论 -
Dubbo消费端同步调用、异步调用(基于Dubbo3)
上一节,我们大概浏览了一下Dubbo消费端的启动流程Dubbo消费端启动流程、处理逻辑,方法调用实现(基于Dubbo3)我们知道Dubbo底层的网络通信是基于Netty的,而Netty一般是基于异步IO,那我们如果需要同步调用、异步调用,Dubbo中是怎么实现的呢?我们回到DubboInvoker.doInvoke中,这里是关键:protected Result doInvoke(final Invocation invocation) throws Throwable { RpcIn原创 2021-11-15 17:52:27 · 1882 阅读 · 0 评论 -
Dubbo消费端启动流程、处理逻辑,方法调用实现(基于Dubbo3)
之前我们已经分析Dubbo服务端相关启动流程和处理逻辑,接下来我们分析下客户端的处理流程,本文主要分析的是基于Spring框架下启动流程分析。首先当我们使用DubboComponentScan这个注解的时候,会注入DubboComponentScanRegistrar:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(DubboComponentScanRegistrar.class)pu原创 2021-11-15 14:49:27 · 1428 阅读 · 0 评论 -
Dubbo3中服务端线程模型,线程处理(基于Dubbo3)
通过之前我们对Dubbo服务端启动流程的源码分析dubbo服务端启动源码分析(基于Dubbo 3),我们知道默认的Dubbo协议底层是基于Netty的,之前我们分析Netty相关线程模型的时候 Netty中线程处理 - NioEventLoopGroup,NioEventLoop也了解到Netty是有自己的线程处理的,那么Dubbo中是怎么来处理业务上的需要和Netty线程模型的?首先我们再次回顾下之前的分析,在生成NettyServer的时候: public NettyServer(URL url,原创 2021-11-15 11:24:22 · 1356 阅读 · 0 评论 -
dubbo服务端启动源码分析(基于Dubbo 3)
本文基于Dubbo 3.0.2来进行源码研究。在基于springboot的开发中,dubbot的spring-boot-starter中,DubboAutoConfiguration自动配置是一个关键类,这个类向spring容器注入了如下关键类:ServiceAnnotationPostProcessorDubboBootstrapApplicationListener其中ServiceAnnotationPostProcessor主要是用来加载被DubbotService注解修饰的类,而Dub原创 2021-09-06 22:15:54 · 982 阅读 · 1 评论 -
Dubbo 2.7.6 接入教程+Springboot2.1.13+Zookeeper
Dubbo 2.7.6接入教程,dubbo版本2.7.6,spring-boot版本2.1.13.RELEASE父pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or...原创 2020-04-12 21:17:45 · 2251 阅读 · 0 评论