00:00
好,接下来呢,我们来学习第六章three BOO与分布式。首先呢,我们给大家介绍一下分布式里边的一些基本思想,接下来呢,我们整合double和zoo keepper以及spring BOO和cloud,我们来做一个简单的分布式应用。首先呢,我们来说,在随着我们互联网的发展过程中,我们网站的应用规模不断的在扩大,我们普通的这些单体应用就不能满足需求了,可能一出小小的修改都会导致我们整个应用的重新部署,而且呢,它也不能对付大流量的访问,这个时候呢,我们就可以像以前微服务一样,我们对网站的功能进行拆分,比如我们来拆分出user模块,我们的用户模块,我们又拆分order模块,订单模块,那么当用户模块访问量大以后呢,我们可以把用户模块能独立部署到不同的机器,一号机、二号机、三号机。
01:00
同时来运行用户模块,这个时候呢,一号机承载200并发,二号机200并发,三号机200并发,那合起来都有600了,那同样的我们订单呢,我们也放在很多机器里边同时来运行,那这样的话,如果用户模块想要用订单模块的数据,那就牵扯到一个问题,什么呢?RPC,我们的远程过程调用,远程过程调用呢,我们以前可以来写代码,或者呢用web service的方式来进行调用,但是呢,这样都太麻烦了,我们需要一个RPC框架,也就是说我们需要一个分布式服务框架,这个时候呢,Double就可以帮我们来做答案,四分也行,但是呢,还有一些问题牵扯到一个概念叫注册中心,比如举一个例子,我们用户模块想要用订单模块,订单模块的话呢,在四台机器上都有,哎,我们。
02:00
运行哪个都行,那我们用户模块到底要调哪台机器上订单模块的方法功能呢?那我们就可以有一个注册中心,哎注册中心里边呢,就来保存了,咱们这些订单模块都在哪个服务器里边,那用户模块想要调的时候呢,我们可以先去注册中心里边来问一下注册中心我要用到订单模块哪些服务器里边都有,那注册中心来告诉他,比如一号服务器,二号服务器,三号服务器有,那我们用户模块呢,就直接去一号服务器等等来调用订单模块。这个注册征兴呢,就类似于我们现实生活中的什么呢?婚介所,哎,比如我们有男同志,我们要找女朋友,那如果自己来找的话,那千千万万的啊,女生那眼花缭乱怎么办呢?我们所有要找女朋友的男生,我们可以注册在婚介所里边,所以要找男朋友的女生也可以注册在婚介所里边,那这样的话我要找哪个女朋友?哎,我把条件呢告诉婚介所,那婚介所呢,给我来查一下来我们符合这个女朋友条件的都在哪?给我们返回地址,我们直接过去来调用,这是我们注册中心所需要的功能,这个时候呢,无论是用double还是用spring cloud,我们都牵扯到这个注册中心的概念,好那么接下来呢,我们就以zoo keepper和double为例,我们来整合一个分公式,应用,首先我们来说zoo keepper,它呢就是用来做注册中心。
03:39
B就是我们刚才说的分布式服务框架,它来负责A模块和B模块的远程过程调用,但是呢,A要调BB在哪儿呢?我们就需要有一个注册中心来保存DB的地址,我们A访问注册中心,找到B的地址以后,我们来进行远程调用,那么zoo keepper就是这个注册中心,Double就是这个分布式服务的调用框架,Double的这个架构工作图就如这样来我们这呢,有一个container,这是我们double的服务容器,它在启动的时候呢,负责启动、加载和运行我们这些,我们称为provide服务提供者,服务提供者在启动的时候呢,会将自己能提供的这些服务信息注册到注册中心里边服务消费者呢,同时在启动的时候会从注册中心里边订阅他所。
04:39
需要的这些服务,注册中心呢,会把他所需要的服务的这些地址列表全部返回给他,当然服务如果有变更,注册中心呢,也可以基于长链接的方式将这个变更推送给他,相当于我们消费者里边手持着一份实时更心的我们提供者的这些名单,那如果我们消费者要调用呢,我们就从我们提供者的这些地址列表中,我们可以基于一些负载均分机制,我们来找到某一个提供者的位置,我们来调用它的服务来,如果调用失败,我们在我们的地址列表中,我们可以再找另外一个服务提供者,我们继续来调用,直到调用成功等等。当然我们double呢,还会有监控机制,我们这些调用次数啦,或者调用时间啊,这些信息我们可以比如定时每分钟呢,都会给我们监控中心来发送一次,我们呢就可以来做到一系列的。
05:39
监控好,那么我们下一节课呢,就来安装zookeeper作为注册中心,我们再来编写一个服务提供者,编写一个服务消费者,那使用double呢,将它们整合起来。
我来说两句