开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:框架设计】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/624/detail/9477
框架设计
一、dubbo 原理
1.dubbo 原理-框架设计
上图解释了 dubbo 的整个框架设计分层结构
(1)business 是业务逻辑层,只有一层,第一行 service 服务层,对面向接口编程,写一个接口,写一个实现远程调用也只需要调接口的方法。对于用户编程来说,到这一层就结束了,剩下的都是 dubbo 的原理。
(2)rpc 层是完成远程过程调用的一层,分了很多种小层
①config 配置层,主要是来封装配置文件里边解析出来的信息,像 reference config,service config。也就是说每一个标签都有它对应的 config 来封装这个标签的信息。
②proxy 服务代理层,就是利用代理的方式,比如生成客户端的代理对象,服务端的代理对象,代理对象互相来调用方法。
③registry 是注册中心层,很多服务都要注册到注册中心。包括消费者要从注册中心订阅所需要的服务来调用。这一层就是完成注册中心的相关功能,比如服务的发现以及服务的注册。
④Cluster 是路由层,进行负载均衡。比如说 invokeer 调用者,要调用很多的服务,有可能同一个服务在五六台机器上都有,cluster 做负载均衡。
⑤Monica 监控层,每一次的调用信息等数据都会发给监控层,监控层收到数据以后以界面的方式展示出来,simple Monica 软件可以在界面上展示出所有的监控数据。
⑥Protocol 远程调用层,整个封装 rpc 调用,rpc 调用核心就是 invokeer、Protocol 和 importer,它们就可以完成一次远程调用。
(3)remoting 解决远程通信
①exchange 信息交换层,创建一个客户端,一个服务端,架起管道进行数据的互联互通,
②transport 传输层,传输数据是用 transport 来封装传输。
③Serialize 序列化层,就是在整个传输的过程中,数据要序列化出去。收到数据以后还要反序列化回来,对象才能获得数据。
(4)consumer,跟消费者相关的 API 在一边;provider 跟服务提供者有关的 API 在一边;凡是所有标注的绿色都是 double 的接口,蓝色都是实现,接口之间的继承关系实线是实现于接口的,所有的虚线箭头是启动时整个初始化的规律。红色是整个的调用逻辑,黑色的箭头是依赖顺序。
(5)这些层对应 double 的每一个分包,double 包里有 rpc 层、remoting 层、registry、monitor、config 等等
每一层大概都会有对应的一个分包,都是单项依赖,上层依赖下层。
2.double 原理-启动解析、加载配置信息
3.服务提供者是如何将服务暴露到注册中心的
4.服务消费者是如何引用远程服务的,
5.远程服务是如何调用执行的。