Dubbo学习记录二

原创 2016年08月20日 17:14:22

记录在研究Dubbo代码中的学习点  (@SPI的接口类的接口方法的@Adaptive)


1  在与Spring进行整合的时候,利用Spring的xml配置创建出一系列的配置对象,存到Spring容器中


application 对应于ApplicationConfig

registry 对应 RegistryConfig

moniotr 对应 MonitorConfig

provider 对应 ProviderConfig

consumer 对应ConsumerConfig

protocol 对应ProtocolConfig

service 对应ServeriConfig

reference 对应ReferenceConfig

上面的对象不依赖Spring,如果想直接通过API启动,可以手动创建上述对象


对于提供者来说,为了在Spring启动的时候,也相应的启动provider发布服务注册服务的过程,加入一个和Spring相关联的ServiceBean,继承了ServiceConfig,而这个ServiceBean就是provider与Spring整合的关键


ServiceBean除了继承dubbo的配置抽象类以外,还实现了一系列的Spring接口用来参与到Spring容器的启动以及bean的创建过程中,由于ServiceBean是单例模式(每个配置就是唯一的一个ServiceBean,包含的interface以及ref都已经固定了),每个接口配置都需要一个<dubbo:service>配置项, 每个ServiceBean在初始化后,由于该类实现了InitializingBean,所以在初始化完成后会调用afterPropertiesSet完成整个dubbo的配置加载过程,而同时ServiceBean又实现了ApplicationListener,所以会在整个Spring容器加载完成后接收到消息,完成onApplicationEvent方法的调用,该方法就会将该ServiceBean配置的接口等信息完成服务的发布


同理对于消费者来说,就有ReferenceBean和ReferenceConfig,这两个完全对应ServiceBean和ServiceConfig,但是有个不同,因为提供者ServiceBean需要在Spring启动的时候就提供服务,所以是通过onApplicationEvent后完成的,但是消费者ReferenceBean是在程序需要的时候才会去执行,如果通过配置在Spring启动的过程中完成初始化是并不是合适的做法,而是在应用程序需要用到的时候,再去创建。所以ReferenceBean实现了FactoryBean,所以在通过Spring框架getBean的时候调用的是ReferenceBean的getObject方法,返回的是

    // 接口代理类引用
    private transient volatile T ref;

而这个引用对于每个<dubbo:reference>也是唯一的,因为会缓存起来,所以虽然ReferenceBean看上去是工厂模式,实际上返回的都是同一个引用,所以模拟成工厂bean主要是为了在应用程序需要吧使用的时候才去创建对象,毕竟Proxy创建的成本还是比较大的,这样做也能很大程序提高程序的效率


Dubbo源码学习之知识点分析(续)

在上一篇里以文字为主,介绍了dubbo中的很多知识点,在本篇文章中,主要以代码为主,以一个同步请求直到收到返回值的代码分析,把整个的过程弄清楚。 代码只贴核心的语句,很容易追踪的,有些地方及时补充说...
  • herriman
  • herriman
  • 2016年05月30日 22:01
  • 1796

更好地学习dubbo源代码

Dubbo的官方首页在这里: http://code.alibabatech.com/wiki/display/dubbo/Home很荣幸,作为这样一款业界使用率和好评率出众的RPC框架的维护者,...
  • u012373815
  • u012373815
  • 2016年07月15日 11:31
  • 536

入门Dubbo学习知识整合及心得

简述:     Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。是阿里巴巴开源的单一长连接服...
  • o9109003234
  • o9109003234
  • 2015年04月29日 21:46
  • 3048

Dubbo实战(二)多协议配置

Dubbo实战(二)使用ZooKeeper注册中心
  • FX_SKY
  • FX_SKY
  • 2016年07月17日 23:11
  • 6044

Dubbo入门学习笔记

Dubbo是什么Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是...
  • u014394255
  • u014394255
  • 2017年01月02日 22:54
  • 1280

Dubbo学习(一):dubbo的基本概念

一.ZooKeeper选举 1.什么是SOA    就是将以前写的模块单独的抽取出来,成为一个独立的应用,独立的服务运行,不依赖与其它模块       好处:1.解耦合,更高层次的解耦合  ...
  • ZuoAnYinXiang
  • ZuoAnYinXiang
  • 2016年03月19日 11:29
  • 5573

Dubbo服务框架解析(一)

公司的一个项目的分布式系统的服务管理,使用了阿里的服务框架Dubbo,因此这里准备对服务框架进行了介绍。 Dubbo服务框架可以使得java分布式系统之间进行解耦,使用一个服务注册中心来统一管理服务...
  • wilbertzhou
  • wilbertzhou
  • 2014年08月19日 14:52
  • 2276

dubbo学习记录(一)dubbo简介

作为阿里开源的项目,dubbo出现也有段时间了,之前接触过一点,但是没细研究,这次抽出时间来具体学习一下。 一、什么是Dubbo?      Dubbo是一个分布式服务框架,致力于提供高性能和透明...
  • zq17865815296
  • zq17865815296
  • 2018年01月06日 22:59
  • 33

Selenium2.0之WebDriver学习总结(2)

(三) 命令和操作 这一部分将介绍一下WebDriver的一些具体操作和命令,实际操作中,我们需要两大工具来帮助我们:FireBug和Xpath工具,这两者都是Firefox上的插件。接下来我们所讲...
  • JillLiang
  • JillLiang
  • 2013年04月01日 22:23
  • 2871

dubbo入门学习笔记

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 其核心部分包含: 1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程...
  • fuyuwei2015
  • fuyuwei2015
  • 2015年11月15日 15:32
  • 748
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dubbo学习记录二
举报原因:
原因补充:

(最多只允许输入30个字)