ITPub博客

首页 > 数据库 > 数据库开发技术 > 计算架构模式之负载均衡技巧

计算架构模式之负载均衡技巧

原创 数据库开发技术 作者:greencoatman 时间:2023-09-11 18:37:00 0 删除 编辑

负载均衡算法 - 轮询 & 随机

【基本原理】

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

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

【适应场景】

通用,无状态的负载均衡。

【优缺点】

1. 实现简单;

2. 不会判断服务器状态,除非服务器连接丢失。

【问题场景】

1. 某个服务器当前因为触发了程序 Bug 进入了死循环导致 CPU 负载很高,负载

均衡系统是不感知的,还是会继续将请求源源不断地发送给它。

2. 集群中有新的机器是32核的,老的机器是16核的,负载均衡系统也是不关注

的,新老机器分配的任务数是一样的。

负载均衡算法 - 加权轮询

【基本原理】

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

【适应场景】

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

【优缺点】

1. 实现复杂,按照权重计算;

2. 不会判断服务器状态,除非服务器连接丢失;

3. 权重配置不合理可能导致过载。

【问题场景】

2020年采购的机器 CPU 核数是2019年采购的机器1倍,运维直接配置了2倍权重,

结果导致新机器全部过载。

负载均衡算法 - 负载优先

【基本原理】

负载均衡系统将任务分配给当前负载最低的服务器,这里的负载根据不同的任务

类型和业务场景,可以用不同的指标来衡量。

【适应场景】

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(缓存场景)

负载均衡算法举例 - Nginx


负载均衡算法举例 - LVS

业务级别负载均衡介绍

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

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

业务负载均衡技巧 - Cookie

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

业务负载均衡技巧-自定义HTTPHeader

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

1.如果客户端位于加利福尼亚州山景城,则负载平衡器会添加Header:X-Client-Geo-Location:US,MountainView.

2.X-Client-Version:3.0.0,X-Client-Platform:iOS11,X-Client-Channel:Huawei.

业务负载均衡技巧-服务器性能估算

原文作者:二进制跳动;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-07-08

  • 博文量
    312
  • 访问量
    141133