白话负载均衡、正反向代理(入门科普版)

什么是负载均衡?为什么需要负载均衡

从字面上理解,什么是负载,服务器承受访问量的大小是负载,但是单台服务器的访问性能是有限的,最典型的例子就是双十一、春运抢票这种,这时候就需要一种方案来解决这类问题,单台服务器不行,那就多台服务器一起,负载均衡,就是把访问量的压力分担给多台服务器。

使用多台web服务器来共同分担压力,这就是分布式架构。

负载均衡第一种模式——分布式架构

DNS服务器轮询

理想的http场景是,客户端向服务器发起请求,服务器响应内容(此时是一对一)。但是为了解决访问量的问题,我们的服务器有多台,这时候的问题是,客户端向哪台服务器请求,由哪台服务器响应?第一种方式就是DNS轮询。

理想的场景是我们通过域名访问,那么客户端首先会向DNS服务器发起一个询问该网站的IP地址的请求,假设网址www.example.com,对应IP为192.0.2.60,那么DNS服务器会返回这个IP地址,我们就通过192.0.2.60来访问服务器即可。但是为了解决访问量的问题,我们有多台web服务器,这时,DNS会记录有多个IP

服务器1:192.0.2.60,

服务器2:192.0.2.70,

服务器3:192.0.2.80

DNS服务器轮询就是第一次查询时,返回

192.0.2.60

192.0.2.70

192.0.2.80

第二次则是

192.0.2.70

192.0.2.80

192.0.2.60

以此类推,重复循环

这种方式的缺点如下:

  1. 无法跳过故障的服务器,假设192.0.2.61服务器故障,但是DNS服务器是无法知道它的状态的。

  2. 有一些操作是跨页面的,比如提交订单,提交到192.0.2.60,此时用户执行支付操作,这时通过DNS查询IP,则返回192.0.2.70,那么两台服务器的数据就出现不对等

负载均衡器

为了避免出现以上问题,可以使用一种叫做负载均衡器的设备。原理是,使用负载均衡器的设备IP代替服务器的实际地址注册到DNS服务器中。当我们再通过www.example.com访问时,返回的是负载均衡器的IP,然后由负载均衡器来决定将请求转发给哪台服务器

负载均衡器可以分为两种

  1. 没有跨页面

根据web服务器的负载状况判断,可以通过定期采集web服务器的CPU,内存使用率,并根据这些数据判断服务器的负载状况,也可以向web服务器发送测试包。或者,事先设置服务器性能指数,按比例分配请求。

  1. 跨页面

不考虑性能,将请求发送到同一台服务器上。此时又有另外一个问题,每个HTTP请求都是独立的,怎么判断操作是一起的?这里可以有多种方案。例如,发送表单时可以加入关联信息;在http请求头里面加入相关信息(cookie)。

负载均衡第二种模式-缓存服务器

除了使用多台服务器分担负载,还可以将整个系统按照功能分成不同的服务器,如web服务器、数据库服务器、缓存服务器。

什么是缓存服务器

缓存服务器是一台通过代理机制对数据进行缓存的服务器。

缓存服务器跟web服务器的区别

Web服务器需要执行检查网址和访问权限,以及在页面上填充数据等内部操作过程,因此将页面数据返回客户端所需的时间较长。相对地,缓存服务器只要将保存在磁盘上的数据读取出来发送给客户端就可以了,因此可以比web服务器更快地返回数据。

 1. 缓存服务器没有响应的数据

2.缓存服务器有数据

还是老问题,为了降低服务器访问压力,通常还是有多台web服务器,那么缓存服务器应该发给哪个web服务器?有一种方法就是根据URI来判断

在缓存服务器设置好,如果访问/dir1这个目录时,转发给www.example1.com,如果访问/dir2这个目录,则转发给www.example2.com

代理机制

代理介于web服务器和客户端之间,具有对web服务器访问进行中转的功能。当进行中转时,它可以将web服务器返回的数据保存在磁盘中,并可以代替web服务器将磁盘中的数据返回给客户端。

上面介绍的缓存服务器,介于客户端和服务器中间,把数据接收下来,然后“伪装”成客户端向web服务器发出访问请求,这种就是代理。

那么所谓的缓存服务器是放置在哪?一种是放在web服务器一端,一种是放在客户端一端。

正向代理

放置在客户端一端的缓存服务器就是正向代理。

正向代理有两个作用,一个是缓存,另一个是充当防火墙,过滤所有的包。

假设有天领导找到你,要你监视所有员工访问了哪些网址,禁止员工访问一些危险或与工作无关的网址,你就可以使用正向代理,所有访问都经过部署的服务器,只有符合条件的访问才会被转发至互联网。

反向代理

另外一种布置在服务器一端的即为反向代理。

请求从客户端到达服务端时,反向代理通过判断URI来进行匹配,如访问www.example.com,反向代理可以设置规则,把这个网址匹配到任意网址,如www.baidu.com,所以魔法原理就这样,把所有访问都转发到某代理服务器,再由这个魔法服务器请求真实的网址获得内容后再转发回来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ARM功耗管理软件之DVFSAVS

安全之安全(security)博客目录导读 思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS? 目录 一、ARM功耗管理软件之DVFS 二、ARM功耗管理软件之AVS 一、ARM功耗管理软件之DVFS 有一个实现特定…

SparkSQL调优

SparkSQL调优 文章目录 SparkSQL调优Explain 查看执行计划语法执行计划处理流程 资源调优内存说明spark任务提交到yarn上运行命令 CPU优化 SparkSQL语法优化基于RBO优化基于CBO优化广播join方式一:通过参数指定自动广播方式二:强行广播 SMB Join 数据倾斜…

Go线程实现模型-P

P 概述 P是G能够在M中运行关键。Go的运行时系统会适时地让P与不同的M建立或断开关联,以使P中的那些可运行的G能够及时获得,这与操作系统内核在CPU之上实时切换不同进程或线程的情况类似 改变P的数量 改变单个Go程序间拥有的P的最大数量有两种方法 调…

安卓手机的自带录屏在哪里找?5个软件帮助你快速给手机录屏

安卓手机的自带录屏在哪里找?5个软件帮助你快速给手机录屏 在安卓手机上进行屏幕录制是一项非常实用的功能,特别是对于需要录制游戏操作、制作教程或演示的用户来说。虽然部分安卓手机可能已经预装了屏幕录制功能,但有时候这些功能可能隐藏在…

技术派Spring事件监听机制及原理

Spring事件监听机制是Spring框架中的一种重要技术,允许组件之间进行松耦合通信。通过使用事件监听机制,应用程序的各个组件可以在其他组件不直接引用的情况下,相互发送和接受消息。 需求 在技术派中有这样一个需求,当发布文章或…

每日Attention学习7——Frequency-Perception Module

模块出处 [link] [code] [ACM MM 23] Frequency Perception Network for Camouflaged Object Detection 模块名称 Frequency-Perception Module (FPM) 模块作用 获取频域信息,更好识别伪装对象 模块结构 模块代码 import torch import torch.nn as nn import to…

Ubuntu(通用)—网络加固—ufw+防DNS污染+ARP绑定

1. ufw sudo ufw default deny incoming sudo ufw deny in from any to any # sudo ufw allow from any to any port 5353 protocol udp sudo ufw enable # 启动开机自启 # sudo ufw reload 更改后的操作2. 防ARP欺骗 华为云教程 arp -d删除dns记录arp -a显示arp表 ipconfi…

IMU在手语识别中的应用

近期,一款由美国和中国科研团队联合研发的新型的穿戴设备——SignRing,以其独特的IMU(惯性测量单元)技术,为聋哑人士的手语识别带来了革命性的突破。SignRing不仅极大地扩展了手语识别的词汇量,更提高了识别…

C++多态~~的两个特殊情况

目录 1.多态的概念 2.简单认识 (1)一个案例 (2)多态的两个满足条件 (3)虚函数的重写 (4)两个特殊情况 1.多态的概念 (1)多态就是多种形态; …

windows USB设备驱动开发-双角色驱动

在USB的通讯协议中,规定发起连接的一方为主机(Host),接受连接的一方为设备,这可以用U盘插入电脑举个例子,当U盘插入电脑后,电脑这边主动发起查询和枚举,U盘被动响应查询和数据存取。 USB 双角色驱动程序堆…

为Ubuntu-24.04-live-server-amd64磁盘扩容

系列文章目录 Ubuntu-24.04-live-server-amd64安装界面中文版 文章目录 系列文章目录前言一、检查系统本身情况1.用 lsblk 命令查看自己系统磁盘是什么状态2.用 df -h 命令查看文件系统的磁盘空间使用情况3.解决 Ubuntu-24.04 磁盘空间只能用一半的问题3-1扩展逻辑卷&#xff…

二叉树层序遍历

题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 假设有这样一棵二叉树,那么它经过层序遍历的结果就应该是: [[3],[9,20],[15,7]]解法 我们可以用广度…

css美化滚动条样式

效果展示 实现 滚动条宽,高度 /* 整体滚动条 */ ::-webkit-scrollbar {width: 10px; }/* 滚动条轨道 */ ::-webkit-scrollbar-track {background-color: #ffffff;border-radius: 6px; }/* 滚动条滑块 */ ::-webkit-scrollbar-thumb {background-color: #888;borde…

IDEA安装使用、JDBC

day53续 IDEA安装 浏览器搜索,在idea官网直接下载需要的版本安装包,安装流程基本无脑 对于专业版要激活,可找相关资源也可购买;社区版不需要 配置环境变量 JDBC JDBC:java database connectivity SUN公司提供的一套操作数据库的…

计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js

Python美食推荐系统开题报告 一、项目背景与意义 随着互联网和移动技术的飞速发展,人们的生活方式发生了巨大变化,尤其是餐饮行业。在线美食平台如雨后春笋般涌现,为用户提供了丰富的美食选择。然而,如何在海量的餐饮信息中快速…

【Excel、RStudio计算T检测的具体操作步骤】

目录 一、基础知识1.1 显著性检验1.2 等方差T检验、异方差T检验1.3 单尾p、双尾p1.3.1 检验目的不同1.3.2 用法不同1.3.3 如何选择 二、Excel2.1 统计分析工具2.1.1 添加统计分析工具2.1.2 数据分析 2.2 公式 -> 插入函数 -> T.TEST 三、RStudio 一、基础知识 参考: 1.…

2.2章节python的变量和常量

在Python中,变量和常量有一些基本的概念和用法,但需要注意的是,Python本身并没有内置的“常量”类型。然而,程序员通常会遵循一种约定,即使用全部大写的变量名来表示常量。 一、变量 在Python中,变量是一…

新手教学系列——【Ubuntu】SSH配置详解

在使用Ubuntu进行远程管理和开发时,SSH(Secure Shell)是必不可少的工具。SSH不仅提供安全的远程登录功能,还支持安全的文件传输和端口转发。然而,有时我们可能会遇到SSH连接中断的问题。本文将详细介绍如何配置SSH以提高其稳定性,并解释关键配置项。 为什么会出现SSH连接…

基于X86+FPGA的精密加工检测设备解决方案

应用场景 随着我国高新技术的发展和国防现代化发展,航空、航天等领域需 要的大型光电子器件,微型电子机械、 光 电信息等领域需要的微型器件,还有一些复杂零件的加工需求日益增加,这些都需要借助精密甚至超精密的加工检测设备 客…

算法 —— 滑动窗口

目录 长度最小的子数组 无重复字符的最长子串 最大连续1的个数 将x减到0的最小操作数 找到字符串中所有字母异位词 长度最小的子数组 sum比target小就进窗口,sum比target大就出窗口,由于数组是正数,所以相加会使sum变大,相减…