负载均衡架构设计技巧

news2025/7/4 11:37:29

负载均衡算法

轮询&随机

在这里插入图片描述

基本原理

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

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

适用场景

通用,无状态的负载均衡

优缺点

  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)/单个服务器性能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面向对象---尚硅谷Java入门视频学习

1.类和对象 1.1创建过程 对象是将内存地址赋值给了变量,所以变量其实引用了内存中的对象,所以称之为引用变量,而变量的类型(即类)称之为引用数据类型。 堆(Heap),此内存区域的唯…

关于pytorch的数据处理-数据加载Dataset

目录 1. 数据加载 2. Dataset __init__ __getitem__ __len__ 测试一下 完整代码 3. Dataset - ImageFolder 1. 数据加载 最近在使用 Unet 做图像分割,设计到 处理数据有关的工作,查了点资料,做一些简单的总结 在pytorch 中&#x…

Thinkphp安装报错解决办法

跟着官方文档的步骤安装thinkphp报错该如何解决: 前言 ThinkPHP无需安装过程,但是需要把ThinkPHP框架放入WEB运行环境(前提是你的WEB运行环境没有问题)。 一、Thinkphp安装以及报错解决方式 Thinkphp官网:安装ThinkP…

Mysql为何不推荐写多表SQL

前言 在大部分情况下,单表并不是比多表快单表优势在于理解成本与可控性有时候你觉得单表SQL不好写的时候,你改更新的是表结构 现状 在我们学习MySql的路程之中,估计不少人告诫我们不要写长语句。 至于为什么,确实很少人提起。 …

2.6 用一套万能文案公式来拆解4个小红书爆文案例【玩赚小红书】

公式细分人群他们的痛点数字干货分享情感共鸣 我们一个一个来看。 ​ ​ 一、《9平次卧小房间,再见了传统榻榻米(附户型图)》 家装类:避坑/攻略/小价钱装出大效果/装修效果拔群 标题直接点出了目标人群的需求:如何…

XSS进阶之CSP绕过

目录预备知识实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识 1.了解Javascript、PHP和CSP的一些特性,比如“strict-dynamic”。 2.CSP:实质就是白名单制度,它规定哪些外部资源可以加载和执行。它的实现和执行全部由浏览器完成。资…

python实战指西<1>pygame安装,以及vscode

目录 1,安装pygame 1.1,(如果前一个没反应的化) 1.2如果飘红字 1,检查是否开了网络代理(不要开) 2,检查是否有pip模块更新需要 2.这里顺便记录一下vscode 蛇蛇的环境搭载 2.1首…

Postgresql实验系列(4)SIMD提升线性搜索性能24.5%(附带PG SIMD完整用例)

概要 接上一篇《Postgresql引入SIMD指令集》 PG引入SIMD执行集后具体有多大性能提升?本篇抽取PG的simd库,对比线性搜索场景的性能: 测试场景(文章最后提供完整程序) 构造一个存有14亿数字的数组 uint32 cnt 14100…

【python3】3.函数、类、模块

2022.11.15 本学习内容总结于莫烦python:3.函数、类、模块 https://mofanpy.com/tutorials/python-basic/interactive-python/function1. Function 函数 我常会重复写一些功能,比如查询文件时间,查询文件名字等等.后续我只需要引用到这个功能&#xff0…

Flink架构重要概念解析-超详理解

文章目录💎 1.1 系统架构1.1.1 整体构成1.1.2 作业管理器(JobManager)1.1.3 任务管理器(TaskManager)🚀1.2 作业提交流程1.2.1 高层级抽象视角1.2.2 独立模式(Standalone)1.2.3 YARN…

网页数据采集系统-怎样利用爬虫爬网站数据

随着社会不停地发展。人们也是越来越离不开互联网,今天小编就给大家盘点一下免费的网页数据采集系统,只需要点几下鼠标就能轻松爬取数据,不管是导出excel还是自动发布到网站都支持。详细参考图片一、二、三、四! 企业人员 通过爬…

【直播预告】相机模型与标定——Real world超级公开课

导言 《Realworld超级公开课》是奥比中光3D视觉开发者社区打造的品牌活动之一,聚焦于3D视觉传感技术。每期课程邀请奥比中光及生态合作伙伴的技术专家,以线上线下相结合的授课形式,面向高校与人工智能企业的开发者,分享3D视觉技术…

线程的“结束”

【一道概率很高的面试题】: 如何优雅的结束一个线程? 上传一个大文件,正在处理费时的计算,如何优雅的结束这个线程呢? 【stop方法】: 【为何不建议使用stop呢?】: 因为很容易产生…

【附源码】计算机毕业设计JAVA成绩分析系统

【附源码】计算机毕业设计JAVA成绩分析系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

ORA-01940 无法删除当前已连接的用户之解决方案(脚本)

第一部分:配置数据库连接 1. 安装ODBC yum -y install unixODBC unixODBC-devel 2. 安装Oracle-instantclient #以下所有操作使用root账号执行 #创建目录 mkdir -p /opt/oracle cd /opt/oracle #下载odbc安装包 wget https://download.oracle.com/otn_software…

计算机毕业设计ssm+vue基本微信小程序的好物推荐分享系统

项目介绍 我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,好物分享系统小程序被用户普遍使用,为方便用户能够可以随时进行好物分享系统小程序的数据信息管理,特开发了基于好物分…

做食品能入驻Lazada吗?带你解锁东南亚当地热销及需求食品系列

中国的电商领域已经趋于饱和状态,中国食品电商领域已经呈现出存量的趋势了,例如:良品铺子、三只松鼠、百草味、口水娃、盼盼等国内知名品牌已经占比了国内大部分的市场份额,跟着巨头抢市场 无疑是很难的,那么中国这么多…

红外线热像仪的热成像质量介绍

摘要 毫无疑问,你在过去几年的某个时候,购买了数位相机来更换旧的胶卷相机。你的购买可能受到你的信念的影响,即在尝试判断提供的所有相机选择之间的图像质量时,像素数是最重要的规格。 任何阅读过消费者报告及其对数位相机的详…

CVE-2020-1472-ZeroLogon复现

CVE-2020-1472-ZeroLogon复现 简介 Netlogon使用的AES认证算法中的vi向量默认为0,导致攻击者可以绕过认证,同时其设置域控密码的远 程接口也使用了该函数,导致可以将域控中保存在AD中的管理员password设置为空 影响版本 Windows Server 2…

大牛耗时两年完成的实战手册。Elasticsearch实战,掌握这些刚刚好!

记得刚接触Elasticsearch的时候,没找啥资料,直接看了遍Elasticsearch的中文官方文档,中文文档很久没更新了,一直都是2.3的版本。最近又重新看了遍6.0的官方文档,由于官方文档介绍的内容比较多,每次看都很费…