00:00
好,那么接下来呢,来说我们的分布式RPC框架,我们的阿帕奇double。那这个软件的架构的演进过程呢,我们之前我们在我们的呃,Spring cloud当中啊,跟大家说过什么叫单体架构啊垂直架构,还有我们的OA架构,还有我们的啊微服务架构,那我们的微服务架构呢,在这一块啊,分分为两种啊,一种是我们的RPC的,一种呢,就是我们的呃,HTTP的,那上面的这些啊,我们就不说了,大家自己去看,这个和我们之前其实也说过,接下来呢,我们直接看我们这个阿帕奇的这个概述啊,介绍我们什么是阿帕奇double啊,它的一个简介,说我们的阿帕奇double是一款高性能的Java的RPC框架,它的前身呢,是我们的阿里巴巴公司开源的,是在一八年的时候,阿里巴巴把这个框架捐献给了我们的阿帕奇基金会。那么来看什么是我们的RPCA啊,RPC呢,全称是我们的remote process,靠,就我就是我们的说的啊,远程过程调用,比如说我们的两台服务器A和BAA服务器上部署一个应用,B服务器上的也部署一个应用,那A服服务器上的应用想调用我们B服务器上的应用提供的方法,由于两个应用啊,它不在一个内存的空间当中啊,不能直接调用,所以呢,需要我们通过网络来表达调用的这个语义和传达调用的这个数据。在这个过程中呢,我们需要注意的是我们的RPC并不是一个具体的技术,它呢指的是我们整个网络远程调用的过程。
01:27
那RPC呢,它是一个呃泛化的概念,严格来说呢,呃,一切远程过程调用它的手段都属于我们的RPC范畴,各种开发语言都有自己的RPC框架啊,Java的RPC框架比较多,广泛使用的是我们的r mi啊,Has,还有我们的double,那这个呢,是我们的double的官网的地址啊,大家可以看一下,我这块已经点开了。啊,这个呢,就是我们阿巴奇double的一个,呃,官方网址。大家有需要的话也可以上来啊,自己看一下,然后呢,在这块我们的double提供了三大核心能力,首先第一个呢,是面向我们接口的远程方法调用,第二个呢是智能容错和负载均衡,以及它的服务自动注册和发现,那我们的double和我们之前学的这个spring cloud在这一块啊,它有什么不同呢?
02:19
首先我们这个spring cloud啊,它在服务治理这一块啊,比我们的double做的要好,但是呢,我们的double执行效率比我们的spring cloud啊要强,那接下来呢,我们看一下我们的double的这个呃,架构啊,它的架构图在这一块呢,其实咱们来说学完我们的spring cloud以后,对我们的double其实嗯,它差不多啊,但是呢,呃,还是有一点点不同的。我们的double在企业当中用的也挺多的啊,首先它有一个服务的提供者啊,提供方啊,Provider也可以叫提供者,然后呢,这边有一个我们的也是我们的服务消费者和消费方,在这块呢,是我们的resistry啊,是我们的呃服务注册和发现中心这块呢,还有一个我们的容器container,这个呢,就基本上都是我们的three啊,Three来充当我们的这个container容器,然后呢,这块呢,它还有一个呃,Monitor,那这个monitor呢,它是一个统计我们服务的调用次数和调用时间的一个呃,监控中心。
03:20
那看来看一下这个,呃,它的这个调用的关系啊,首先我们这个呃虚线啊,我们的虚线全部都是异步访问的,实现都是同步访问的。然后我们这个蓝色的虚线啊,是在我们启动时完成的功能,然后红色的这个呃,虚线呢。都是我们程序运行过程中啊,执行的一个功能,包括我们这个实现啊,它也是程序运行过程中执行的一个功能。首先呢,是我们的呃服务容器啊,负责我们启动和加载运行我们这个服务的这个提供方啊provider,然后呢,在这一块我们服务的提供方呢,他在启动的时候啊,我们的注册中心注册我们自己提供的这个呃服务。
04:04
然后呢,我们的服务消费者啊,我们的消费方在启动的时候呢,向我们的这个呃,Reist啊,也就是我们的注册中心去订阅所需要的这个服务subscribe,我们这个订阅我们所他所需要的这个服务,然后呢,在我们的这个注册中心呢,返回给我们的呃服务的提供者,那在我们的这个resist啊,注册中心这一块呢,返回我们这个provider的这个提供者啊,他的这个地址列表给我们的这个消费者,如果说是我们的这块有变更的话,那么注册中心啊,将基于一个呃叫做长连接啊,推送变更我们的数据给我们的这个consumer。那这个第四步呢,就是我们的服务的这个消费者啊,我们从我们的provider提供者的这个地址列表中,基于我们的负载均衡的一个算法,它是一个软负载均衡的一个算法。呃,默认,默认应该是我们随机的。
05:00
选一台提供者啊进行调用。如果说是在这个过程中调用失败的话,那么再选择我们的另一台调用那第五个我们的这个,呃,Monitor。统计监控的这个呢,是我们的服务消费者啊,在这边我们的和我们的服务提供者,我们的provide在我们的内存中呢,累计调用次数和调用的一个时间,它呢是呃定时每分钟啊发送一次统计数据到我们的这个呃监控中心,那这个呢是我们呃double的一个简单的一个架构图。
我来说两句