dubbo原理和源码解析
文章平均质量分 94
天高任鸟飞-海阔凭鱼跃
天高任鸟飞 海阔凭鱼跃
展开
-
SPI机制
java SPI是通过java.util.ServiceLoader来实现的,是把目录(META-INF/services)下以类全路径名为名称的文件中所有列出的类都加载Dubbo SPI定制了SPI实现,可以按需加载(dubbo=***的形式,通过制定key实现按需加载),而且还可以定制多个Wrapper包装类进行AOP操作(Wrapper类需要实现接口,而且需要有以类接口类型为参数的构造方法)Dubbo SPI不仅能加载类,还可以给类属性赋值(先从SpringSPI记载,找不到,再从Dubbo自原创 2021-02-23 13:04:53 · 193 阅读 · 0 评论 -
Dubbo服务导出源码解析
服务导出大概原理(面试时可以这么答)服务导出的入口为ServiceBean中的export()方法,当Spring启动完之后,通过接收Spring的ContextRefreshedEvent事件来触发export()方法的执行。一个ServiceBean对象就表示一个Dubbo服务,ServiceBean对象中的参数就表示服务的参数,比如timeout,该对象的参数值来至@Service注解中所定义的。服务导出主要得做两件事情:根据服务的参数信息,启动对应的网络服务器(netty..原创 2021-02-22 03:57:03 · 455 阅读 · 1 评论 -
Spring与Dubbo整合原理
应用启动类与配置public class Application { public static void main(String[] args) throws Exception { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class); context.start(); S原创 2020-11-05 02:15:07 · 350 阅读 · 0 评论 -
dubbo整合spring源码解析
1@Service注解的实现流程2@Reference注解的实现流程 DemoService 一个服务生成两个bean 1)DemoServiceImpl ---> demoServiceImplBean(普通) 2)根据DemoServiceImpl上的@Service注解生成一个serviceBean,这个bean的ref属性指向demoServiceImpl这个bean。serviceBean还实现了ApplicationListener<Contenx...原创 2020-11-05 02:13:10 · 182 阅读 · 0 评论 -
Dubbo的可扩展机制SPI源码解析
DemoExtensionLoader<Protocol> extensionLoader = ExtensionLoader.getExtensionLoader(Protocol.class);Protocol http = extensionLoader.getExtension("dubbo");System.out.println(http);上面这个Demo就是Dubbo常见的写法,表示获取"dubbo"对应的Protocol扩展点。Protocol是一个接口。.原创 2020-11-01 12:42:29 · 93 阅读 · 0 评论 -
dubbo的可扩展机制SPI源码解析(二)
1、基本流程2、AOP3、IOC4、AdaptiveExtension5、ActivateExtensiongetExtension(name)getAdaptiveExtension(URL)dubbo spi的使用: 需要设置的地方: 1)resource文件夹增加接口全路径名称的文件 2)接口类增加@SPI注解。 3)被代理的对象增加@Adaptive注解 配置好spi后执行的时候,是根据配置文件的key找到一个代理对象(此代理对象是根据配置...原创 2020-11-01 12:41:03 · 225 阅读 · 2 评论 -
dubbo的基本应用与高级应用
1负载均衡 提供了多种负载均衡策略,缺省为random随机调用 负载均衡策略: 1)Random LoadBalance(随机) 2)RoundRobin (轮询) 3)LeastActive(最少活跃调用数) 4)ConsistentHash(一致性) 参数hash值一样,调用的是同一台机器2集群容错 重试是在消费端发起的 超时报错了,服务端时间是3s,消费端配置的是1s超时,重试设置的是2次。服...原创 2020-10-31 04:39:04 · 246 阅读 · 1 评论 -
dubbo 架构以及原理
1 dubbo rpc框架(远程方法调用) 1)支持多种rpc协议,默认是dubbo rpc协议有 dubbo,rmi,hessian,http,webservice,thrift,memcached,redis,rest 下面是dubbo的六大特性: 2)面向接口代理的高性能RPC调用 服务以接口为粒度 服务提供者: (1)提供服务的接口 (2)提供实现类 ...原创 2020-10-16 00:20:22 · 162 阅读 · 0 评论 -
Dubbo原理和源码解析之服务引用
一、框架设计在官方《Dubbo 开发指南》框架设计部分,给出了引用服务时序图:另外,在官方《Dubbo 用户指南》集群容错部分,给出了服务引用的各功能组件关系图:本文将根据以上两张图,分析服务引用的实现原理,并进行详细的代码跟踪与解析。二、原理和源码解析2.1 创建代理Dubbo 基于 Spring 的 Schema 扩展实现 XML 配置解析,Dubbo...转载 2020-02-23 23:33:11 · 177 阅读 · 0 评论 -
Dubbo原理和源码解析之服务暴露
github新增仓库 "dubbo-read"(点此查看),集合所有《Dubbo原理和源码解析》系列文章,后续将继续补充该系列,同时将针对Dubbo所做的功能扩展也进行分享。不定期更新,欢迎Follow。一、框架设计在官方《Dubbo 用户指南》架构部分,给出了服务调用的整体架构和流程:另外,在官方《Dubbo 开发指南》框架设计部分,给出了整体设计:以及暴...转载 2020-02-23 22:20:52 · 242 阅读 · 0 评论 -
dubbo注册服务IP解析异常及IP解析源码分析
https://www.cnblogs.com/leo-li-3046/p/5702479.html在使用dubbo注册服务时会遇到IP解析错误导致无法正常访问.比如: 本机设置的IP为172.16.11.111, 但实际解析出来的是180.20.174.11这样就导致这个Service永远也无法被访问到, 而调用方一直报错.当然若发现服务无法访问, 最好先通过dubbo-adm...转载 2019-07-25 13:00:07 · 450 阅读 · 0 评论 -
dubbo源码分析 -- 远程通信 netty
https://www.jianshu.com/p/12826f1e10c2dubbo 底层通信选择了 netty 这个 nio 框架做为默认的网络通信框架并且通过自定义协议进行通信。dubbo 支持以下网络通信框架:Netty(默认)MinaGrizz lyNetty是什么?①本质:由JBOSS提供的一个java开源框架(一个jar包)②目的:快速开发高性能、高...转载 2019-03-02 19:27:40 · 164 阅读 · 0 评论 -
dubbo底层之Netty
https://www.cnblogs.com/songxh-scse/p/6692301.html背景Java线程:由开始的单线程,到通过new Thread()创建的多线程,再到现如今的线程池,Java多线程编程的效率和性能有了很大的提升 Reactor模型:基于事件驱动,适合处理海量I/O事件 1) 单线程模型,所有的IO操作都在一个NIO线程上完成 存在性能和...转载 2019-03-02 19:22:07 · 690 阅读 · 0 评论 -
Dubbo架构设计详解
http://shiyanjun.cn/archives/325.htmlDubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consu...转载 2018-07-16 16:01:01 · 145 阅读 · 0 评论