网页加载出现没有合适的负载均衡器_分布式必知必会-七层负载和四层负载到底是什么?...

背景

我们在使用负载均衡器的时候,往往会听到七层负载或四层负载这两个名词,许多负载均衡软件提供的方式也不同,那么七层和四层区别在哪呢?为什么有的支持有的不支持呢?

负载均衡简介

负载均衡建立在现有网络结构之上,提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、增强网络数据处理能力、提高网络的灵活性和可用性。

简单来讲:负载均衡将大量的并发处理转发给后端多个节点处理,减少工作响应时间;处理完成后返回给负载均衡器,再返回给用户。目前负载均衡大多数用于提高诸如在Web服务器、FTP服务器和其他关键任务服务器上的Internet服务器陈股的可用性和可伸缩性。

负载均衡分类

  • 二层负载:一般是虚拟Mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。(mac)
  • 三层负载:一般采用虚拟IP地址方式,外部对虚拟的IP地址请求,负载均衡器接收后分配后端实际的IP地址相应。(ip)
  • 四层负载:在三层负载的基础之上,用ip+端口接收请求,再转发到对应的机器(tcp)
  • 七层负载:根据虚拟的URL或IP,主机名接收请求,再转向相应的处理服务器。(如http)

负载均衡算法

  • 轮询
  • 权重轮询
  • 随机
  • 权重随机
  • 响应速度
  • 最少连接数
  • 处理能力
  • DNS相应

四层负载

四层负载就是基于IP+Port的负载均衡;在三层负载的基础之上,通过发布三层的IP地址,然后加上四层的端口号,来决定哪些流量需要做负载均衡。 四层负载均衡器主要分析IP和TCP/UDP层,实现负载均衡;但是它不理解应用层协议,也就是我们常常提到的HTTP协议,其他协议如FTP、Mysql协议等。

支持四层负载的软硬负载均衡器

F5、nginx、lvs、haproxy

七层负载

七层负载均衡基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层负载就不可能有七层负载),再考虑应用层的特征,比如同一个web服务器的负载均衡,除了根据vip和80端口辨别是否需要处理的流量,还可以根据七层的URL、浏览器类别、语言来决定是否需要进行负载均衡。

七层负载均衡器除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息,实现七层负载均衡。此种负载均衡器能理解应用协议。(所以支持Mysql,RabbitMQ等协议的负载)

支持七层负载的软硬件负载均衡器

haproxy、nginx

总的来说,一般是lvs做四层负载;nginx做7层负载(默认只支持HTTP反向代理,可以考虑加入nginx_tcp_proxy_module模块实现对tcp的代理);haproxy比较灵活7层负载和四层负载都能做。

七层负载最关注的是Http协议,对其他协议关注度并不是很高,其他如Mysql、RabbitMQ等中间件的负载可以考虑使用四层负载,因为四层负载是基于IP+端口的负载,这个往往就够了。

四层和七层的对比

第一,技术原理上的区别

所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。

TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

151d79189edfa8a95801183ed1d59ff5.png

4层

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

4fb377a58ac87a1f0ea69457ddbefdb9.png

7层

第二,应用场景的需求

七层应用负载的好处,是使得整个网络更"智能化"。

对图片、静态资源做缓存、对header重写、对url重写、对请求进行校验、做黑白名单等等

总体对比

1.智能性 七层负载均衡由于具备OIS七层的所有功能,所以在处理用户需求上能更加灵活,从理论上讲,七层模型能对用户的所有跟服务端的请求进行修改。例如对文件header添加信息,根据不同的文件类型进行分类转发。四层模型仅支持基于网络层的需求转发,不能修改用户请求的内容。

2.安全性 七层负载均衡由于具有OSI模型的全部功能,能更容易抵御来自网络的攻击;四层模型从原理上讲,会直接将用户的请求转发给后端节点,无法直接抵御网络攻击。

3.复杂度 四层模型一般比较简单的架构,容易管理,容易定位问题;七层模型架构比较复杂,通常也需要考虑结合四层模型的混用情况,出现问题定位比较复杂。

4.效率比 四层模型基于更底层的设置,通常效率更高,但应用范围有限;七层模型需要更多的资源损耗,在理论上讲比四层模型有更强的功能,现在的实现更多是基于http应用。

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

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

相关文章

博弈论 斯坦福game theory stanford week 3.2_

title: 博弈论 斯坦福game theory stanford week 3-1 tags: note notebook: 6- 英文课程-15-game theory --- 博弈论 斯坦福game theory stanford week 3-1 习题 第 1 个问题 We say that a game is dominance solvable, if iterative deletion of strictly dominated strategi…

redis 值字符串前面部分乱码_redis key乱码

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":9,"count":9}]},"card":[{"des":"兼容Redis协议标准的、提供持久化的内存数据…

Hive的使用之脚本文件

好处 在实际开发中,遇到复杂的hivesql,在文件里先写好再执行,比直接在控制台写更高效,纠错,修改更方便,也易于后期维护。 [hadoophello110 ~]$ 模式 在hive没有启动的时候,非hive内&#xff0c…

nestjs swagger文档调用需要鉴权的接口

目标 nestjs经常需要设置一些鉴权(登录后)才能访问的接口,但是生成的swagger文档可以发起接口请求,文档发起的请求默认是不携带登录token的,所以需要移除swagger文档发起请求的守卫拦截。 nestjs守卫拦截设置见另一篇…

ajax预加载html seo,前端性能优化 — JS预加载和懒加载

JS预加载需求:有时我们需要实现例如快速快速切换页面、图片之类的功能时,能尽快的加载出我们所需的图片会极大提升用户体验,这时用预加载将图片先缓存到浏览器,用户使用需显示图片时无疑会顺畅很多。核心:当一个图片在…

面向对象、继承、抽象方法重载知识点整理

面向过程、面向对象 面向过程:从开始到结束自己独立完成 面向对象:将一个事物划分为单体来各自实现区域性的功能,最后通过调用组合完成 类、对象 类:某一些具有共同特征的物体 对象:指某一种具体的物体,属于…

python for循环n次_Python入门10 —— for循环

1.字符串依次取值 students [egon, lxx, alex] i 0 while i < 3: print(students[i]) i 1 2.针对循环取值操作&#xff0c;while循环并不擅长&#xff0c;于是python提供一个专门循环取值操作&#xff1a;for循环 students [egon, lxx, alex] for x in students: # 有几…

hive与依赖环境的交互

与linux交互命令 格式 在linux的命令前加上!&#xff08;英文感叹号&#xff09;&#xff0c;以;&#xff08;英文分号结尾&#xff09; 操作实例 !ls; !pwd; hive> !ls; app derby.log hadoop-2.7.2.tar.gz jdk-8u73-linux-x64.tar.gz metastore_db t.sql hive> !pw…

和平精英显示服务器人数太多,和平精英到底有多差 导致玩家纷纷国际服

原标题&#xff1a;和平精英到底有多差 导致玩家纷纷国际服和平精英上线以来争议不断&#xff0c;百分之九十九是对和平精英的各种不满&#xff0c;还有百分之一是喜欢和平精英&#xff0c;认为刺激战场已经免费给我们玩&#xff0c;让腾讯亏了很多钱&#xff0c;现在和平精英上…

python中的wx_配置 Python的wxWidgets可视开发环境 | 学步园

注&#xff1a;转载请注明出处 一、下载 Python 2.5.1 这一步是必须做的&#xff0c;下载 Python 语言的 SDK 下载地址(直接复制到迅雷)&#xff1a;点击下载 下载完成后安装 Python 2.5.1&#xff0c;注意安装路径中不要有空格&#xff0c;不然会引起一些问题。 二、下载 wxPy…

的write方法有哪些参数_向子进程传递大量数据的方法

如何传递大型数据给子进程昨天的一篇文章中&#xff0c;我们说到如果想向一个子进程传输多于32767个字符的数据&#xff0c;我们需要寻找其他的方法(而不是命令行参数)来实现。我们能想到的第一个方法是&#xff1a;WM_COPYDATA。当子进程创建并进入消息循环后&#xff0c;我们…

厉害了!中关村软件园人工智能军团有料有看点

人工智能已成为当下全球科技界的新热点&#xff0c;中外竞相攀登这座划时代的科技高峰。上月&#xff0c;国务院印发《新一代人工智能发展规划》&#xff0c;明确将人工智能作为未来国家重要的发展战略。《规划》提出前瞻布局新一代人工智能重大科技项目&#xff0c;到2030年中…

Hive的使用之hwi

概述 hwi是hive开发的网页形式查看数据。方便非专业人士使用。 安装步骤 1、下载hive源码包 地址&#xff1a;http://apache.fayea.com/hive/ apache-hive-2.1.0-src.tar.gz 2、打包war 解压apache-hive-2.1.0-src.tar.gz源码包&#xff0c;进入到 C:\Users\zengmg\Deskto…

c 服务器传输大文件,cend.me:不须经过服务器,直接点对点的文件传输免费服务...

要传送文件给远程的手机、平板、电脑等设备&#xff0c;通常的做法就是先将文件上传到服务器存放&#xff0c;然后再从服务器下载&#xff0c;这样的做法看似合理&#xff0c;但如果上传的同时就由远程的设备来接收&#xff0c;不要经过服务器&#xff0c;这样就能更节省上、下…

win10系统迁移后系统重装_win7/win10系统迁移到新SSD硬盘的方法

随着固态硬盘的普及&#xff0c;越来越多的朋友把电脑的硬盘换成了固态&#xff0c;原来的机械硬盘当数据盘使用&#xff0c;关于在固态硬盘中安装系统&#xff0c;那是简单的&#xff0c;和机械硬盘一样&#xff0c;当是对原来的系统比较重要&#xff0c;不能重装的朋友来说&a…

hive参数配置使用

概述 set命令设置hive的参数。 ${} 可以获取配置项的值&#xff0c;作为参数使用。 在启动hive时可以传入配置项启动。 hive参数初始化配置set命令~/.hiverc hive参数介绍 输入set&#xff0c;可以查看所有可设置项和现在设置项的值。 hive> set; 项太多了&#xff…

Thrift源码学习二——Server层

Thrift 提供了如图五种模式&#xff1a;TSimpleServer、TNonblockingServer、THsHaServer、TThreadPoolServer、TThreadSelectorServer ​​ TSimpleServer、TThreadPoolServer 属于阻塞模型 TNonblockingServer、THsHaServer、TThreadedSelectorServer 属于非阻塞模型 TServer…

linux top 命令可视化_25个Linux性能监控工具

一段时间以来&#xff0c;我们在网上向读者介绍了如何为Linux以及类Linux操作系统配置多种不同的性能监控工具。在这篇文章中我们将罗列一系列使用最频繁的性能监控工具&#xff0c;并对介绍到的每一个工具提供了相应的简介链接&#xff0c;大致将其划分为两类&#xff0c;基于…

base64是哪个jar包的_涨知识 | 用maven轻松管理jar包

前言相信只要做过 Java 开发的童鞋们&#xff0c;对 Ant 想必都不陌生&#xff0c;我们往往使用 Ant 来构建项目&#xff0c;尤其是涉及到特别繁杂的工作量&#xff0c;一个 build.xml 能够完成编译、测试、打包、部署等很多任务&#xff0c;这在很大的程度上解放了程序员们的双…

Hive数据类型

概述 Hive的内置数据类型可以分为两大类&#xff1a;(1)、基础数据类型&#xff1b;(2)、复杂数据类型。 基础数据类型 数据类型 所占字节 开始支持版本 TINYINT 1byte&#xff0c;-128 ~ 127 SMALLINT 2byte&#xff0c;-32,768 ~ 32,767 INT 4byte,-2,147,483,648 ~ 2,14…