背景

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

负载均衡简介

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

简单来讲:负载均衡将大量的并发处理转发给后端多个节点处理,减少工作响应时间;处理完成后返回给负载均衡器,再返回给用户。目前负载均衡大多数用于提高诸如在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的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

4层

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

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

7层

第二,应用场景的需求

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

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

总体对比

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

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

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

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

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

  1. 网页加载出现没有合适的负载均衡器_终于讲清楚了,什么是负载均衡(Load balancing)...

    什么是负载均衡(Load balancing) 在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战.这时候我们就会想到通过扩容的方式来 ...

  2. 网页加载出现没有合适的负载均衡器_gRPC实战--Kubernetes中使用envoy负载均衡gRPC流量...

    许多刚刚接触gRPC用户或是刚刚把gRPC服务部署到kubernetes中感到惊讶的是,发现Kubernetes的默认负载均衡通常无法与gRPC一起使用.例如,当您使用一个简单的gRPC Node.j ...

  3. 如何提升网页加载性能

    摘自 https://github.com/xitu/gold-miner/blob/master/TODO/building-a-shop-with-sub-second-page-loads-le ...

  4. web前端 网页加载 性能优化大全

    web前端 性能优化 - - 如何提高网页加载速度 文章目录 web前端 性能优化 --- --- 如何提高网页加载速度 1. 减少DNS查找 2. 使用CDN托管资源 3. 减少Http请求 浏览器 ...

  5. 移动网站性能优化:网页加载技术概览

    移动网站性能优化:网页加载技术概览 2013/08/27 | 分类: IT技术 | 0 条评论 | 标签: WEB开发, 性能优化, 移动 分享到: 47 本文由 伯乐在线 - 伯乐在线读者 翻译自  ...

  6. android测量网页加载时间

    如果被测浏览器用的是webkit内核,或者是自己写的程序,总之就是如果可以获取对应的webview对象:可以通过重写webviewclient来获取加载时间.webviewclient中的onPage ...

  7. css引入外部字体的压缩方法,解决网页加载太慢

    最近在做网站的时候,发现大多都是常见字体,想用@font-face引入一些特殊的字体,发现文件太大,动不动几十兆,影响网页加载速度,在网上找了半天,发现大多都是使用一款名字为字蛛的字体压缩器,http ...

  8. WordPress 开启 Gzip 为网页加载提速减少响应时间

    2019独角兽企业重金招聘Python工程师标准>>> 大家都晓得,开启Gzip能极大地压缩文本数据的体积.对于使用 WordPress 的博主来说,开启服务器的GZip压缩是一个为 ...

  9. Tomcat网页加载速度过慢的解决方法

    Tomcat网页加载速度过慢的解决方法 参考文章: (1)Tomcat网页加载速度过慢的解决方法 (2)https://www.cnblogs.com/magmell/p/7086229.html 备 ...

最新文章

  1. Log4J配置方式Java工程测试
  2. centos 7 安装tomcat
  3. 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)
  4. 分析脚本文件AndroidInitProcess分析心得(1)
  5. 浅析Linux开发工具之gcc/g++
  6. python中list怎么用_python中list(列表)的使用方法总结(图文)
  7. jmeter验证WEB页面的href链接请求
  8. antdesign 柱状图_以Ant Design为例:看B端设计的基本套路
  9. 新建jsp报错“The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path”...
  10. 运维人员如何学好shell脚本编程
  11. Dynamic Rankings(整体二分)
  12. 如何更改通达OA附件的存储目录
  13. 表格票据识别人工智能OCR
  14. Oracle Database Link基础
  15. 软考软件设计师备考详细介绍
  16. python绘制箭头_python如何绘制坐标箭头?
  17. git --allow-unrelated-histories
  18. codeforcesf382D-厉害的我的哥(德巴赫)
  19. 在javascript中使用纯函数处理副作用
  20. excel中插入文档

热门文章

  1. 1445.32php,nginx实现mysql的负载均衡
  2. usb接口供电不足_1个USB接口变成4个?什么东西那么“牛”?请你花2分钟了解一下...
  3. ef mysql 的坑_C# EF 与 MySql 的那些坑
  4. python灰色关联度分析代码_灰色关联分析法步骤 - osc_uwnmtz9n的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. php java执行linux_java_java执行Linux命令的方法,本文实例讲述了java执行Linux命 - phpStudy...
  6. python是强定义语言吗_python是强类型语言吗
  7. 苹果11是高通基带吗_最强对抗!小米11对抗三星、苹果华为等最高旗舰|喜欢小米吗?...
  8. android图片浏览远近,快图浏览编辑图片方法介绍_怎么编辑图片_3DM手游
  9. 16张图带你吃透高性能 Redis 集群
  10. innobackup备份恢复实操步骤--gtid复制(1)(1)