当前位置: 首页 > news >正文

NGINX——负载均衡

负载均衡————>通过反向代理来实现

nginx反向代理的七层代理和四层代理

七层代理:

七层代理时最常用的反向代理方式,其只能配置在nginx的配置文件的http模块中,而且方法名称必须要定义成“upstream”模块,注意不能写在server模块中,也不能写在location模块中;

同时upstream模块在http模块中时一个独立的模块

七层代理:代理的是http的请求和响应

七层代理的工作原理:

客户端——>http请求——>七层代理(代理服务器上)——>代理服务器转发http,请求到内部的一组服务器(web集群)——>客户端不知道请求的时代里服务器还是内部服务器,而且通过代理服务器隐藏了内部服务器的ip。

        实际上访问的是代理服务器,请求到代理,由代理转发给web服务器,web服务器相应————————实际由web服务器来相应

四层代理

四层代理是基于tcp/ip协议,协议层的代理转发方式,可以实现基于ip地址和端口号进行负载均衡转发;四层代理无法获取http请求当中的URL信息,只能对tcp/udp数据包进行转发,流量转发,配置方法的名称:stream;stream不能配置在http模块中,其配置在全局模块中,属于一个独立的模块

四层代理和七层代理之间的区别(重点!!)

1、七层代理走的是http请求;而四层代理走的是tcp/udp数据包,转发的是流量;

        七层代理:http 请求,可以对请求进行深入的解析和处理。如:流量控制、内容过滤;

        四层代理:不进行流量控制,也无法对内容进行过滤;

        

        四层代理通常适用于:需要处理大量连接请求的场景

        七层代理通常适用于:对请求进行精确处理和控制的场景

                在实际工作中,四层代理和七层代理可以配合使用

2、四层代理的速度比七层代理的速度快;

        原因:

        (1):四层代理为流量转发,不能对请求进行解析和控制,所以要快

        (2):四层代理走的是内核,由内核来转发流量,速度快

      七层代理相对慢

        原因:

        (1):七层代理对请求进行处理和解析,速度慢

        (2):七层代理走的是用户态,访问控制,流量处理;所以慢

                七层代理可以提供更高的服务和更高的用户体验

正向代理与反向代理

正向代理:

模块  proxuy_pass 配置代理服务器的访问地址,此模块只能写在location模块中

反向代理:

客户端访问代理服务器,代理服务器转发请求或者流量,到后端服务器,后端的web服务器会有多台,但用户并不知道最终访问的是哪一台服务器

        反向代理的作用:负载均衡、高可用、可扩展、提高可维护性。

在工作中如何进行反向代理?

反向代理——>负载均衡

        upstream:基于http实现负载均衡,反向代理

特点:

1、http请求的负载均衡方式

2、没有缓存

3、负载均衡的算法:

(1)默认算法:轮询(rr);请求轮流分配给后端服务器,轮询算法使用于多台web服务器处理能力相近的情况,默认算法,可以不加

(2)加权算法:建立在轮询算法的基础上,通过给不同的web服务器权重,让处理能力更强的服务器可以分配到更多的请求;(注意:虽然配置了权重,但是沦陷的结果未必一直准确)

(3)ip_hash:根据IP地址计算出一个hash值,使用ip_hash算法后,同一个客户端的请求会ibei分配到同一个后端服务器,保证会话的稳定性;当后端服务器的数量发生了变化,hash的值会被重新计算,请求的服务器可能也会发生变化

(4)最少连接数:least_conn;会轮询,特点:会将请求发送到当前连接数最少的后端web服务器,适用于后端服务器处理任务耗时不同的情况,避免了所有请求都集中在处理能力更强的后端服务器上,least_conn算法会和加权轮询算法结合使用

(5)url_hash:根据URI地址计算出hash值,使用url_hash算法时,相同请求的URI会分配到同一个后端服务器

        负载均衡算法的使用场景:

        小型场景:并发量很小,默认算法就可以满足适用条件

        后端web服务器的处理能力由差异,加权轮询和最小连接数配合使用即可

        大型并发:ip_hash、url_hash;第一次请求之后会有本地缓存生成,而且因为hash算法的原因,请求的后端web服务器不会发生变化,可以提高访问速度,访问的是本地缓存。减轻了后端服务器的请求能力

        注意点:

ip_hash :当后端服务器的数量发生了变化,则请求的服务器可能会发生变化

uri_hash:当请求的地址发生了变化,请求的服务器也可能会发生变化

相关文章:

NGINX——负载均衡

负载均衡————>通过反向代理来实现 nginx反向代理的七层代理和四层代理 七层代理: 七层代理时最常用的反向代理方式,其只能配置在nginx的配置文件的http模块中,而且方法名称必须要定义成“upstream”模块,注意不能写在se…...

C#实现端口扫描和执行cmd命令、调用摄像头

C#端口扫描 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Threading;namespace PortScanner {class Program{static void Main(string[] args){// 设置扫描参数string host "localho…...

【图像恢复】基于交替乘子方法(ADMM)图像恢复算法研究[固定点收敛和应用](Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Qt 使用QLabel的派生类实现QLabel的双击响应

1 介绍 在QLabel中没有双击等事件响应,需要构建其派生类,自定义信号(signals)、重载事件函数(event),最后在Qwidget中使用connect链接即可,进而实现响应功能。 对于其余没有需求事件响应的QObject同样适用。 此外,该功…...

关于@JSONField的使用

1.此注解来自jar包com.alibaba.fastjson 今天分享一个有意思的事情。这个注解作用与类的属性上,如下: ApiModelProperty(value"开始时间,格式:yyyy-MM-dd",required true) JSONField(name"start_date",ordinal 1) private String…...

Centos7单机部署ElasticSearch

Centos7单机部署ElasticSearch 引言 Elasticsearch是一种广泛使用的开源搜索引擎,专门为分布式环境设计,但也可以在单机上运行。它使存储、搜索和分析大量数据变得更加容易和高效。此教程将引导你通过在Centos7上单机部署Elasticsearch,涵盖…...

js玩儿爬虫

前言 提到爬虫可能大多都会想到python,其实爬虫的实现并不限制任何语言。 下面我们就使用js来实现,后端为express,前端为vue3。 实现功能 话不多说,先看结果: 这是项目链接:https://gitee.com/xi1213/w…...

新利好带动 POSE 持续上扬,月内几近翻倍

PoseiSwap 是 Nautilus Chain 上的首个 DEX,得益于 Nautilus Chain 的模块化 Layer3 构架,PoseiSwap 正在基于 zk-Rollup 方案构建全新的应用层,并基于此构建隐私、合规等全新的特性,为未来其布局 RWA 领域推动 Web2、Web3 世界的…...

Windows terminal 添加 git bash 解决git中文乱码显示问题

Windows terminal 添加 git bash 解决git中文乱码显示问题 在 windows terminal 中配置git 说明: 点击箭头选择设置 说明: 点击"添加新配置文件"配置名称命令行,可执行文件的具体语句 C:\Program Files\Git\bin\bash.exe启动目录…...

C语言实现选择排序

什么是选择排序? 选择排序是一种简单直观的排序算法,它的核心思想是每次从未排序的元素中选择最小(或最大)的元素,然后将其放到已排序序列的末尾。通过重复这个过程,直到所有元素都排好序为止。 选择排序…...

unable to write symref for HEAD: Permission denied

今天从gitee上面克隆项目到本地时报错如下 warning: unable to unlink ‘D:/IDEAcode/ruiji1.0/.git/HEAD.lock’: Invalid argument error: unable to write symref for HEAD: Permission denied 解决方法:将要存放项目的文件夹权限修改为完全控制 原先权限&…...

长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的实践技术应用

植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于…...

【行为型设计模式】C#设计模式之策略模式

题目:假设你正在开发一个手机应用程序,该应用程序包含一个计算器功能。用户可以根据自己的需求选择不同的计算策略进行计算,例如加法、减法、乘法或除法。请使用策略模式设计该计算器功能,使得用户可以根据自己的选择进行相应的计…...

Linux Shell 编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天…...

Webstorm + Egg.js 进行断点调试

Webstorm Egg.js 进行断点调试 1、在工具栏找到编辑配置,创建已运行Node.js 应用程序的调试配置 2、debug调试配置 3、调试 4、查看断点是否起效...

Oracle-创建PDB

Oracle-创建PDB 创建PDB的方式 从PDB$SEED新建PDB克隆已存在的PDB 本地PDB克隆到同一个CDB中将远程PDB克隆到CDB中将非CDB插入或克隆到CDB中通过插拔的方式创建PDB sql 命令语法 条件 CDB必须open并且read write模式连接CDB$ROOT 用户并且具有CREATEPLUGGABLEDATABASE系统权…...

【TypeScript】交叉类型联合类型(四)

【TypeScript】交叉类型&联合类型(四) 【TypeScript】交叉类型&联合类型(四)一、简介二、交叉类型2.1 交叉类型使用的注意点2.2 基本数据类型交叉2.3 对象类型交叉 三、联合类型四、类型缩减 一、简介 TypeScript 中的交…...

数组和字符串-字符串

最长公共前缀 题意: 给多个字符串,找最长前缀 解: 暴力匹配,先按字典序排序字符串,这样长度短的优先进行匹配,所得字符串就可能偏小 适合a aa aaa aaaa这样的数据,不过对于aa aab aabc aab…...

MySQL-索引基础

文章概要 本篇文章通过几个问题来了解MySQL中索引相关的概念。平时在学习MySQL时或多或少都听说过索引的概念,但是索引到底是个什么东西,可能还不是非常的清楚。 正文 1. 什么是索引? 索引,在MySQL中也称为键(key)&#xff0c…...

CentOS中自动加载802.1q模块

CentOS中自动加载802.1q模块 要想在CentOS中自动加载内核模块,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块。 下面是我所用的一个名为8021q.modules的脚本,用来在我的CentOS 5.3中自动加载802.1Q模块&#…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...