Dubbo源码阅读笔记(一)

      前几天看到阿里重启维护Dubbo了,实属一大幸事。研究开源代码的第一个目标是Dubbo,中间由于工作比较忙,断断续续的看了一段时间,回过头来发现只是零散的去看,并没有完整的、系统的去进行。故将平时看过的东西再进行记录、整理、归纳,逐渐形成一个完整的体系,同时也希望能够以此勉励自己坚持下去,形成良好的习惯。

刚开始研究学习开源框架,先在前人的基础上进行,逐渐找到学习研究的方法。

参考文档:

(1)Dubbo官方参考网站:http://dubbo.io/ 今天点进去看,发现已经由原来的中文版变成了英文版,内容也有所跟新,顺便找了一下中文版的参考文档:

Dubbo官方参考文档:

https://www.gitbook.com/@dubbo 

(2)http://wenku.baidu.com/link?url=w6W0hBn4B5jz0TpbOFlIiKZgTwPGyc0BrbDiLZxC4MfH2y1aXSww7EswFLxDfY4ilQ1K1Ohr-26ylS7-h7t4r2lGd5XT68ezqzYPK8Y5qii dubbo源码解析2.0

基本概念:

1、RPC 

2、SOA(资源调度和治理中心)

3、failover 又称故障切换,指系统中其中一项设备或服务失效而无法运作时,另一项设备或服务即可自动接手原失效系统所执行的工作。

Dubbo经典架构图:

4、Dubbo 节点角色说明:

Provider:暴露服务的服务提供方

Consumer:调用远程服务的服务消费方

Registry:服务注册与发现的注册中心

Monitor:统计服务的调用次数和调用时间的监控中心

Container:服务运行容器

各个节点角色说明:

Provider:暴露服务的服务提供方

Consumer:调用远程服务的服务消费方

Registry:服务注册与发现的注册中心

Monitor:统计服务的调用次数和调用时间的监控中心

Container:服务运行容器

调用关系说明:

0:服务容器负责启动,加载,运行服务提供者

1:服务提供者在启动时,向注册中心注册自己的服务

2:服务消费者在启动时,向注册中心订阅自己所需的服务

3:注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

长连接:

连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

4、注册到zookeeper的过程:

AnnotationBean.postProcessBeforeInitialization() -> AnnotationBean.refer() -> ReferenceConfig.get() -> Reference.init() -> Reference.createProxy() -> RegistryProtocol.refer() -> RegistryProtocol.doRefer() -> FailbackRegistry.register() -> ZookeeperRegistry.doRegister()

5、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

6、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

7、Dubbo 的核心机制:

(1)设计模式

(2)bean加载

(3)扩展点机制

(4)动态代理

(5)远程调用流程

(1)a、工厂模式:

    b、装饰器模式:

    c、观察者模式:

    d、动态代理模式:

8、Dubbo使用的扩展点获取:com.alibaba.dubbo.common.extension.ExtensionLoader类 Java的SPI机制

可参考:https://my.oschina.net/u/3729778/blog/1575581

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3729778/blog/1575476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值