00:00
好,那么接下来我们给大家演示一下什么是服务熔断来完成我们的案例,那么看看最后读一遍。比如超时异常等,能够保证在一个依赖出问题的情况下,不会导致后面的机连故障。那么也就是说,我现在是不是故意要。干坏事出现一种异常,让这个程序调不通啊,那么我们来看看如果你调不通的话,Heres,它是如何挽救你的。那么接下来来根据我们再复习我们讲的。套路。来吧,同学们。现在我们都可以看了。昨天说过了,只要有一个新的组件,Cloud是不是会有两部,一个是。Ma版的GV图标没问题吧,第二个干嘛,是不是相应技术图片的新布点标签啊?
01:07
那么熟析这个套路以后再往上,那么呢,我们呢,来看看它是不是也可能会存在enable开头的叉叉叉和strict相关的一种助学标签啊。那么大家看。跟着杨哥学到骨头,不要只学到皮,我就现在还没教你,但是正确的思维方式你应该就是杨哥还没展开,你应该知道大概是不是应该有这个套路了,那么接下来我们呢,依旧往下看,如何构筑我们的案例。来,那么呢?首先。它是什么熔断?那。是对应雪崩效应的一种微负链路保护机制,你这个节点不好使了,我怎么办?那么呢,当上出的链路某个微伏不可用,或者响应时间太长,那么言下之意,这种情况是不是都是总归为出了一种异常?
02:04
那么这要注意学新的,也要去复习我们的老的。Spring,我们讲过一种思想,叫a op,面向切面编程的时候一定会干过一种东西,叫前置通知、后置通知、环绕通知,其中有一个技术细节,是不是要异常通知啊?那么这个时候我们来。跟Kris来进行对比,那么呢,学新技术在复习老技术,大家看那么呢,我们会进行服务的降级,什么意思啊?进而熔断该节点的微服调用,快速返回错误的响应信息。那么这请允许我再回到前面杀一个回马枪干嘛呢?熔断了以后向调用方返回一个这。我先把它考下来,待会儿给大家复习。我刚才说过是不是有个东西叫for back,好,那么现在不再往回翻了,拷出来给大家好看,进而熔断该节点的服务,进行服务的降级,快速返回错误的响应信息。那么我把这个这。
03:21
弄出来,待会儿。我们来证明这两句话,这个就是服务降级的关键。好,那么呢,当检测到该节点调用正常后,恢复调用链路,那么spring cloud框架里面熔断机器是通过strict实现,那么它会监控微服务间的调用状况。当失败调用到一定的阈值以后,比方说这个数字,那么熔断机制它的注解大家看。是不是说曹操曹操就到翻说了我们的这个新的助理标签这一步。没问题吧,好,接下来开工。
04:01
参考我们的8001。然后呢?新建。大家请看啥意思啊,是不是带熔断机制的微服务动者啊?注意,昨天我们讲了rib f,我一再强调,那是不是客户端的软负载均衡。但是这个时候大家请看这个吗?他现在是在什么段provider好,这个我们呢,不多说了,干什么呢?进工程这些事情同学们已经看我重复了这么十多遍,我该建什么,我闭嘴了。那么这个时候module create,那么呢,大家请看。那么提成数类,那么可以这样,那么既然说参考8001,那二话不说,那么是不是要把泡沫配置文件工程包这些统统拷过来呀?
05:01
那么好,接下来我们来看泡沫。来,还是学同样的思路和套路,啥意思啊?断路器该不该有跟ma相关的新的配置坐标啊?那么这个时候请大家看我的老规矩,现在我们要讲服务熔断res,那么我们的poem的修改内容是什么呢?那必然而然是不是会添加跟historys相关的东东啊?就这一个没问题吧,那么再来全部内容,我们呢,拿下,那么就添加了这个,其他的都一样好,那么呢,没问工程,先解决我们的泡沫依赖配置,那么这个时候干嘛呢?刚刚才所说本次重要的是不是就学districts这个组件技术啊?好的,你们解决完泡沫。那么羊毛那么呢,来吧。既然说是8001,那干脆我呢直接呢先把它全部拷贝过来吧,然后我们再慢慢的修改,那么这个时候整个com包我们呢将其拿下,那么呢,回到我们的8001这个东西粘贴那么一样,要么和这个application这些配置文件那么自然而然,因为8001需是是需要连数据库的嘛么这块呢不再多说了,已经重复过很多遍了,直接参考8001拿下,那么呢。
06:32
里面的内容。我们呢,需要按照我的这个呢来重新修改,那么什么意思呢?我这个压模配置文件,那么大家请看。就改了这么一句话。这一步能理解。就相当于说哈,现在我打开的这个是不是我们原来的这个8001的,那8001其他什么连数据库啊,跟买杯子的通通都不变,那么你变了什么呢。之前我是不是叫U卡注册进去以后。
07:04
这个ID是不是叫这么一个,现在我就把它加了一个res后缀,表明我们这个depart是带stricts熔断器的一个。为服务这么说能理解,那么所以说没有做太多的变化,能不能。拿过来就自定义了是吗?District。相关的不名称地址,其他的跟我们的8001填的一样,照旧OK好,那么这个时候呢,干嘛呢,我们呢,回到我们的department。那么这个时候看抽了,我要干什么呢?刚才是不是先提过这么一个东东吗?那么他的意思我要处理是什么东东呢?言下之意,回到我们这的controltrl了,我先不展开哈,我们这儿是不是有controltler调用我们的department service啊?好,这个里面有这么多方法,再次强调,重要的不是这些增上改查了。
08:15
现在我们要模拟,请看这句话。那么呢?我们呢,是不是说当我们出异常的时候,返回一个符合预期的可处理的备选。啥意思呢?假设我现在调get方法。大家都知道一号记录,二号记录,三号记录都有吧,假设我现在要调一个按照ID查这个ID我传一个9999,同学们知道这条记录是不是在数据库里面没有啊,那么数据库里面没有它是不是就是干嘛查出来的值就不再是department,而是一个难。那么假设如果我查的时候返回的是个,那我就故意人为的抛出一个什么东西。
09:06
Long time。Exception,那么这个时候回答我,大家认为相当于我微服就告诉服务调用者我出错了。对吧,那么这个时候出错了以后,你这个方法,现在如果我去查一号记录,能够正常返回一号部门,那么假设我查9999没有这个。不买,随便。那么这个时候随便一个主键ID,没有这个数字怎么办呢?报控制针异常,那么报异常以后你应该返回给别人一个什么呢?那么这个是不是我们就需要用district command来报异常后如何处理啊?说白了,从思想上而言,是不是有点类似于我们里面的异常通知?那么好,这个时候请大家看。
10:02
干什么呢?我们先看看我们的代码。这主要是讲熔断哈,Stricts,其他的那些get at的方法不重要,请看我的思路,Controller是不是掉斯维斯坦。那么这个时候请看正常的调用,我们说过了。是不是是depart get,比方说二号记录,我们现在数据库里面总共有五条记录,查二号记录能查出来吧,那么能查出来不会报错,那么这个时候什么概念呢?假设这个ID。12正常返回depart,那么这个时候是不是这个,那假设我们现在查9999或者超过五的查100根本就没有这条记录,那么那。我故意人为的是不是new转time exception该ID,比方说127没有对应的信息,没错吧?但是这个时候你的程序是不是报异常了,你的微服务提供者搞不定这个事儿,那么这个时候在方法上面我们将会写一个新的history command,注意这个单词是不是叫for back。
11:10
那么这个时候请看这句话。像调用方是不是就是消费者返回一个符合预期的可处理的备选响应for back,那么言下之意就说如果我能够正常调用,我就返回正常数据,如果我这个get调用出错,有异常了,大哥咋处理?那么这个是不是就是处理故障,处理异常,处理微服务不好使的兜底的这个方法呀?他的意思就是说fall back的意思就是说,那假设你调我这个get出事了,就请你调这个方法,那么这个方法是干什么呢?大家请看是不是就是我们下面写的这个方法,也就是说你能成功调用。返回数据不能成功调用,也得给我返回一个东西,那么这个就是我们下面要写的内容,这么说能跟上好,那么这个时候请大家看。
12:08
我们的代码呢?重新修改干嘛呢?这些不再是重点,也记。主要来研究的是熔断,所以说我们的代码直接写好,那么呢。拿过来。那么大家可以搂一眼。根据刚才我所讲的内容,那么呢。大家请看。嗯。来给大家一点时间,好好的看看这个意思啊。我们现在要是要get,我说过了。
13:01
正常情况下把二号记录能查到吧,不为空,不为空是不是返回真实的记录搞定,可问题你出事,如果你是烂呢,我要抛一船,那抛一船怎么办呢?Get方法抛一船了就有为get兜底,有为get方法擦屁股的这个fall back方法,那么这个方法是不是处理history get方法出事啊?那么大家请看,因为你这个程序要返回depar,那么干脆我们也就返回这么一个东西,比方说你现在要查127,那么我们就设置干嘛该127没有对应的信息是那。那么呢,打出这么一个说明,是不是调用到我们的服务熔断机制啊,这一步能理解,那么相当于说也还是返回一个depart,只不过这个depart里里面的信息是被我们写成了包含异常的信息啊,那么前端的工程师你看到了某个标志位,这个时候呢,可以进行排错页面的处理,总之一句话,一旦调用服务方法失败,抛出错误信息以后,就会自动调用这个标注好的for back方法调用类中的是吧,指定方法get的方法不好使,由我来兜底你干嘛呢?我就会调这个方法,OK,整个逻辑能跟上好,那么接下来同学们。
14:20
我们呢往下看,那么这个时候修改我们的主启动类说过了。是不是一定会有一个什么enable相应技术的新注解标签啊,所以说干嘛需要在脑袋上开启这个通道,你定义了熔断器,我得用啊。我要告诉主,主启动类你能用,所以说呢,这一块我们呢,加上我们新的内容是干嘛,是不是对熔断器进行支持,你看是不是enable enable enable都是开启叉叉叉组件啊好,那么这个时候我们的完活请大家看看我们的测试是否能够成功,那第一步按照有瑞卡提取先启动,然后再启动我们的主启动类哟,这块我是不是还没修改啊,那么当然不改也行哈,不过为了规范我们呢还是给他改下来,那么这个时候呢,大家看这个呢,是带着熔断机制的8001没问题吧,那么它是微服务的提供者,那么呢,我带了熔断。
15:32
之后我们再启动。我们的服务消费者,那他不管他是不是只找8001这个服务啊,你现在各位亲,请看一个问题,我现在的端口是不是还叫800啊,好,那么也就是八零现在去找这个,然后我们来看看。正常调用返会异常调用,那么我们的熔断是否起效?OK,那么按照我们的诉求,那么现在三个有水卡先启动。
16:08
然后呢,请大家看,注意现在我们要起的是我们的这个东东,那么这个东东大家请看,如果一切启动成功的话,请看。我说过,我们是不是带熔断的服务啊。但是端口是不是还是8001,就消费者他找的就是8001,只要你这个8001端口上有服务,我不管后面的服务是谁,我只认端口,这么说能理解好,那么呢。三个能不能打开我们的这个,那么再把我们的干嘛。消费者启动,那么呢,我们呢,等他慢慢启动,我先暂停一下录屏。好,因为这个微服呢起的越来越多,注册的时间呢会长一些,那么呢,我们呢来看。
17:03
首先。大家看仿我们的7001。可以看到集群123,注意微服务是不是注册成功啊,请看后面屁股这个名字啊,是不是带了个DEPART8001HISS,那么他哪来的,我说过了这个是不是这个名字啊,就是我们的这个名字,这是带着个PK扇,然后呢。有瑞卡instance instance ID这个名字,那么是不是就是我们的这个名字啊,那么呢,以前的普通版的不带熔断的就叫。这个名字现在我们这个名字是叫这个,说明我们调用的是带熔断的heres的800啊,这个保证我们的微服务没有张冠李戴,OK好,那么接下来我们要看那么消费者来调用你。
18:04
现在假设我们的consumer get depart get1,大家都知道我们现在是不是有一号记录啊?或者就这样吧,我get list吧,全查出来哟。啊。那么呢?那个时候的话。好,我看一眼啊,那么这个时候depart get1。一号部门是能查出来我怎么测?呃,我看哈,我看一眼我们直接的代码哈,难道我这块。啊对对对,我这是不是把之前的删了,是不是只有一个get方法呀,那么这个时候呢,OK,因为我当时呢是干嘛只要演示这个容错就把其他的方法删了,那么这个时候呢,习惯性的呢,好,那么这个时候是没问题的,大家看啊一号记录O吧,那么好,我现在呢,再换成二号记录O吧,但是现在呢,我们说过了,请看我们的代码,你正常查出来的我都可以给你返回,但是呢,如果我们现在。
19:23
干嘛呢?故意查一个不存在的ID,比方说235,大家知道我现在数据库里面只有五六条记录,235根本没那么多,请看,那么现在我去查了以后,是不是就应该报这个控制帧异常GET1报异查,看看他会不会找到这个东东,那么找到的话,那是不是应该返回这么一个depart,那么言下之意是不是应该出这句话,如果出现这个,那么说明说我们的熔断调用成功啊,那么这个时候大家请看。那么这个就是回到我们这句话,是不是像调用方返回了现在我这consumer是不是调用方法返回了一个符合预期的可处理的备选响应for back,那么这个时候大家请看我们这儿是不是得到了我们的熔断的报错异常信息处理,那么呢,这我们呢,就是对熔断机制的一个演示和讲解,同学们务必要把这个东西进行掌握。
我来说两句