分布式系统_负载均衡

概述

大型网站都要面对庞大的用户量,高并发,海量数据等挑战。

为了提升系统整体的性能,可以采用垂直扩展和水平扩展两种方式。

  • 垂直扩展:从单机角度扩展,增加单机硬件(CPU、内存、磁盘)处理能力
  • 水平扩展:通过集群来分担流量。集群中的应用服务器通常被设计为无状态,用户可以请求任何一个节点

负载均衡就是将用户的访问请求,通过某种算法,分发到集群中的节点

目标是尽力将网络流量平均分发到多个服务器上

作用

高并发:提高集群的并发处理能力(吞吐量)

伸缩性:添加或减少服务器数量,由负载均衡分发控制,使集群具备伸缩性

高可用:负载均衡器可以监控候选服务器,服务不可用时自动跳过,分发给可用的服务器。

安全防护:有些负载均衡软件或硬件提供了

硬件负载均衡

在定制处理器上运行的独立负载均衡服务器,价格昂贵

功能强大、性能强悍、安全性高

成本昂贵、扩展性差

软件负载均衡

应用广泛,主流产品:Nginx、HAProxy、LVS

  • LVS可以作为四层负载均衡器,性能比Nginx好
  • HAProxy可以作为HTTP、TCP负载均衡器
  • Nginx、HAProxy可以作为四层或七层负载均衡器

扩展性好、成本低廉

性能略差

七层负载均衡

根据访问用户的HTTP请求头、URL信息将请求转发到特定的主机

DNS重定向

复杂业务不适合用

大型网站一般用DNS负载均衡器作为第一级负载均衡手段

工作原理:基于DNS查询缓存,按照负载情况返回不同服务器的IP地址

优点:使用简单、提高性能

缺点:可用性差、扩展性低、维护性差

HTTP重定向

原理:根据HTTP请求计算出一个真实的服务器地址,将该服务器地址写入HTTP重定向响应中,返回给浏览器,由浏览器重新访问

优点:方案简单

缺点:性能较差、降低搜索排名

使用较少

反向代理

以代理服务器接受网络请求,将请求转发给内网中的服务器,并将内网中的服务器上得到的结果返回给请求的客户端

主流产品:Nginx、Apache

正向代理:用户主动发起对代理服务器的请求,代理服务器访问外网,再返回给客户端

反向代理:发生在服务端,用户不知道被代理

原理:代理服务器上设置好负载均衡规则,反向代理服务器拦截到指定的域名或IP,根据负载均衡算法,将请求分发到候选服务器上(分发请求失败3次以上,分发到其他服务器上)

优点:支持多种负载均衡算法、可以监控服务器

缺点:额外转发开销、增加系统复杂度

四层负载均衡

基于IP地址和端口进行请求转发

修改IP地址

负载均衡器修改目标IP地址,起到中介的作用。

修改MAC地址

数据链路层负载均衡

负载均衡算法

随机算法

请求随即分发到候选服务器

调用量越大,负载越均衡

加权随机算法

在随机算法的基础上,按照概率调整权重

轮询

将请求依次分发到候选服务器

适合场景:各服务器处理能力相近,且各事务工作量差异不大

加权轮询

在轮询的基础上,增加权重调节转发服务器的请求数目

性能高、处理速度快的节点应该设置更高的权重

最小活跃数

将请求分发到连接数/请求数最少的候选服务器

特点:动态分配

场景:对系统负载较为敏感或请求连接时长相差较大的场景

加权最小活跃数

在最小活跃数的基础上,根据服务器的性能为每台服务器分配权重,再根据权重计算出每台服务器能处理的连接数。

源地址哈希

根据请求源IP,通过哈希计算得到一个数值,在候选服务器列表上取模运算

保证同一IP的客户端请求转发到同一个服务器上

一致性哈希

相同的请求尽可能落到同一个服务器上

相关推荐
摸鱼仙人~19 分钟前
大模型文章生成的风格个性化与多文体写作:一套可落地的方法论
linux·运维·服务器
xybDIY22 分钟前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws
慕容雪_30 分钟前
运维笔记-网络【属性】-【共享】中没有【家庭网络连接(H)】的选项
运维·网络·共享
AC赳赳老秦1 小时前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek
学Linux的语莫1 小时前
linux的root目录缓存清理
linux·运维·服务器
oMcLin1 小时前
如何在 SUSE Linux Enterprise Server 15 上部署并优化 K3s 集群,提升轻量级容器化应用的资源利用率?
linux·运维·服务器
Run Out Of Brain1 小时前
解决nginx代理配置下wordpress的 /wp-admin/返回 302 重定向到登录页问题
运维·nginx
Ghost Face...2 小时前
深入解析YT6801驱动模块架构
linux·运维·服务器
线束线缆组件品替网2 小时前
Amphenol LTW 防水线缆 IP67/IP68 结构解析
运维·网络·人工智能·汽车·硬件工程·材料工程
放寒假脚后跟v2 小时前
Pod 的 YAML 文件中 exitCode 字段的具体含义、不同取值代表的场景
运维·云原生·容器·kubernetes·k8s