00:00
好,那么同学们,我们呢,接着上一讲呢,继续学习,那么呢,刚才呢,我们已经看到了rib的负载均衡效果上而言的话,我们是不是每次来一次的话呢。可以反问。每个不同的落地库和落地微服务一就是8012 800238003,那么由此可以获得。软负载均衡的什么呀?客服端组件好,那么这个就是我们上一讲对日本负载均衡的证明和说明,那么呢,接下来我们就来看看。这个时候呢?部分同学会问,那么现在我们是不是只演示了一种算法叫轮循算法呀?每个节点一次,每个微服一次,那么这个时候。80123123123。那么除此以外,还有没有其他的呢?第二个。
01:00
如果我想自定义一种。负载均衡算法如何配置呢?这个时候我们来看一下一个新的章节,日本的核心组件安了。他呢?根据特定算法中,从服务列表中选取一个要访问的服务。我说穿了。还是我们前面这张架构图。那么呢,请大家呢。看一眼。干什么呢?我们的rib做。配置的时候。稍等啊找一下。查询可用服务,那么呢?分成的这两步。所以说瑞本提供了多种策略,轮询,随机根据响应时间加权等等,那么呢,扯了这么多杀回来我们可以看到。Ribbon的,默认的,大家看123467也记。
02:08
Cloud。结合ribbon,它默认出厂自带了七种算法。那假设你需要。不同的业务,不同的算法,或者要临时调整一下算法,那么可以用这七种来进行。变更,这我们大家呢看一眼。来,我们都知道允许挨个挨个一次,这个是不是我们的默认啊。大家看random随机还有这个这个这个这个好这么多多,那么呢,我们呢,大致的了解一下第一个问题。杨哥,我已经见到你展示了轮询算法,那么呢,痛快点,整个别的。那么呢,我们呢,下面呢。
03:02
由于rib是客户端的,所以说呢,我暂时呢,先把八零呢关闭一下好,那么大家看它有时候会跳,那么呢,这个时候的话呢,我们呢,一定要是它八零的时候将其关闭啊,那么大家看怎么确认呢?Terminated,那么这个时候。取消你打开看。123123搞定,那么我们的其他没有任何问题,待会儿我们来看,当然了,如果待会出现这个自我保护,因为我们隔了一段时间没动这个机器,那么大家呢,不要奇怪,不影响正常使用,好。那么接下来呢,我们呢,回到我们的八零。找到我们conflict b,那么呢,这些是什么意思呢,来。不要忘了之前咱们是不是有这个东东啊,那么好,慢慢的带着大家接触一下ribbon的。源码,那么这个时候大家请看,因为rib主要负责load balance LB,那么这个时候src,那么大家看是不是也是maven的标配呀?那么大家看这块主抓load balance,那么这个时候请看我们这儿是不是有一个这个东东叫I ruler。
04:21
那么言下之意就是瑞本的负载均衡算法,它定义了一套策略,那么这套策略就是说,只要你能够实现我这个接口,你就能够定义自己的算法,那么这个时候大家请看这个接口。Interface没错吧,而且大家现在有点知道为什么github重要了。源码都从这儿下。三方法选择设置get,那么简单而言,这是不是有个I load balance接口啊,那么呢,我们再过去看看,一步步呢往下跟,那么这儿。这个接口大家可以看,它呢传进来用at service,选择service,然后呢标记service done等等。那么这些。
05:06
说实在的,请大家看这是不是有一个。不推荐啊,那么待会儿我们会给大家呢,来看一下这个可达的,包括得到所有的服务列表等等,那么现在呢,我们要干的一件事情是什么呢?我们呢,这一些些下来了以后,会有这么一个抽象的load balance的一个什么抽象类,抽象类是不是要被记承啊,大家看它是不是实现了这个接口,那么呢,这个接口里面就会选择服务器专载给beds啊,干嘛呢,也记对应的它可以通过其他的类干嘛,比方说。这儿首先哈,它是不是再看一眼,它是不是个抽象类啊,这个抽象类我们找到干嘛呢。
06:00
我们将会有一个东西,这个东西是我们默认的,谁呢?找找我们的,你看。Run rubie ruler啥意思啊?Run Ruby ruler,那是不是就是我们的默认的轮寻算法呀?也就说我定义了接口以后,是由它来给我落地生根,看是不是抽象类的继承吧。那么大家请看这个里面就是我们瑞本的源码,那么这块日志啊,这些呢,就不多说了,那么呢,大家可以看选择啥意思啊,这个是满足这个接口,那么呢,我们呢,最终得到。请看。哦。我们大致的来放大一下,读一下它卷子的意思,反回一个S吧,那么是不是得到服务器对应要响应出的哪一种算法吧?那么也就是说它出厂默认是有这么多。我们第一个用的就是轮许,那你咋来的呢?看一下get的源码,那么呢,我们可以看到这有一个方法大家看。
07:08
这是不是有一个东西叫all service啊,那么这个war service来了以后,我们呢,直接来看看hello be get or service,那么言下之意是不是得到现在所有活着的呀,所有有效的这些为服务,然后大家可以看它上面。要干的一个get得到next index啥意思?现在大家都知道我这是不是二三或者是1233个为服务啊,它的意思就是说干嘛你们每次得了以后or service.get你看next service index,那是不是就是next,就是这个这个这个这个这个这个那是不是挨个的允许。
08:02
那么大致它呢,选择的策略就是我们默认的这个乱的Robin ruler,那么呢,轮询这是大致的源码。第二个问题。产品经理跟你说。现在我们不用录取。烦请你换一个算法。我要求你用随机,我们就赌运气,比方说现在在十秒钟以内,我们某个电商做一个促销,谁能够。提前。点击率是最高的,谁先登录我们干嘛呢,就可以跟谁分配更多的奖金。或者就是说现在我们拆了一个红包,或者说现在大家的奖金分配是随机的机制,那么刚才是轮询,现在我们是不是要把我们算法换成随机啊,那么欧拉round入了,那么怎么整呢?那么呢,这。
09:04
Public I。入了卖入了,然后。瑞泰尿,由于我们这些算法都是有的,我们呢。干。然后导入包完火以后切记并。那么呢,什么意思呢?也就在我的配置里面,你注意这我说过了,这个注解加这个对象等于我们这个配置文件同意吧,那么言下之意就是说主人如果你没有显示的声明,我就用我自己默认的轮询算法,如果你有点像在这个类里面,类似于这样做了显示的声明,那么呢,我就用你主人的算法覆盖我原有默认的,这么说能跟上。
10:06
那么这意思,我想达到的目的。就是右,诶大家看啊,这边一启动的话,那就。哦,我们。重机选择的随机法,一代默认的轮寻OK好,那么这个时候的话呢,注意安徽值是不是挨住了。是不是我们的固定的这个接口那么好。他呢,弄完以后我们呢,简单的看一下,在这块呢以后,那么这三个服务是不是还在啊,根本没关过,那么我八零重新启过来,那么这个时候如果一切顺利,我们来看看,因为中间我们间隔休息了一段时间哈,有可能这个自我保护机制会让这次的话呢不好使,那么到时候的话呢,我们可以再重新重启再来那么好。
11:10
接下来我们呢?开测,那么呢,八零已经成功的是不是又启动了,切记哈,这是消费者,那么这个时候呢,我们呢,干什么呢,就跟刚才一样,是不是调到我们的这个配置啊,这个访问地址,那么注意之前咱们。用的是。轮群,那么是312或者321,现在大家看我们换成随机了,看看有没有效果呢,这个时候漏二。1321说明什么?说明我们本次配置是不是没生效啊,因为刚才间隔的太长,那么呢,现在是不是还是默认的轮询算法呀,那么所以说呢,这呢,我干脆呢把服务呢,因为在注册在U卡上面了以后,是不是也需要给他重新启动啊,那么呢,这个时候好没办法,麻烦就麻烦一点了,我们呢。
12:07
直接呢,因为。我们呢,就需要把这些再重新起一下,因为它到最后他是不是去事上面去找啊,那所以说呢,这三个呢,逃不了开始呢,我还想。省点功夫,那么算了,那既然这样呢,我就来吧,老老实实规规矩矩的OK,那么现在三个然后呢?来。来。来,那么呢,8003,那么选的是这个。OK,那么再来这个。那么这个时候呢?同学们呢?肯定会有这么一个疑问。那养个啊。你这每启动一个微服务,都要鼠标右键run as spring put application,没错吧,好,现在因为你在学校,你教学环境,这有七个行,杨哥你辛苦一点很,其次我认了,那假设我去到工作里面以后,这个下面有。
13:08
少一点。60个为服吧。都要起的话,难道我要起60次吗?那么这个时候我相信这个工作量是不是有一种诉求叫批处理啊,那么这个呢干嘛呢,也就是我们后续什么东东。第二季要给大家加深和加强的内容,因为那个有点偏韵文,要写点脚本,好,我们现在呢,多扯了一句。等它重新启动,那么重新启动了以后呢,那么来吧,我们试一下,大家看现在是不是是三啊。再来21321321哟,是不是还是人行我们这个算法没有生效啊,那么这边的话呢,我们呢,直接来看看随机它为什么没有生效。
14:02
那么呢?这个我们来看一下,我们现在是不是要用随机算法替代默认的轮询啊,但是呢,大家看一下我刚才是不是手握。粘的是这个吧,那么从这干嘛呢,可以说明我显示的。是不是又重新定义了一次是轮询啊,那么所以说这块,那么呢,刚才呢,一边讲课一边跟那位同学呢,讨论了一下呢,那点神哈,那么这个时候干什么呀,那么是不是要做我们的。Random,然后拿到我们对应的这个random ruler,这个算法才是我们真正的轮询算法呀。那么看看我们这块重新改了以后,大家看那么这块我们达到的目的。用我们重新选择的什么算法,Random是不是随机啊,那么刚才呢,我呢,手部粘贴成了。
15:02
轮巡,那么从这也说明是什么,通过这个刚才可以看得出用这种方式是不是可以显示的指定我们本次的算法是什么样啊,那么好,现在呢,既然说显示的生,那么就要用显示的主人定义的。替代它的默认的,那么这个时候我们看我们现在是random入了,那么这个时候100%这单词没错了吧,Random是随机了么?来看看我们本次来还是不是37,能不能反问。122大家看,没再重复了吧,一你看根本没跳到三吧,我们再来二三。131223,大家可以看这个顺序是不是乱的呀,哎,所以说呢。我们可以知道如何控制我们这些算法,很简单,那么呢,根据你所的需要干什么呢?需要画哪一种算法?我们直接把对应的算法名字一扎一尿即可获得。大家可以看rubb本的负载均衡算法的切换是不是非常简单啊?
16:14
好,那么呢,切换规则都很简单,Return对应的某一个即可达成,那么接下来时间的关系我就不再一一的列举,那么这个时候我们呢,来看一下。比方说我们有一个re串ruler,这个规则又是什么呢?那么这其他的绘画吧,就是return加名字就行了,那么接下来我们为什么要说这个呢?注意,现在开始我们每一个微服务都是不是好的呀。来,我干坏事,我故意让一个微服务淡了。然后请看他说的re try,先按照什么轮询算法的策略获取服务,也即要是你的服务是好的,我的跟这个我们两个是不是一样啊?
17:07
假设获取服务失败,它就会在指定的时间内进行重试,获取其他可用的服务。啥意思呢?我们来试试这个。现在是不是1233个都活着呢?好,我故意把二给关了。根据它的算法要求。默认是不是允许啊,那么假设我们现在呢,就是。123123123挺和谐的,挺自然的,我现在突然干坏事,就是好的时候,这个串入了这个算法,就等于我们的临学算法,那么坏的时候呢。二号微服务单击好,他还是会一二短撞到头了,他还是会去找二,然后呢,312啪又撞到头了,那么换句话说什么,在一定时间内。它转了几次以后,发现二没法访问了,干嘛自动的切割不再去转脑袋了,会自动的去访问剩下活的好的健在的务窗服务窗口,这么说能跟上,好比我们去银行办理1233号窗口,现在二号窗口挂了个牌子,暂停服务,那么作为客户端的你,你肯定会自然的会再去一号和三号吧,好,那么这个时候呢,我们呢,直接再继续换,那么会换这个时候。
18:31
那么这当然不能有两个方法并存,那么导入OK,我们大家看一下,切记这个时候干嘛呢?Re,串出来就跟换其他算法一样,那么是不是换个名字就行啊?那么呢,干嘛呢?轮询随机同事那么好,现在大家看一下,刚才呢是我们的随机,现在我们说了8001和8003。
19:01
80023个是不是都活着了,活着的时候都健康的时候,这个水串的算法就是轮巡,那么大家可以看一下二。31321321321321,那是不是一个一次啊好,那么现在默认的咱们呢是。允许好挨个点数,一人一次,那么接下来我故意干坏事。回到我的8002,随便你关哈,那么现在是不是321啊,我把二给关了。模拟这个服务死了,那么大家请看现在是不是8022挂了,那么大家请看集群没到服务的是不是有一和三了,消费者在这,那么这个时候等他重启完成,因为稍微等一会儿,它加载的话要一点点时间,那么欧了。
20:00
大家请看,现在是一,那么刚才我们的顺序是321啊。那么呢,哟,直接是不是跳到二了,那么好,大家看现在是不是三。一再去反问二短撞头了是不是I配?再来三,没问题吧,再来一,再访问。又转头了,对不对?那么好,他转头几次以后学聪明了。干嘛呢,就跟我们用高德地图发现规划的路线变成血红色了,那么我认为你马上明白那边是不是堵车了,你一定不会去吧么,这个时候我们再看看,那么稍微等他一会儿,3131大家发现没有,它转几次头以后它就不转了,那么这个时候呢,它内部呢,有一些机制,那么就像是高德地图的堵车,刚才说过了,这边已经堵了,那我自然而然是掉头撤了,所以说呢,这种就是干嘛串算法相关的策略,那么其他的那么呢,同学们。
21:06
后续有机会大家可以逐个尝试一下能用的方法,就这么回事,这一步OK,好,那么这个一定要明白,Rib本它为什么能够进行负载均衡,以及负载均衡的算法,默认就是这七个好用的方法也很简单,复写这个是不是OK啊?下面我的问题是。Boss跟你说,不好意思,我提出了一种特殊的业务要求,不在这七个范围以内,那怎么办呢?我们接下来再看看如何自定义算法。
我来说两句