00:00
好,同学们,通过上一讲,我们解决了。代码膨胀的问题,那接下来我们继续要解决我们的代码跟业务逻辑弄到一块,代码耦合度高的问题,好。那我们现在呢?怎么来避免这种代码混乱和业务逻辑混在一块呢?来看看我们的思想。第一个我们现在呢,八零去掉8001,那么。每一个方法都要配一个,比较松散,有100个方法怎么办,但是抓主要矛盾,我们这次这个八零能跑,是不是因为我们这有一个接口。OK,这相当于我们八零能调用这个微服务的全部业务逻辑方法。听到,那么这样的话,如果我们与其在controller层为每一个方法制定一个。兜底的方法。
01:00
搞得难以解耦,不如抓主要矛盾,我现在是对于这个微服务,我们现在能调的是不是只有这两个,那么假设我们针对于这个接口做点文章,把这个接口里面的所有微服务都做了统一的处理和降级,那么这时候回答我是不是可以解决耦合这个问题?这一步听懂,好,我听不懂的,暂时的懵逼的同学,没关系,我们呢,理论实操小总结三班斧整下来就OK了,简单一句话就是牵牛牵牛鼻子,做事抓主要矛盾。你现在调用这些方法散落在各处,但是再大的饼大不过烙它的锅,你只要是用F调用,一定要有一个东西叫client这么一个服务接口,这个接口里面必然有一些方法的定义,那么我们针对于这个接口做一些文章,把这个接口里面的全部方法统一的来进行各自击破的for back统一的。
02:04
定义和调度,那么这样是不是达到了解耦的目的好?那么接下来我们来看一个案例,那么现在多说一嘴啊,我们碰到过的异常,第一种比方说分母为零,In等于十除以零,那个是不是运行时异常for back起效,第二个time out超时异常for back起效,那么第三种异常我们是一个更狠的掉着掉着突然对方宕机了,那么对方就比方说现在。饿了么挂了,美团挂了,下不了单了,爱奇艺崩溃了,那么这个时候回答我,你客户端去调的时候是不是也应该做降级啊,那么这我们做一把狠的。模拟一下,调着调着我们的微服务提供者。Provider死了,然后我们再要进行解耦,那么就是解耦加降级,统一更优雅的处理来,同学们。服务降级,客户端去调用服务端,碰上服务端宕机或者突然关闭了。
03:05
那么我们在哪个端八零完成,与我们的服务端没有任何关系,就是我们的这次的服务降级做在八零,这听懂了吧?那么从上做到下,我们讲过了,两边都可以做hes,没有听说过可以加载AV服务,不允许加载BV服务,不允许加在CV服务上的,没有技术上都可以,但是根据业务你把它设在哪一边?下面我们只需要为非客户端定义一个接口,添加一个服务降级的统一处理类即可以实现接偶,那么就是我说的针对于这个非接口添加统一的服务降级类就可以不妨提前剧透。那么相当于说这。大家看FA client这个注解是不是有个for back这么一个属性,那么说白了,待会我们就围绕它做文章,好,那么同学们跟着我来。下面以后你们参加工作要面对的异常,常见的也就是这三个,运行时异常,Runtime exception,超时二,Timeout,还有单子。好那么现在前两种我们都见过了,现在试试蛋机,那么再来看看我们的业务类pay的CTRL了。好那么同学们look,这个时候我们讲过混合在一块,是不是每个业务方法都要提供一个,OK吧,解耦,解耦还是解耦?那么下面开打。
04:17
修改我们的这个,那么根据我们的这个八零已经有拍。Hes service,那么当学们这块是不是有这个接口啦,那么重新新建一个类。听到让这个类也实现该接口,这个该接口就是指这个接口,那么统,那么就可以统一的外接口里面的方法进行异常处理,明白了吗?也就是说现在你client能调的就是这些方法,那么我现在这个接口是服务调用,那么我现在新建一个类也实现这个接口,是不是可以?这个类实现了这个接口就要对里面的所有方法进行方法重写,那么统一的来进行调度和for back降级处理,走人。
05:04
那么下面。我们呢,新建这么一个类,OK,让这个类实现这个接口,那么下面这个类。叫他没问题吧,那么这个时候来implements在这,那么来同学们导入两个,那么请看这个是FA client。主动干活的,你找这个微服务下面。能调的方法有两个,那么现在我又找了一个类,它实现了这个接口,那么回答我,那么这个接口里面的服务for方法是不是交给我来包邮啊就OK,那么这块。那么这样我们写一个。这个来自于这个类,那么呢,For。OK,那么一样,我们呢,来自于这个类,或者是这个类里面的for back,那么再加这个方法,那么这个是超时这个方法,那么如果说我们调OK这个类。
06:10
假设我们现在通过肺去调用这个微服名字下面的这个OK,这个方法能跟上正常,那么就正常,那么异常了就要找到它,由它统一的来跟我处理,那么这样好处是什么?你看我这个OK,我可没有写过任何for back的方法,听懂了吗?好,那么这个就是我们的一个改造来。完火以后,我们的亚膜也要粘点东西,那么注意这个我们是不是已经启动过,OK,那么来再看一眼。做实扎实了,这个要打开对districtsable to设置为对它的支持好,那么下面这个时候这个接口,那么我们前面注意我这儿又差点犯错了,那么。有些时候我啊,就是容易忙着写业务逻辑,又忘记这个。
07:04
OK,那么所以说把这个组件的这个注解,否则的容器扫描不到。那么接下来我们大家可以看这个是不是service接口,那么干嘛,最后一步看这有个four back,说穿了现在就是要把我们的这个类干嘛配到这个接口里面。明白了吗?OK。这一波同学们能不能跟上,那么大家请看,相当于说现在我们是去找这个微服务的名字啊,去调用下面已有的方法,假设出事了,谁来包包圆,Payment for service这个来过来payment for bank OK吗?那么这货是不是在这里面都写了我们的没问题吧,统一的解耦以后做全局的浮将级统一,由我来拿它就相当于做我们的水龙头,OK,好,那么同学们,我们接下来我们呢,启动我们的8001,再启动我们的八零。
08:05
好,那么要浪费点时间,我先暂停一下录屏,同学们,我们的这三个微服务成功启动,下面开始测试,第一个纽约卡其001单个了啊,没有用集群了,要不然骑的太多了,浪费时间。启动8001。启动正常测试访问,我们先打这个,我们访问哪个方法呢。同学们请看这个是不是我们的OK笑脸了吧?啊,都明白OK这个方法是没有任何故障的,就是一个返回,一个字符串,OK,所以说是这块没问题。那么下面的问题是,我突然把8001给。关了相当于模拟我们对方已经死了,那么这个时候不用紧啊,我再去找这个微服务,100%是不是调不通。现在整个8001都挂了,那么挂了就挂了,问题是你的这个八零消费者这一侧有没有提供保护和降级,那么如果说我们去访问,OK,相当于说挂了的话,不管哪个方法是不是都会报错,那么所以说我们就应该返回这个,那么来同学们刚才是笑脸的没问题吧,那么这个时候一刷。
09:17
大家请看payment for service for back,我也哪个方法OK,这个方法哭了,那么大家请看是不是成功进入到了我们的这个方法,而且大家请看我们的这个业务逻辑方法OK,这个是不是没有做任何额外的设置和添加,甚至根本就没有启动这个注解标签,你看它根本就没粘过明白,所以说通过这个东东我们就会明白,刚才我们故意的关闭了8001客户端,自己调用提示二,那么此时服务端销支付的微服务提供方。已经宕机了,但我们做了服务降级处理,让客户端在服务端不可用的时候,不可用的时候也会获得提示信息,而不会挂起耗死,我们自己明白,不会说尝重试啊,尝试一下怎么的,死了就是死了,直接告诉你,比方说这个话我可以再写白一点,对方服务器已经宕机了,请稍后再试,OK,那么所以说通过这样的一个方法用我们的。
10:16
非。K的。注解里面的for back方法,再用另外一个类实现我们同样的client这个接口,为里面的每一个方法写我们的服务降级逻辑,就达到了我们的解耦的目的,代码量又少,处理又优雅。那么通过前面的讲解,那么同学们,我们是不是完成了?代码膨胀完成了代码混乱,这两个问题通通解决,OK,好,那么同学们,我们就给大家介绍到这儿。
我来说两句