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实践
  • 2016年03月10日 09:30

dubbo学习教程(一):完成入门第一个hello world程序【基于zookeeper】

一、为何使用dubbo服务来实现功能开发? 二、dubbo教程入门
  • qq_16736531
  • qq_16736531
  • 2016-03-15 15:59:26
  • 1770

《Java编程思想》学习记录(二)

20170420 已经看到第6章、109页了,为了避免文章冗长,重新开始一篇博客吧 1、每个.java文件中只能有一个public类,且这个public类的名字和.java文件名相同,同时可以有任意个...
  • CHEndorid
  • CHEndorid
  • 2017-04-20 21:59:02
  • 472

Dubbo学习总结(1)——Dubbo入门基础与实例讲解

Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo是一个分布式服务框架,致力于...
  • u012562943
  • u012562943
  • 2016-01-05 11:20:15
  • 6708

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

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

dubbo学习视频

http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd
  • zhuiqiuk
  • zhuiqiuk
  • 2017-02-23 17:05:27
  • 524

Dubbo入门学习笔记

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

dubbo使用记录

传统服务发布与调用,如webservice,http等方式,很难做到动态不重启的情况下加机器。dubbo可以做到这一点。   dubbo的核心:服务发布,服务消费,服务注册。   dubbo的目标...
  • zhaozhenzuo
  • zhaozhenzuo
  • 2015-05-18 22:35:40
  • 1202

dubbo zookeeper 学习一

在写这篇文章的时候我不熟悉dubbo 也不熟悉zookeeper ,说实话zookeeper的书是看了一本但是没看懂,而dubbo的书籍没找到但是有网站,也可以详细的学习。 dubbo学习地址:htt...
  • QH_JAVA
  • QH_JAVA
  • 2016-10-15 21:52:13
  • 1823

dubboDemo学习 ,适合零基础学习dubbo框架搭建入手级别demo

  • 2017年03月05日 22:21
  • 14KB
  • 下载
收藏助手
不良信息举报
您举报文章:Dubbo学习记录二
举报原因:
原因补充:

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