常用的负载均衡算法(NGINX篇)

news2024/12/26 22:35:01

        

        负载均衡算法用于在多个服务器或资源之间分配工作负载,以优化资源利用率、降低延迟、提高吞吐量并确保系统的容错性。

        这里介绍并实验4种负载均衡算法(随机的方法理论上也算,但一般不会这么搞),在NGINX上。

目录

轮询 (Round Robin)

加权轮询(Weighted Round Robin)

最少连接(Least Connections)

源地址哈希(Source IP Hash)


 

 

轮询 

        轮询算法将请求按顺序分配给服务器列表中的每个服务器。当分配到最后一个服务器后,算法重新开始从第一个服务器分配。轮询算法简单且易于实现,但它可能无法充分考虑服务器之间的性能差异

        示例:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

加权轮询

        加权轮询算法为每个服务器分配一个权重值,以表示其处理能力。具有较高权重的服务器将处理更多的请求。加权轮询算法可以更好地处理服务器性能差异,但权重分配可能需手动调整

http {
    upstream backend {
        server backend1.example.com weight=1;
        server backend2.example.com weight=2;
        server backend3.example.com weight=3;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

最少连接

        最少连接算法将请求分配给当前连接数最少的服务器。这种算法可以更好地处理不同请求处理时间的情况,但可能需实时监控服务器的连接数

        例:假设有3个服务器A、B和C,当前连接数分别为3、1和2。最少连接算法会将下一个请求分配给服务器B,因为它的连接数最少。

http {
    upstream backend {
        least_conn;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

        在backendupstream块中添加了ip_hash指令。Nginx会根据客户端IP地址的哈希值将请求分配给这些服务器。

源地址哈希

        源地址哈希算法根据客户端的IP地址计算哈希值,然后将请求分配给相应的服务器。这种算法可以确保来自同一客户端的请求始终分配给同一个服务器,从而实现会话保持。

http {
    upstream backend {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

        在backendupstream块中添加了ip_hash指令。Nginx会根据客户端IP地址的哈希值将请求分配给这些服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/856242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 插槽 slot

solt 插槽需要分为 2.6.0 版本以上和 2.6.0版本以下。 2.6.0 版本以下的 slot 插槽在,2.x版本将继续支持,但是在 Vue 3 中已被废弃,且不会出现在官方文档中。 作用 插槽 prop 允许我们将插槽转换为可复用的模板,这些模板可以基于…

【第一阶段】kotlin的函数

函数头 fun main() {getMethod("zhangsan",22) }//kotlin语言默认是public,kotlin更规范,先有输入( getMethod(name:String,age:Int))再有输出(Int[返回值]) private fun getMethod(name:String,age:Int): Int{println("我叫…

拓扑序练习(一)

题目 LintCode127 给定一个有向图,图节点的拓扑排序定义如下: 对于图中的每一条有向边 A -> B , 在拓扑排序中A一定在B之前. 拓扑排序中的第一个节点可以是图中的任何一个没有其他节点指向它的节点。 如下图所示: 拓扑排序可以为: [0, 1, 2, 3, 4,…

排序八卦炉之总复习【改良版】

文章目录 1.总结2.总代码2.1Stack.h2.2Stack.c2.3Sort.h2.4Sort.c2.5Test.c 1.总结 2.总代码 点击 排序&#xff08;C&#xff09; 跳转码云获取完整代码 2.1Stack.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include …

以http_proxy和ajp_proxy方式整合apache和tomcat(动静分离)

注意&#xff1a;http_proxy和ajp_proxy的稳定性不如mod_jk 一.http_proxy方式 1.下载mod_proxy_html.x86_64 2.在apache下创建http_proxy.conf文件&#xff08;或者直接写到conf/httpd.conf文件最后&#xff09; 3.查看server.xml文件 到tomcat的安装目录下的conf/serve…

Python-OpenCV中的图像处理-图像阀值

Python-OpenCV中的图像处理-图像阀值 图像阈值单阈值自适应阈值Otsus二值化 图像阈值 单阈值 与名字一样&#xff0c;这种方法非常简单。但像素值高于阈值时&#xff0c;我们给这个像素赋予一个新值&#xff08;可能是白色&#xff09;&#xff0c;否则我们给它赋予另外一种颜…

数据结构--BFS求最短路

数据结构–BFS求最短路 BFS求⽆权图的单源最短路径 注&#xff1a;⽆权图可以视为⼀种特殊的带权图&#xff0c;只是每条边的权值都为1 以 2 为 b e g i n 位置 以2为begin位置 以2为begin位置 代码实现 //求顶点u到其他顶点的最短路径 void BFS_MIN_Distance(Graph G, int u…

开发工具Eclipse的使用之导入项目(import)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Eclipse使用的相关操作吧 一.导读 上篇我们已经详细介绍了开发工具eclipse&#xff0c;也说明了eclipse的基本使用&#xff0c;那么我们这篇来详细讲述一下怎…

yolov5目标检测多线程C++部署

C多线程复习 下面的代码搭建了简单的一个生产者-消费者模型&#xff0c;在capture()函数中进行入队操作&#xff0c;infer()函数中进行出队操作&#xff0c;为了模拟采图-推理流程&#xff0c;在函数中调用Sleep()函数延时。 #include <iostream> #include <string&…

Unity游戏源码分享-儿童益智数学大脑训练游戏

Unity游戏源码分享-儿童益智数学大脑训练游戏 5秒内选择答案 项目下载地址&#xff1a;https://download.csdn.net/download/Highning0007/88198773

数据结构:双向链表的实现(C实现)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》 文章目录 前言 一、实现思路1.节点的结构(ListNode)2.新节点的创建(BuyListNode)3.头结点的创建(ListCreate)4.双向链表的销毁(ListDestroy)5.双向链表的打印(ListPrint)6.双向链表的尾插(ListPu…

Vue3项目中使用原生input实现excel导入导出功能

重写input样式 首先我们先来重写input的原生样式&#xff0c;毕竟实在不好看。这里的思路很简单input外面套一层div然后让input撑满盒子然后给input隐藏了就行 <div class"bg-[#f8f8f8] w-[430px] h-[220px] rounded-md cursor-pointer relative outline-0">…

Git详解及使用

Git简介 Git 是一种分布式版本控制系统&#xff0c;它可以不受网络连接的限制&#xff0c;加上其它众多优点&#xff0c;目前已经成为程序开发人员做项目版本管理时的首选&#xff0c;非开发人员也可以用 Git 来做自己的文档版本管理工具。 大概是大二的时候开始接触和使用Gi…

计算机组成原理-笔记-第四章

目录 第四章——指令系统 1、指令格式 &#xff08;1&#xff09;指令&#xff08;机器指令-二进制数&#xff09; &#xff08;2&#xff09;指令分类&#xff08;按照 地址码的数量 分类&#xff09; &#xff08;3&#xff09;指令分类&#xff08;按照长度分类&#x…

Dubbo启动错误

加完Nacos配置后报错 信息: [DUBBO] The registry[<dubbo:registry address"nacos://localhost:8848" protocol"nacos" port"8848" />] will be used as the config center, dubbo version: 2.7.8, current host: 192.168.0.103 八月 09…

【香瓜说职场】如何高效地提问(2018.05.06)

一、什么是低效地提问&#xff1f; 香瓜先举3个非常非常常见的低效提问实例&#xff1a; 1、“为什么我的XXX不成功&#xff1f;” 这个问题就像“为什么我会摔倒”&#xff0c;可能原因有“腿残疾”、“路上有坑”、“眼神不好”等无数种原因……“不摔倒”的我是回答不了的、…

怎么学习JavaScript相关技术? - 易智编译EaseEditing

学习JavaScript相关技术需要一步步地积累知识和实践经验。以下是一些建议的学习步骤和资源&#xff1a; 基础知识&#xff1a; 开始学习JavaScript之前&#xff0c;了解基本的编程概念和术语。你可以通过在线课程、教材或教学视频来学习编程的基础知识。 学习基本语法&#x…

设计模式行为型——模板模式

目录 模板模式的定义 模板模式的实现 模板模式角色 模板模式类图 模板模式举例 模板模式代码实现 模板模式的特点 优点 缺点 使用场景 注意事项 实际应用 模板模式的定义 模板模式&#xff08;Template Pattern&#xff09;属于行为型设计模式&#xff0c;又叫模版…

OpenLayers入门,OpenLayers实现地图原地旋转动画效果

专栏目录: OpenLayers入门教程汇总目录 前言 OpenLayers实现地图原地旋转动画效果,顾名思义,就是站在原地转一圈。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用: vue项目使用…

opencv基础 42- Scharr算子-cv2.Scharr()(边缘检测基础)

Scharr算子是用于计算图像梯度的一种常用算子&#xff0c;特别是在边缘检测任务中。它是Sobel算子的改进版本&#xff0c;旨在提供更加准确和敏感的边缘检测。 在离散的空间上&#xff0c;有很多方法可以用来计算近似导数&#xff0c;在使用 33 的 Sobel 算子时&#xff0c;可能…