Nginx轮询算法底层实现详解

本文详细介绍了Nginx的轮询算法,包括简单轮询、加权轮询和平滑加权轮询。重点讲解了加权轮询算法,通过设置不同权重使得服务器能根据性能处理不同数量的请求,以及平滑加权轮询如何更均匀地分布请求,避免服务器压力不均导致崩溃。
摘要由CSDN通过智能技术生成

轮询算法简介

在工作中很多人都使用到了nginx,对nginx得配置也是烂熟于心,今天我主要想介绍一下nginx轮询算法得几种底层实现方式。

简单轮询算法

这种算法比较简单,举个例子就是你有三台服务器

第一台服务器 192.168.1.1
第二台服务器 192.168.1.2
第三台服务器 192.168.1.3

第一个请求过来之后默认访问第一台,第二个请求过来访问第二台,第三次请求过来访问第三台,第四次请求过来访问第一台,以此类推。以下是我代码实现简单得算法:

public class SimplePolling {

    /**
     * key是ip
     */
    public static List <String> ipService = new LinkedList <>();
    static {
        ipService.add("192.168.1.1");
        ipService.add("192.168.1.2");
        ipService.add("192.168.1.3");
    }
    public static int pos = 0;
    public static String getIp(){
        if(pos >= ipService.size()){
            //防止索引越界
            pos = 0;
        }
        String ip = ipService.get(pos);
        pos ++;
        return ip;

    }

    public static void main(String[] args) {
        for (int i = 0; i < 4; i++) {
            System.out.println(getIp());

        }
    }
}

模拟执行4次执行结果是
在这里插入图片描述
此时如果我有一台服务器性能比较好(比如192.168.1.1),我想让这台服务器处理多一点请求,此时就涉及到了权重得概率,这种算法就不能实现,请看我后面描述的轮询升级版算法。

加权轮询算法</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值