博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dubbo源码阅读笔记(一)
阅读量:7172 次
发布时间:2019-06-29

本文共 1685 字,大约阅读时间需要 5 分钟。

hot3.png

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

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

参考文档:

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

Dubbo官方参考文档:

https://www.gitbook.com/ 

(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

你可能感兴趣的文章
漫谈promise使用场景
查看>>
Design Pattern的万剑归宗 => Mediator
查看>>
Javascript中的原型继承的一些看法与见解
查看>>
HackerRank:JavaScript 是最知名的编程语言
查看>>
Linux修改本地时间
查看>>
elasticsearch字符串包含查询
查看>>
5- Flask构建弹幕微电影网站-项目分析、搭建目录及模型设计
查看>>
Mysql四种常见数据库引擎
查看>>
《Kotin 极简教程》第7章 面向对象编程(OOP)(1)
查看>>
Chrome吃内存的能力可不是说着玩的!
查看>>
iStaing获500万美元投资,VR室内设计离我们还远吗?
查看>>
Java日志框架-Spring中使用Logback(Spring/Spring MVC)
查看>>
读书笔记--101个shell脚本 之#12--函数
查看>>
TCP/IP之(四)Delay ack 和 Nagle算法
查看>>
linux学习:selinux 禁用后(disabled)Linux系统无法正常启动解决
查看>>
关于tomcat和jetty对比(不喜欢jetty的勿看)
查看>>
grafana使用详解
查看>>
linux 文件同步 rsync+crontab
查看>>
git如何删除远程仓库的某次错误提交
查看>>
LAMP架构讲解(续一)
查看>>