02:34
这个接口类型。啊,传这个借口类型。就是这个employee remote service。穿这个行。那么在这儿呢,会有抽象方法需要去实现。抽象方法呢,你看到哈,就一个create方法。这里边儿传一个抛出的这个异常的信息。这时候返回了一个这个泛型这直径的这个类型。
03:01
什么意思呢?其实就是provider这边出问题以后。我们通过这个fall back factory。创建一个跟接口这个类型兼容的一个对象。啊,这个对象呢,其实我们自己去准备的,你看我们可以去用一个匿名的内部类。哎,匿名内部类其实就返回的是这个匿名内部类的这个对象,在这个匿名内部类里边,我们去把这个挨个哈,去把这里边儿的这个。呃,方法都可以去给他去实现一下。哎,就是比如说呢,咱们这儿最好还是也是返回result n对吧?哎,最好是跟我们provider这个方法是对应的哈。因为得看到他能正常访问,得看到他能那个呃。CTRLC。在这哈,我们先。先先先先不写这个啊。
04:05
在这个接口的里边先加这么一个方法。哎,加上这个以后咱们过来这。再来这个new,一个employee。Remote service。Get employee remote。我们现在呢,咱们就拿这个返回result n这个啊,就拿这个来说。这边你要是走,我for back肯定是失败的,哎,肯定是失败的。然后这个消息呢,我可以从这个靠里边呢,传一个消息。哎,这样的话呢,就是一旦要provider不能用了,我们要走我们的这个,走我们这个consumer,它自己这边这个解决方案啊,它就会创建我们这个对象。啊,把这个对象返回调的是我们这里边儿,我们自己建的这个对象的一个。
05:05
呃,方法就叫的是这个方法啊,就就走的是就走走这儿。所以说在这呢,我们去注释一下啊。这个类是干嘛用的呢。哎,这个是实现我们consumer。这一端啊,这个服务降级这个功能。实现它这个服务降级的功能。啊,这个泛型啊,就是说这个实现这个接口啊。实现fallback factory。诶,这个接口是。嗯,要传入。我们这个肺。接口的这个类型。啊,就是那个这个这个费注解标记的那个接口,我们写清楚吧。S这个主。
06:08
哎,这个接口的类型。然后呢?在这个create。这个方法中返回一个我们。这个注解。标记的接口类型的对象。呃,当我们的这个provider。呃,这个调用失败后。啊,这个会执行会执行我们。嗯,这个对象的方法啊,执行这个对象的这个对应的方法。因为你在这儿这个拗的就是这个对象吧,所以说你这个跟这个接口的话,肯定都是无缝无缝对接的啊,都肯定是这个返回的类型,什么都肯定是没问题的。这个他的要求哈,就是有这么三点。
07:00
123。哎,这个这个类准备好以后呢。下一步是在这个接口啊,Client注解这得去写一下。这个叫做fall back factory。指定一下看看它的地方呢。他要一个class啊,来一个my bag。Factory the class。嗯。哎,这是它的属性哈。哎,这个注解中的我们fall back factory这个属性。这个是指定这个provider不可用时。哎,提供呃备用方案的。啊,那个。呃,工厂对象。
08:02
工工工厂类型吧,哎,就找他就行了。得配上它啊。然后呢,再看看别的地方呢。这个common工程这个接口。啊,这边加上这个。呃,然后比较奇怪的一个是呢,这个。需要启用一下这个功能呢,在我们consumer这边呢,Consumer这需要启用一下,但这个启用的不是用注解去启用的啊,它是用这个配置文件里边配的方式方式去启用的。Enable tricks enabled等于true。找到我们的consumer。这是在consumer里边做的啊。呃呃,这个叫做叫啥来着,Spring啊,不是哈。Are highs?Enabled。哎,等处。
09:01
看看这个属于谁呢?点去。哎,然后呢,下边这个咱们呃两种方式来测试,一个是正常访问看行不行,一个是把provider停掉以后再访问,看看行不行啊。咱们把这个。把他们去抛起来,这个就是把肺抛起来。哎,先通过费正常的去访问下坡来。好,这回这样的话费是这个我们。有点问题啊。我们这边还没有调这个接口啊,这个接口准备好了,还没有掉。
10:02
咱们得另外写一个方法。对,这个一会儿还得重启一下。Request match。Consumer。啊,不对,不是啊。写错字。进错了房间了。啊,这不是应该进这个房间,结果进了这个房间了吧。从男厕所出来以后,发现对面是男厕所。上硅谷最早在北京的那个时候呢,有一段时间那个就是还没有前端学科,不是最早还没有安卓学科的时候。有安卓学科以后,那个就女生就多一些了,最早就只有Java学科的时候就女生特别少。所以说呢,它那个那个那层楼里边的那个厕所吧,设置了两个男厕所,两个男厕所是挨着的。
11:01
然后。就是。你你从你看这个。你你看到这个是男厕所是吧,他理所当然的认为另外应该是一个女厕所是吧,然后他他正准备进去,然后幸亏被别人给拽住了。嗯。其实女厕所在楼下。对。嗯,这个是get眼皮。这样换一个吧,这个就就就来一个case for吧。这个写个public。呃,我们这边把result a的这个返回就得了啊,你给我返回啥,我就返回啥。Test for back。
12:01
哎,然后呢,掉这个里边哈。不是wither,你看这个叫啥哈。啊,对,这个返回给到NT。那就是就是他。Signal呢,给他我们也是这边在这传一个吧。不过现在不是看他哈。Request para。这个咋写来着唠。然后咱们访问它啊,调远程的这个,然后呢,如果是能够fall back的话。For back这指定的这个这个类,这个类里边呢,我们就另另外两个没写啊,就就写了一下它,哎。
13:04
我们把这个重启一下。为了保险的话,整个都重启一下。这个地方吧,这个学习的时候呢,对大家的这个困难在哪哈,这个代码不在一起。这个代码是分散的,这写一点,那写一点。就像你刚买了一只小狗,它你还没教会它怎么上厕所,他这拉一点便便,那拉一点便便啊,在你的沙发上拉一点,在你的桌子上拉一点,在你的床上拉一点是吧?到处都有啊。啊,这个是对大家来说啊,你去。好几个地方都有,你得你自己得去琢磨这个事儿啊,你得去,你得去这个。哎,你得从这个线路上啊,你得去搞想清楚是是谁谁调谁,谁调谁,谁跟哪是有关系的啊。呃,然后咱们去provide这边呢,看他有没有re一下。
14:02
那刚开始泡了一场啊。鱼肠不要紧,泡泡更健康。稍微等一下啊。这边注册好了以后,咱们去访问一下。Consumer访问一下这个哈。复印小本。Signal。怎么还是这样?再来一次。这个。加错了。加字垫了哈。哎,我终究还是走错房间了是吧?我应该写这里边哈,但是我没写的话,这个掉不了吗。
15:05
对呀,按说是没关系吧,但是这个肯定是应该写在这边的哈。我再重启一下。你看他转了转了一圈以后,没没有没没起来是吧。没有支棱起来,就是说明他这边就出问题了。No no for back factory instance。
16:00
他没有找到。呃,那就这个上面我们缺一个很重要的一个东西,我想起来了啊。这个这个上面吧,得加一个component。不加这个吧,它加不到我们这个LC容器里边。也就是说呢,呃,我们。这个地方啊。就是这个这个这个这个这个。这样你指定这个类型还不够,就是你这个操作呢,它并不足以说把它加到FC容器里边。啊,加到LC容器里边,还得我们再去呢,去给它加一个这个注解啊。Component。啊,加上它才行啊。嗯。这个咱们一起都写在这个这个注释里边吧。说这个类啊,必须使用component。嗯。注解将。呃。当前类的对象加入LC容器。
17:02
当然啊,你想加入LC容器,那么你这必须得符合自动符合扫描包的那个规则啊,要当然当前类所在的包要符合。包扫描的规则。他得能被扫描到啊,它得能够被扫描到,或者我们就简单说啊,当前类。呃,必须能够被扫描到。我不管你是用什么方法,反正你能扫描到就行。再再重启一下啊,这个这个是这个确实是啊,这个忘了加这个了。
18:03
呃,哎,这回是,哎,这回能起来了哈,这回咱们刷新一下。哎,这回是可以正常可以去掉。呃。说比如说呢,哎,我们这边。如果我们访问的是它这个,当然这个其实跟降级是没有关系的啊。啊,这是这个,这是已经它就熔断了。呃,然后呢,如果我们想让他看到降级的效果的话呢,咱们把provider给停掉。Provider已经无论如何他已经提供不了服务了。然后呢,这边你即便找一个正确的值。这不转了一下。有的哈,我这边没写message吗?哦,那就是他这边没有没有没有没有没有给提供是吧,我们。
19:01
自己写一个哈。自己写一个。啊,就是反正就是说呢,我们这个。呃,降级机制生效。他没有给异常信息就没有吧,啊,反正我们自己去标记一下。把consumer重启一下。哎呀,他这个每次起得起多长时间。没显示一个总的。啊,13秒啊,这个是挺长时间哈。
20:02
怎么刚才就不显示啊。这个好奇怪啊。哦,不对。这是load balancer啊,这是load balance的这个问题。不过吧,也也也这个,反正这个这个确实现在这个问题就是load,因为provider就压根就没启动。Provider压根就没启动,没启动的话呢,有瑞卡这边呢,就压根就没有注册信息,刚才呢,刚才其实是有瑞卡哈,它会有这么一个机制,你这个provider呢。你这个。呃,它检测到你现在宕机以后呢,或者说你已经停了哈,它不会马上删除provider这个信息,它会给这个provider信息呢,会保留,只不过呢,会把它标记为一种就现在访问不了的一个状态。注意安全。哎,这不,现在这个是一个load balance啊,但是这个这个不管不管是不管是什么问题,反正现在我们降级机制是生效了啊。
21:03
呃,那么这时候其实呢。有另外一个问题,就是说我provider如果已经重新启动了的话,它这个能不能恢复。啊,这个结论是非诚定的,他可以恢复,只不过呢,他需要等一会儿,他等的这个时间呢,比我们想象的时间呢,可能稍微长一点。啊,我们想象的可能它一一重启完了,立即就恢复了。没有那么快啊,他得等一会儿,等的时间呢,可能比我们想象的时间呢要长一点。诶,然后呢,我们看一下啊,这边我们其实已经跑起来了。他现在呢,还是返回的是这个。你要是不厌其烦的话,你就在这儿,你就刷吧。有了是吧,这是啥?呃。And is open,这是什么意思?就是断路器。什么open是咋回事哈,就是断路器被打开了,这其实它还没有好啊,它还没有好,就只不过它只不过显得这显示的这个异常的信息不一样而已。
22:09
他需要等啊,他需要等。他最后是可以好的啊,你看这边又变成这个了。现在就还没有好啊,还没有好,它最后是可以好的啊,就是说这个需要等的时间比较长,咱们先先不在这。
我来说两句