00:00
好,同学们,接下来这节课呢,们就一起来研究一下double的原理,原理呢我们准备分为五个部分进行讲解,第一个部分我们先来看一下double整个框架的设计结构,接下来呢,我们来看一下double在启动的过程中配置文件如何解析,以及解析配置文件做了什么,接下来呢,就是第三步,我们服务提供者是如何将服务暴露,哎,我们注册到注册中心的,接下来还有第四步我们的啊服务消费者是如何引用远程服务的,包括呢,我们引用到无远程服务以后呢,将来呢就是第五步,我们远程服务是如何调用执行的,首先呢,我们来看第一个double的框架设计,Double呢,官方已经对这个解释的很清楚,在文档里边,我们在开发者指南有一个框架设计。这一块呢,就解释了double的整个框架设计分层结构,我们呢先来看double对整个框架的整体分层,在这个大括号呢,他写了一个叫business,这是我们业务逻辑层,业务逻辑呢只有一层,他写了一个service,比如说我们的服务层,我们是面向接口编程,我们写一个接口写一个实现,想要远程调用也只需要调接口的方法,就远程调用来了,也就说对于我们用户编程来说,我们只关心到这一层就结束了,那剩下的呢,都是大报的原理了,接下来我们来看。
01:34
这个大括号从这到这儿结束,Double呢把它称为叫RPC层,就是完成我们远程过程调用的这一层,这一层呢,它分了很多种小层,首先来看有一层叫conig,那么顾名思义,它就是我们配置层,配置层呢主要是来封装我们配置文件里边解析出来的一些信息,哎,像这些reference con啊,我们service con我们以前都见过,也就是说我们每一个标签相当都有它对应的con来封装这个标签的这些信息,当我们配置层收集到我们配置的相关数据以后,将来是第二层叫proxy,我们叫服务代理层,这个代理层呢,它就是啊,帮我们来利用代理的方式,比如生成我们客户端的代理对象,服务端的代理对象,那么代理对象呢,就要互相来调用方法了,哎。
02:34
接下来呢,还有一个叫registry,这是我们的注册中心层,我们的很多服务都要注册到注册中心,包括消费者要从注册中心去来订阅,哎,我们这有一个注册中心,那消费者呢,要去订阅我们所需要的这些服务来调用,那么我们这一层呢,就是完成注册中心的相关功能,比如服务的发现以及服务的注册。接下来呢,还有一层叫CR,这一层呢是我们的路由层,也是我们来帮我们来进行负载均衡的这一层,也就说呢,由于我们这个影播壳啊,我们称为调用者啊,那调用者要调用很多的服务,这个服务啊,有可能同一个服务在五六台机器上都有,所以说呢,我们在这一层可以给我们来做到负载均衡,包括呢,还有一个叫monitor,我们叫监控层,我们每一次的调用信息等等,我们都会发给监控层的一些数据来这监控。
03:34
库层收到数据以后呢,那就可以给我们以界面的方式,我们以前安装过一个叫simple monitor,就是呢,我们就可以在界面上展示出所有的监控数据,哎,这是我们监控层,还有一个叫portoc口,Portoc呢,这也就是我们的远程调用层,它是来整个封装我们RPC调用的,RPC调用里边呢,核心的三个就是我们这个voer port和import,这三个呢,我们后来还会仔细的详说,我先放在这,它们呢就可以完成我们一次远程调用,当然远程要调用我们就得跟得跟AB2个服务器,我们架起通信的管道,那么通信的这些我们包括在通信之间,我们要传递数据怎么办呢?我们在下一层叫Mo,哎,Moting呢就是来解决我们远程通信的这一层,其中呢有exchange,叫信息交换层。
04:34
其实呢,就是创建一个客户端,一个服务端,两个呢,假期管道要进行啊,数据的互联互通。还有一个呢,叫transport我们的传输层来,我们真正传输数据呢,我们是用transport来封装传输的,而transport的底层其实就是net框架,比如说net框架呢,其实就在这一层在工作了,然后呢,还有一个叫Siri,我们序列化层,这个序列化层呢,就是说我们在整个传输的过程中,我们数据要序列化出去,我们在网络传输收到数据以后呢,还要反序列化回来,我们才能把数据拿到这个对象,这呢是我们说的序列化层大爆,将整体的这么多小层分为咱们这三个大层,那每一层该怎么工作,我们后来呢,一步一步的去来调试,整个图的结构就会清楚了,而且这个图呢,哎,不同的颜色,比如我们这个颜色是consumer,就是说跟我们消费者相关的API在这边,Provider,跟服务提供者有关的API在这边。
05:43
而且呢,凡是所有标注的绿颜色其实都是double的接口,而这个蓝颜色都是我们的实线,包括呢接口之间的继承关系,哎,也在这儿有我们这个实线位是实现于这个接口的,而且呢,所有的虚线箭头是我们容器一启动时的整个初始化的规律,这个红颜色呢,就是我们整个的调用逻辑,哎,我们如何完成远程调用的,而这个黑颜色的箭头是我们的依赖顺序,也就是说这些层呢,其实是对应的double里边的每一个分包,哎,我们来看一下double double呢,这些包里边,比如有我们这个RPC层,Remoteting层,包括呢,有我们这个regry,还有我们这个monitor conf等等,比如说呢,每一层大概呢,都会有对应的一个分包啊,这些包呢,其实都是单向依赖上层的依赖下层,整个架构图的介绍我们就写。
06:43
先说到这里,当然这里边的详细信息给我们慢慢的调试,再来掌握整个原理,等我们哪一天回过头再来看这个架构图,你看的清清楚楚的时候,那说明大报的原理就完全掌握了。
我来说两句