00:07
这个关于费用我们就说这么多了哈。就是这个你要用这个东西,我们只是去写代码的话。啊,只是如果我们只是写代码的话,其实其实它这个里边要写的代码没多少。啊,就这里边只不过是有一些个细节呢,需要我们去注意啊,有些细节需要我们去注意。呃,下边这个我们对这个我们再说下一个之前怎么说哈。嗯,这几个组件里边呢,这几个呢,算我们可以叫这是个三大件。就说最起码哈,就说我们要想用spring cloud这个环境呢,去开发出来这个我们项目里边的具体的功能。咱们也不考虑什么性能,也不考虑什么,呃,这个这个并发呀,什么都那些东西都不考虑,就只是考虑怎么去实现这个功能的话。啊,只是考虑这个部分,那那这个时候就是至少要有这三个东西。
01:05
啊,至少有这三个东西,我们这个F肯定是这个用用SIM cloud肯定是就是要用这个fin,用它的话,我们才能够享受到cloud这个方便啊。说最起码的是要用到这几个东西啊,你用了F的话,F已经就带ribon了啊,Ribbon不需要你额外自己再去去考虑这事啊。呃,我们知道有rib本这个东西存在就可以了,我们也不需要对rib本,实际上也不需要对他做什么操作,哎,然后呢,这边就是说注册中心肯定得有啊,但就算是你用别的注册中心也得有一个注册中心啊,注册中心并不是说只能用有瑞卡,其实它也有别的这个选择啊。好,下边呢,这个我们要看一下,这个叫tricks哈。哎。嗯,说hat tricks呢,咱们得先提出一个问题。这个分布式系统面临的问题哈,这个图画的其实并不是特别的有这种感觉哈,他想表达个什么意思呢?这过来这个是一个用户的请求。
02:07
User request。因为这个英文字它不能横着写是吧,它只能这么竖,它这个这这个竖过来就就变成这样了。然后呢,呃,他要一个请求,要去调好多个微服。他这个图呢,其实说明的还不是。特别有这个说明的效果哈,我们在这儿,咱们。呃,咱们简单的给大家去提一下啊,这个事儿其实很很好理解。我们分布式系统开发的时候,其实他为服务啊,这种模块会特别多。啊,就是这个会有很多很多这样的模块。呃,因为我们不断的做封装这个抽取。不断的做封装抽取,哎,然后呢,呃,不断的会去抽取出来这个独立的这个功能啊,每一个功能作为一个维护。咱们假设呢,咱们就关注这个微服。
03:06
假设咱们就关注他。然后呢,现在这个微服务吧,有很多微服务都用它。啊,这几个。用它。然后前面这几个也用它。然后比如说这个这个可能会用到这个啊,就是这个什么意思呢?就是你看啊就是。这个它用的是这个,这个呢,又又又用的是它,然后呢,这里边它们还有这样的这个调的关系。哎,然后可能会有这样的哈。呃。呃,大体上有这么一个示意图。那么这里边儿会有一个什么问题呢?如果我们现在关注的这个为服务他这儿,如果咱们不说别的,咱就假如说他就是超时了。
04:01
网络可能不通了,他这边呢,假设他想连数据库,他连不上,他在这等着。他在这儿等着,那么这个调用呢,都是属于同步的调用啊,那你别的谁调用它,他等着了,别人调用它都得跟着一起在这去等着。你看就导致他得等着。哎,就是这个,呃,你看这个叫他,他在在这得等着,这个也叫他,这个也叫他,这个叫他这几个都等着,这几个一等呢,他这等了,他这也得等,他这等了以后呢,他就得等着。他这样一等呢,他就得等着。哎,就是等于说呢,这个时候这一个问题吧,它就会逐渐的蔓延到我们的整个的系统。本来是这一个服务出问题。因为他们彼此之间存在着这个错综复杂的调用的关系,所以说他这一个地方出问题以后,它这个问题就会扩散蔓延到整个项,整个系统啊。
05:06
它这个蔓延的这样一个趋势哈,就像一个扇形一样,所以说呢,有人说呢,这个叫做善出。啊,那这个这个其实我觉得没有必要去非得去起这么多的名词哈,这个其实对于我们学习都是一种。一定程度上干扰。就是像扇形一样,这一个地方的问题就蔓延到了整个的系统。就因为这一个一个地方的局部的问题导致就很有可能导致整个系统就瘫痪了。啊,整个系统这个班就都不能用了。啊,你想想象一下一个庞大的一个电商的一个系统,他在这儿呢,假设他这个,呃。去假设哈,它是一个校验用户身份的啊,就就是看你是不是一个有效的一个用户的身份的这样一个模块,很多模块都需要去调查,直接的或者间接的需要去调它啊,然后他这边卡住了,整个系统就都不能用了。
06:03
或者说呢,你这个有一个比如说查数据库的啊,他不是说具体的功能,它就是查数据库的啊,那你这时候这个很多这个功能都需要去查数据库,直接间接的他查数据库这儿一旦要是不能用了,整个系统这边就都不能用了。啊,这个是我们觉得是非常严重的。我们得避免这样的这个问题啊,当然这个咱们说这个讲CP的时候呢,我们说CP这三个里边。不能同时都满足,呃,无论如何要保证的一个是谁啊?这个还记得不?Capp里边C是一致性,A是可用性,P叫分区容错性。Partition tole分区容错性,这个是必须保保证的。啊,你C和A这两个只能保证一个啊,强一致性和这个可用性,你这个只能保证一个啊,你一致的就不能够高可用了,你高可用的话,你就不能够这个强一致了啊,所以说一定得保证这个P,保证P呢,就是说P分区容错性的意思,就是说你整个系统里边呢,局部出问题,得保证整个系统还是可用的。
07:11
哎,我们其实管这个现象啊,说局部的一个地方发生问题,这个问题蔓延到整个系统哈,这个呢叫做服务的雪崩。啊,看一下这个壮观的景象啊。哎,我很担心这个摄影师的这个安全啊。这个照片是怎么送出来的?其实你想这个雪崩哈,就是这个,你看这个雪山哈。这是雪山,雪山上边这个有多年以来积累的这个雪层是吧?其实这个雪山呢,人家说生活在雪山那边,你从那过人说不要大声说话,以免惹怒了这个山神是吧?山神生气了以后,他就会造造成雪崩。其实是你的声音呢,你的发生的这个震动呢,它会导致这个血层的可能就会开裂。
08:00
是吧,这个有局部的,这个上面开裂以后,这个它就开始就开始向下有重力就会对下面产生压迫,是吧,它这边就会。带着下边就往下就开始这个压力越来越大,往下滑压力越来越大,越往下压力越大啊,这个就会雪崩,就会越来越气势就越来越凶,对吧?啊。有句话叫做雪崩,雪崩发生的时候,每一片雪花都认为自己没有责任。就是这么一个效果,所以说它也是一个局部的一个小的问题所导致的一个大的灾难。哎,那么我们怎么去避免这样的问题呢?就是说这个小的问题发生的时候。哎,我们说就是想办法让他不要去蔓延。呃,之所以会蔓延呢,一方面是因为它出问题,另外一方面呢,是因为别人去调用它的时候。他出了问题,别人就在这儿傻等着。啊,所以说我们其实很难保证说微服务不会出问题,这个这个这个不太容易做到啊,他可能这个出问题确实是难难以避免,那么我们要做的事就是他出问题以后呢,咱们别在这儿傻等着。
09:14
啊,你别在这儿傻等着啊,叫什么?嗯,别在一棵歪脖树上吊死啊。还有一句话叫什么不要为了一棵树木而放弃一片森林,对吧,啊啊,你不因为一不要因为一个人拒绝了你是吧,你就放弃了其他的人啊。你好,你好,你好。碰了一下滚轮。怎么让他不要在这傻等着,这就是我们high tricks呢,可以使用这个熔断。哎,这个降级这样的这个机制呢,就可以来做这样的事儿,这个熔断咋熔断,降级咋降级呢。呃,熔断,我们说生活中我们也会有这个熔断。啊,就是说这个电线哈,如果我们画的这个宽一点的话。
10:02
为了为了避免这个电流太大,把我们的这个电器呢给烧毁是吧,诶就是这个,你看学物理的时候这个。画一个叉。这个表示是一个灯对吧?哎,然后那你这时候的话,为了避免电流太大,然后把这个电器给烧毁啊,那那这时候呢,我们说。同样的电阻,我们这个电线里边有一段用不同的材料,它电阻是一样的啊,但是这个呃,它的热的熔点它会比较低。一旦电流超过一定范围,这个电路里边的这个温度啊,因为电会产生热嘛,电热这个温度上升到一定程度以后,哎。别的还没有到熔点这一小段呢,它先到熔点了,它就化了,它就熔断了,熔断以后呢,这个电路就断开了,断开就没有电流了,没有电流的话,这温度一下就下来了。啊,这不就是这个跳闸了嘛,对吧。
11:00
保险丝嘛,对吧,哎,就这意思哎。保险丝就这样,我们这边呢,也是啊,跟这个意思差不多,哎,我们怎么让它这个熔断呢。就我们这边在consumer。哎,他去调我们这个provider的时候。Consumer去叫provider,那么这双方呢?我们都另外准备一个备用方案。啊,熔断呢,是是这个provider的备用方案,Provider心想呢说哎呀,我其实我也不太敢保证说我一定能100%提供这个。呃,稳定的服务,万一呢,我要是提供不了这个服务的话,哎,我让别人呢,用我这样一个备用的方案,别让人家等着。啊,Provider是这么这么这么设计的,Consumer呢,他去调provider的时候呢,他心思心里也嘀咕,Provider也不一定就特别的那么的保险,我调查的时候呢,他万一要是不给力的话,我呢,诶我自己呢,准备一个备用的方案,我这边等provider没有回信的话,我自己就走,我自己这个备用的方案我就不在这儿等着了。
12:09
啊,所以这边这个consumer这边这个东西吧,叫降级,然后provider这边呢,这个叫做熔断。啊,这边他们是这分别是consumer和provider呢,这边这两边的一个解决方案。哎,就是我们先就不念这个字了哈,咱们现在大概了解一下以后呢,咱们后续咱们,呃,实际跑跑一下用这个程序呢,咱们来体验一下。
我来说两句