带你进一步了解“负载均衡”

内容简介

  • 什么是负载均衡
  • 负载均衡相关算法
  • 常用的负载均衡技术
  • 负载均衡中源地址问题分析

什么是负载均衡:load balance

  • 简而言之,就是将工作分发到不同的处理者
  • 目的
    1. 优化资源使用
      • load balance有多种算法,可以调配工作的分发逻辑
    2. 最大化吞吐量(throughput)
      • scale out,在同一段时间内,多个处理者明显可以处理更多的请求
    3. 减少相应时间
      • 防止请求过多导致工作堆积
    4. 避免单点过载
      • 显而易见
    5. 增加系统稳定性和可用性
      • 观察到某个处理者fail之后,避免后续再分配工作给他
  • 所以,一个完整的负载均衡实例,应该包含一个balancer(请求接受者)和若干个server(我们称为后端服务器),balancer接收用户请求,并根据一定的算法,将请求转发给backend server,同时balancer应观察backend server的状态,及时将无法提供服务的backend server剔除出处理队伍
    • 通过“接收请求”、“转发”等词语可以看出,负载均衡是一个“传输”技术

负载均衡相关算法

  • 上文中提到“根据一定的算法,将请求转发”,那么到底些什么样的算法呢?以下以阿里云SLB为例,介绍其中提到的集中算法

RR(round robin)

  • 最简单的轮训,将到来的请求依次、平均的分发至后端服务器

WRR(weight round robin)

  • 即通过配置后端服务器的权重,并根据权重来分发请求
  • 其实就是根据权重占比,占比高的后端服务器将被分配更多的请求

WLC(weighted least connection)

  • 与WRR类似,但是使用当前后端服务器的active的连接作为权重

其他算法

  • 如果我们直接视客户端为balancer(是的,可以这么想),那么我们可以有client random load balancing,即客户端随机请求后端服务器中的一台
  • Persistence (stickiness)
    • 即保证:根据一定的策略(如客户端ip)每次请求都将被转发到统一台后端服务器上
  • RR、WRR算法中,balancer其实不用关注后端服务器的状态,而只根据自身的数据将请求分发即可,WLC中,balancer开始需要了解后端服务器状态(比如连接数)。实际上我们也可以根据当前后端服务器的负载(load)来转发请求,当然这需要后端服务器与balancer建立通讯

常用的负载均衡技术

  • 上文中提到,负载均衡是一个“传输”技术。根据OSI七层模型,我们也可以将负载均衡技术进行分类

layer 4 load balancer

  • 工作在传输层上
  • 典型应用(技术or软件): HAProxy、LVS
  • HAProxy:
    • 开源软件
    • 可以通过TCP、HTTP的流量转发
  • LVS
    • 一个十分重要的高可用、负载均衡框架,后续将详细介绍

layer 7 load balancer

  • 工作在应用层上
  • 典型应用(技术or软件): HAProxy、Nginx
  • Nginx

硬件负载均衡技术

  • 即通过物理设备的方式进行负载均衡
  • 典型产品: F5
    • 没有接触过此类产品,还并不了解相应具体的型号、操作方式
  • 但是其实是通过硬件来执行layer 4 load balancer

负载均衡中源地址问题分析

  • 在上文中我们不停的提到“转发”的概念,那么其中的“转发”涉及什么技术呢?转发过程中源、目的地址又是如何变化的呢?

7层转发(以nginx为例)

  • nginx提供对http协议的转发功能
  • 在http协议中,我们通过X-Forwarded-For这样的header来获取客户端真正的ip地址
    • 注意X-Forwarded-For并不是一个标准的http header
    • X-Forwarded-For可以记录多个proxy的ip:
      • X-Forwarded-For: client, proxy1, proxy2
      • 每经过一次转发,转发服务器都应该在X-Forwarded-For后加入被转发的ip
  • 所以后端服务器在通过nginx转发的http请求时可以通过“X-Forwarded-For”的字段来得到“源”地址
  • 问题在应用层被解决

4层转发

  • 棘手的是在4层转发中,我们可能需要对IP/TCP包进行修改,进而导致后端服务器无法得到客户端的真实ip
  • 具体实现仍在调研中,后续将结合LVS进行讲解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值