00:00
好,前面呢我们介绍了一下分布式的一些基础理论,接下来呢,我们就一起来学习double double呢们可以去网上来搜索,来到它的官网,我们可以看到阿帕奇double,它呢是我们一款高性能的Java rpc框架,诶,它是RPC框架,也就是说它帮我们解决什么问题呢?解决我们以前说在分布式服务架构里边,诶我们A服务器上的一个程序,想要调用B服务器上的一段代码,我们要。进行远程过程调用的问题,也就是说不同服务之间我们如何通信,如何传递数据,如何调用,这些呢都不用我们来管了,就由我们的double这个RPC框架来完成这么复杂的工作。double的前身呢,其实是我们阿里巴巴开源的一个企业内部使用的RPC框架,它在一一年的时候呢,将它托管到了get上,然后呢持续的进行更新,但在14年十月份左右的时候,阿里呢发布了double的2.4.11版本,至此以后呢,Double又停更了,但是呢,其他一些企业也在使用double,比如当当当网基于double的这个扩展double X,它呢还在维护,包括呢网易考拉的这个double k,哎,它呢也在维护,而阿里把这个double呢,它停止了更新,在一七年的时候,Cloud。
01:35
在抢占分布式市场大红大紫,那么呢,阿里呢,就连续又更新了double的几个版本,在一八年,在一八年我们一月的时候呢,我们这个阿里将double X跟double呢合并更新到了double的2.6版本,一直到一八年的2月15号,也就是我们的除夕这一天,阿里呢,最终将我们这个double宝开源贡献给了我们这个阿帕奇组织,所以说现在呢,我们看到的就是这个阿帕奇大宝,得益于我们阿里巴巴的大厂品质,以及我们这个阿帕奇的加持,我们这个打宝呢,有非常多优良的特性,比如第一个它呢面向接口代理的高性能RPC调用,这是什么意思呢?就是我们在用double的时候,我们A服务器上呢,要调B上面的代码,我们只需要呢,将B那个功能方法的接口我们拿来,我们调一下接口所在的方法。
02:35
Double呢,就会自动的去找B服务器上的这段代码帮我们来调用,为我们呢屏蔽了整个远程的调用细节,就类似于我们在用马贝一样,我们操作数据库的时候呢,我们只需要写一个马贝的do接口,我们写一个map接口,然后呢,我们调用接口的方法就行了,而我们不用关心内部的实现逻辑,这样这种编程方式是非常舒服的。第二个它还能做一个智能的负载均衡,那什么是负载均衡呢?我们来看一个这个场景,就是呢,后来我们这个业务会非常多,比如用户业务,我们访问量特别大,那一台服务器不够,我们呢,给他多放几台服务器,有这么十几台服务器可能同时都在跑这个用户业务,那我们这个用户web呢,我们想要调用用用户的这些功能,那这五六台服务器呢,随便调哪个都行,我们调哪个呢。
03:35
假设一号服务器啊,当前有100个请求在处理,二号呢有两个,三号呢有1000个,四号呢有十个,那我们呢,就应该找一个非常空闲的服务器,我们快速的处理这一次,相应所以呢,这个机制我们将它称为负载均衡,让每一个服务器呢都有很均衡的一个负载量,不要让某一个服务器做太多的活,把它压垮,也不能不要让某一个服务器太闲,一直资源浪费。
04:06
大棒呢,还有一些优良品质,比如服务自动注册与发现,这是做什么呢?我们来想象一个场景,后来啊,我们说我们的这个业务非常多,每一块呢访问量都特别大,比如用户的业务在一号、二号、三号、四号服务器都有,支付类业务呢,在九号、11号、13号服务器都有等等,那比如我们这个订单的web,我们想要调用支付业务,我们这个RPC框架怎么知道我们这个支付都在哪些服务器上呢?包括万一我们这个九号、11号、13号这个服务器有一个有问题了,我们框架又如何自动的知道这些事儿呢?哎,我们可以引入一种机制叫注册中心,为了能动态感知到每一个,我们可以将所有的服务我们都注册到注册中心里边,注册包括呢,我们前端的这些程序,我们也可以都注册到注册中心里边,那这样的话。
05:06
呢,我们注册中心相当于维护了一个清单,什么清单呢?比如我们这个用户业务啊,在哪些服务器有,在一号,二号,三号,四号服务器都有,包括呢,比如二号服务器突然呢有问题了,那我们这个注册中心呢,二号服务器就可以删掉,那么订单支付业务在哪一块有呢?比如在11号,13号九号服务器有,哎,我们这儿有一个所有服务都在哪个服务器上的清单,那么如果说我们这个订单我想要调用支付业务怎么办呢?我们可以我们这个打保框架,那么的RPC框架,我们应该先问一下注册中心支付业务在哪些服务器都有啊,注册中心呢,在他的清单里边一看,哎,告诉咱们这个啊,外网说在四号,九号,11号服务器呢,可能都有,那接下来呢,我们这个RPC框架就可以随机的来选择一个服务器,或者呢,选择我们请求量。
06:06
最小的,这就是我们说按照负载均衡机制来,我们看到底合适选哪个服务器呢,这样我们就可以来找到一个服务器,与它建起通信来传递数据,进行远程调用,这就是我们说的注册中心,这个注册中心其实就类似于我们现实生活中的这个婚介网一样,那他上边呢,注册了非常多的人,你想要找女朋友的时候呢,可以去在这搜索一下,哎,找到我们合适的某一个人,我们要到他的联系方式,哎,找注册中心要到他的联系方式,然后呢,打电话给人家,哎,约他吃饭看电影等等,那我们double呢,就能支持非常多种的注册中心,通过注册中心呢,Double能实时的感知到我们服务实力,是不是上线能用了,还是下线用不了了,那么double呢,还有高度可扩展的能力,他们基于这个叫微内核和插件。
07:06
的设计原则,Double里边几乎所有的东西我们都是可以作为扩展的,而且呢,Double还可以在运行期间进行流量调度,通过他们呢来实现我们这个灰度发布,什么是灰度发布呢?比如我们有一个服务,我们这个用户服务,现在呢,在100台服务器上同时再跑,我们用户服务呢做了升级,我们害怕这个升级不稳定,我们可以先选定20台服务器,那他们先用新版本的用户服务,剩下的80台呢,我们用旧版本的用户服务,等这20台呢,用着用着都感觉没问题了,我们再来选20台,我们慢慢的这样过渡过渡过渡,一直到我们这100台全用到新的这个用户服务,这样呢,我们可以通过配置不同的路由规则,请求一进来以后呢,我们让一部分请求先来用新升级的服务,剩剩下的呢,先去来用这个旧的服务。通过这种方式,我。
08:06
慢慢的从旧服务转换成新服务的过程,那我们就叫灰度发布,Double呢还为我们提供了一套可视化的服务治理与运维工具,也就是说呢,我们可以通过一个可视化的这个web界面,我们可以随时的来动态查询我们服务的一些信息,它的健康状况啊,以及它的调用统计记录等等等等,包括我们通过可视化界面能调整一些参数,那么double的这些优良特性呢,我们在后来的开发中,我们就慢慢都体会到了。
我来说两句