ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第六节:伸缩性思考-负载均衡算法

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第六节:伸缩性思考-负载均衡算法 【架构师从入门到进阶】第五章DNSCDN网关优化思路——第五节伸缩性思考-负载均衡算法轮询加权轮询随机最小连接原地址散列总结本篇文章我们来学习负载均衡算法是接着我们上一篇文章所说的伸缩性的思考我们聊几个负载均衡算法。轮询第一个就是轮询。轮询就是Round Robin。轮询这个算法就是挨个发。比如我有这么三个服务器前面是一个负载均衡服务器请求来的时候按照一定的顺序一个一个来发这个叫轮询。那么这个适用的场景是什么呢适用于每个服务器的配置都是一样的场景这种情况下的负载均衡应该怎么去做呢在负载均衡的代码里可以通过一个数组来存储后面每个真正代理的服务器的地址有一个数组下标从零开始取取完下标加一到下一个数走完一轮之后再回归到零再一次一次的去分发就可以了。加权轮询第二个叫做加权轮询。什么叫加权轮询呢就是说按照权重不同来分发。权重是基于配置的比如我这里面有两个服务器A这个服务器配置高一些是B的两倍不管是CPU、内存、还是网络、还是磁盘空间都是它的两倍那么它的权重就分配的多一些。比如说A的权重分配分配4那么B的权重分配2。就是A的权重是B权重的两倍好了。那么这种加权轮询的算法怎么做呢我们举一个例子。比如说我们有两个服务器A的权重是六B的权重是四那么当请求到了负载均衡服务器需要分发的时候怎么能做到60%的请求都分发到权重为六服务器呢可以取一到十之间的随机数如果随机数落到一到六之间那么把它分发到权重为六服务器如果说落到七到十这个区间把它分配到权重为四服务器这样的话就利用生成随机数的这种概率来把他的请求进行分发到不同的权重的服务器上。随机还有一个就是随机。随机就比较简单了直接random这个代码实现也比较简单就直接随机。比如说有三台服务器那么数组里存储三个服务器的地址下标就在0和2之间随机取取到哪个是哪个。最小连接还有一个叫做最少连接负载均衡。什么意思呢就是说在负载均衡服务器这一方它要记录每个后方服务器处理连接的数量然后他把下一次来的请求转发给处理连接最少的那台服务器。原地址散列再下一个就叫做原地址散列也叫做source hashing。根据请求来源的IP地址进行哈希计算只要原地址不变那么每次请求映射到后面的服务器的地址是不变的。比如说有这么一个请求来自于某一个客户端客户端的IP是aa根据md5生成某一个值那么这个值对应的是某台服务器。那么下一次只要这个请求还是来源于这个客户端还是来源于这个IP它的md5的值还是这个永远对应这台服务器那么只要是从这个客户端发出的请求都会被转发到这台服务器上。这样做有什么好处呢就是说它有利于session的维护也就是说你在这个服务器上登录之后在这个服务器里面的内存中存储了一些与你这个客户端相关的数据那么你每次来他都能通过这种散列算法给你生成一个值这个值跟这个服务器对应那么你每次都在这个服务器上这个服务器内存中存储的一些数据就可以复用。总结负载均衡算法我们就说这么多。上一篇文章讲了负载均衡这篇文章讲的负载均衡算法其实都是为了伸缩性做考虑。伸缩性就是通过算法找后端的一台机器然后找到后端的那台机器之后把请求发给他。这里面有一些算法如果他要缩的话就需要去改一下。比如说轮询我们在数组去存对应的三台服务器的IP地址如果我们需要把一台服务器删掉就需要把数组里面的这个地址也给它去掉。关于服务器的伸缩在我们的系统当中如果能做成自动化的就会更好。这一方面通过云原生的解决方案去做是比较好的。
返回列表