负载均衡架构设计技巧
创始人
2024-01-21 06:46:53
0

负载均衡算法

轮询&随机

在这里插入图片描述

基本原理

轮询:将请求依次发给服务器

随机:将请求随机发给服务器

适用场景

通用,无状态的负载均衡

优缺点

  1. 实现简单
  2. 不会判断服务器状态,除非服务器连接丢失

问题场景

  1. 某个服务器当前因为触发了程序Bug进入了死循环导致CPU负载很高,负载均衡系统是不感知的,还是会继续将请求源源不断发给它
  2. 集群中有新的机器是32核的,老的机器是16核的,负载均衡系统也是不关注的,新老机器分配的任务数是一样的

加权轮询

在这里插入图片描述

基本原理

按照预先配置的权重,将请求按照权重比例发送给不同的服务器

适用场景

服务器的处理能力有差异,例如新老服务器搭配使用

优缺点

  1. 实现复杂,按照权重计算
  2. 不会判断服务器状态,除非服务器连接丢失
  3. 权重配置不合理可能导致过载

问题场景

2020年采购的机器CPU核数是2019年采购的机器的1倍,运维直接配置了2倍权重,结果导致新机器全部过载

具体算法

算法1:权重=请求数量

例如:给服务器1发送40个请求,然后再给服务器2发送40个请求,然后再给服务器3发送20个请求

实现简单,但服务器资源利用可能不均衡,会出现毛刺现象,例如配置了[200,50, 20],但如果配置[2, 2, 1]的话,这种算法运行良好

算法2:权重概率

将所有服务器的权重加起来,然后计算各个服务器的分配概率,用随机数区间来做分配

例如:服务器[0~39],服务器2[40~79],服务器3[80~99],生成0~99的随机数,落入哪个区间就用那个服务器

算法3:权重动态调整

Nginx 的实现,兼顾服务器故障后的慢启动

负载优先

在这里插入图片描述

基本原理

负载均衡系统将任务分配给当前负载最低的服务器,这里的负载根据不同的任务类型和业务场景,可以用不同的指标来衡量

适用场景

  1. LVS 这种4层网络负载均衡设备,可以以“连接数”来判断服务器的状态,服务器连接数越大,表明服务器压力越大
  2. Nginx 这种7层网络负载系统,可以以“HTTP 请求数” 来判断服务器状态(Nginx 内置的负载均衡算法不支持这种方式,需要进行扩展)

优缺点

  1. 实现复杂,需要管理或者获取服务器状态
  2. 可以根据服务器状态进行负载均衡

性能优先

在这里插入图片描述

基本原理

负载均衡系统将任务分配给当前性能最好的服务器,主要是以响应时间作为性能衡量标准

适用场景

Nginx 这种7层网络负载系统,可以以“HTTP 响应时间” 来判断服务器状态(Nginx 内置的负载均衡算法不支持这种方式,需要进行扩展)

优缺点

  1. 实现复杂,需要统计请求处理时间,需要耗费一定的CPU运算资源
  2. 可以根据性能进行负载均衡
  3. 如果服务器响应不经过负载均衡器,则不能应用这种算法

Hash

在这里插入图片描述

基本原理

基于某个参数计算Hash值,将其映射到具体的服务器

适用场景

  1. 有状态的任务,例如购物车
  2. 任务是分片的,例如某个用户的请求只能在某台服务器处理

优缺点

  1. 实现简单
  2. 不会判断服务器状态,除非服务器连接丢失

常见Hash健

  1. 用户IP地址(session场景)
  2. URL(缓存场景)

业务级别负载均衡

介绍

在这里插入图片描述

通用负载均衡算法是基于请求的,业务级别的负载均衡是基于业务内容的,更灵活

例如蚂蚁的 LDC 架构,腾讯的 SET 单元化架构

案例:蚂蚁LDC架构

一次路由

箭头1:对于应该在本 IDC 处理的请求,直接映射到对应的 RZ 即可;

箭头2:不在本 IDC 处理的请求,Spanner 可以转发至其他 IDC 的Spanner。

二次路由

对于有些场景,A 用户的一个请求可能关联了对 B 用户数据的访问,比如 A转账给 B,A 扣完钱后要调用账务系统去增加 B 的余额。这时候就涉及到:

箭头3:跳转到其他 IDC 的 RZone;

箭头4:跳转到本 IDC 的其他 RZone。

数据路由

RZ 访问哪个数据库,是可以配置的,对应图中箭头5

技巧

Cookie

在这里插入图片描述

应用场景

一般用于session保持、购物车、下单等场景

自定义HTTP Header

在这里插入图片描述

可以通过X-来自定义HTTP header,可以服务器下发,也可以直接带上本地信息。这种用法被IETF在2012年6月发布的RFC5548中明确不推荐,虽然RFC已经不推荐使用带X前缀的http头部,但是不推荐不代表禁止,目前应用广泛

应用场景

一般用于精细化的地址位置、机房级别、版本、平台、渠道等负载均衡,例如:

  1. 如果客户端位于加利福尼亚州山景城,则负载平衡器会添加 Header:X-Client-Geo-Location:US,Mountain View
  2. X-Client-Version: 3.0.0, X-Client-Platform:iOS 11, X-Client-Channel:Huawei

HTTP query string

在这里插入图片描述

基本实现

query string包含负载均衡信息

优缺点

  1. 实现简单
  2. 对业务侵入较大,不如用Cookie

服务器性能估算

接口性能

  1. 线上业务服务器接口处理时间分布为20~100ms
  2. 平均大约为50ms
  3. 访问存储或者其他系统接口是主要的性能消耗点

服务器性能

线上单个服务器(32核)性能大约是300~1000 TPS/QPS

服务器数量

服务器数量=(总TPS+QPS)/单个服务器性能

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...