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),…...
CentOS中自动加载802.1q模块
CentOS中自动加载802.1q模块 要想在CentOS中自动加载内核模块,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块。 下面是我所用的一个名为8021q.modules的脚本,用来在我的CentOS 5.3中自动加载802.1Q模块&#…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
