00:00
好,同学们,上一讲我们完成了ribb核心组件IU这个接口,它的各种规则以后的替换和介绍方法以后,那么接下来我们明白它是什么了,会替换了。我们要。深刻的说一下负载均衡算法,那么不废话,原理,原码,最后自己咱们要手写一个一会用,说白了会用就是rib本负载均默认负载轮巡的负载均衡算法,加个rest temp,第二个深一点的IO这个接口里面的各种。七大。负载算法的替换,那接下来的问题是,如果让你来写一个,以及它的后面的原理怎么玩呢?好,那么现在走人。第一个我恢复成我们的默认出厂的。Run就是。轮循的这样的一种规则,那么把这一行注掉,那么我就是在这儿有这个了,也没有引入OK第二个,那么。
01:05
我们呢,把这个就关掉了啊,我们不引入,那么我们注掉了以后,大家请看现在121212,那么我点一下就是下一个数字,我再点一下是不是就是下一个数字,听懂,那就像是周三张三值日再来一次,又过了一天周四了,李四值日,总之一句话你得给我蹦出来,那么好,下面我们的问题是从我们的轮循负载入这个规则开始。Rib这个轮巡规则开始来看看这种负载均衡它的算法和原理是什么。首先。为什么它现在能够实现121212的轮行切换?好,它的原理是这样的。现在我们的7001有瑞卡上面啊,能够拥有的支付微服务的总数,Payment的微服务的总数,80018002总共几个两台那。
02:05
现在怎么来切换,怎么来安排,到底哪一次请求来是一上还是二上呢?它的算法是什么呢?那么我们来先说原理,后看我们rib本的入规则的源码,然后咱们再手写一个负载均衡算法,那么这一块那么希望大家呢,可以通过这个case增加自己的内功,不但要知道是什么,还要会用,最后呢,可以的话,时间允许的前提下,我们呢,原理上深刻的原码上也可以手写一下,好,它的原理是这样的。首先,那么我们呢。负载均衡算法,先是rest接口的第几次请求。百分号。除了以后取余数。服务器集群的总数量就等于实际调用服务器位置的下标,这么说能跟上后面这句话我们待会聊。
03:06
这句话请同学们思考一下,我先暂停一下录屏说人话,这是总结的算法公式啊,咱们现在说人话。集中精神必须给我听懂,现在告诉我兄弟们,我们服务器的集群总数量就是这个,有瑞卡上面几台。801802是不是总共就是。总机器数字啊。多少两台,那接下来什么呢?接口的第几次请求来和他取来决定这两台里面是哪一台对外提供服务,它的原理是这样,那么现在我们的这个list。里面是不是就是两个实验。这波没问题吧,那么现在假设是D。依次请求过来一这个二兄弟们余速是多少?是不是就是一,那么说明我返回出去的这个index下边就是一。
04:13
然后list上面这个总共是两台,第二第二。我们的这个index。那么就得到我们现在要出去值班的是哪一位,这是第一次访问,那么第二次呢?那么兄弟们几啊,是不是零啊?那么跟前面的一样,现在这个index的下标就不再是一,变成了零。那么这个时候是不是list.get我们这个index,那么就说明在这个list里面的第零号过去服务,那么以此类推,如果。现在是第三次啊,后来反问总机器数8001802就两台,三和二取余数是不是还是一样,求模取余嘛?
05:01
那么这个这个时候的话呢,取余了以后,那么现在大家请看这个时候就是一再是list get,那么又从这个一,那么这样1010,现在这个例子里面只有80018002,他们两个是不是下标就是101010来反复的调用以后来开始获得呀,这么说能跟上,那么一直三。456那么一直到,嗯,注意如果这个时候重启了我们的。80018002,或者就是你整个系统重启了,那么这时候不好意思啊,我们技术就不再是往上面。继续,然后是不是要从新的一开始来保证你有哪一台服务啊,这么说能跟上好,那么同学们过来,首先我们上面前面是不是讲过是discovery client,知道为什么要前面讲这个了吧,我们现在用它是不是getces啊,通过对外暴露的统一的微服务的名称,那么大家请看这个里面是不是有我们的80018002几台,这个list里面是不是有两台,那么假设。
06:07
List这个INSTANCE0就是我刚才所说LIST0里面啊,干脆这样吧,写成这样对吧。它呢是八零零二零号机是8002。一号机是8001,那么相当于说这个list是不是它的下标就是0101,那么现在8001加8002组合为集群的话。共计几台机器两台,所以说我们这的服务器集群总数量就是二,按照它的轮询算法,那么我这样啊,我点我点我点第一次第二次第三次第四五六七八九十二,那么这样过了,当请求总数为第一次的时候,一。跟二余数为一对应,下边就是一对应下边是一,就从我们这个list instant列表里面找到我们的8001,那么如果是我现在再点一下是第二次访问,那么这个时候二。
07:03
余数就应该是零,那么对应下标就是零么?这个list里面找到这零号就是我们的二,那么这个时候就是我们的二号服务器8002出针,那么以此类推。第三次,第四次,第五次,第六次,那么就是这样跟我们的集群总数来取余数,获得实际调用服务器的下标位置,这个就是我们轮询算法的核心理论。那同学们这个按照。请求数和服务器集群总数来按照余数来分配,下标总体list就是这么多。怎么除都不会超过这个下标,那么在这个例子里面,如果我们有两台机器,80018002,那么就轮着出去,即便是三台四台也这么回事,这么说能跟上,那么所以说同学们,我们的负载均衡的集群算法,它的轮循算法就是这么个原理,这个原理能不能清楚啊,清楚的给杨哥刷个六。
08:05
OK,好,那么同学们都明白了,很简单,没什么难的好吗?就是次数啊,来跟我们的总服务器集群数量来求下标位置啊,说白了,我们现在有瑞卡,上面是不是就八零零幺八零二两台啊,来一次取一次啊,来一次计算一次啊,就根据这个公式来计算,当然比方说我现在啊。已经到第115次了,然后呢,你服务器重新启动了,那么不好意思啊,我们的从启动完了以后,我们的下一次访问干嘛要从一开始计算,OK,好,那么这个就是我们的服务器轮询负载均衡的算法原理,那么这儿请大家务必要理解和掌握,也许面试中用得到。
我来说两句