云原生基础 -- Load Balancer

devtools/2025/2/22 3:26:10/

本文将介绍 Load balancer 的意义、原理以及分类

意义

Load balancer 即网络负载均衡,是将流量进行统一分配均衡,分到到一组后端服务的应用。对部署负载均衡的应用来说,具有以下意义:

  • 可用性:所有流量只分发到单台后端服务器,容易导致服务宕机、服务不稳定;如果有多台服务器共同承担流量,能提高服务的稳定性;
  • 可扩展性:通过在一组后端服务的前端设置负载均衡器,可以使得后端服务是可伸缩、可扩展的,可以根据流量情况、重点时段进行服务的关闭和开启;
  • 安全性:在后端服务前的负载均衡器,可以作为一层网络安全屏障,对恶意流量进行识别,暂停到过热、不稳定的后端机器的流量,识别对某台机器的恶意攻击并进行隔离;
  • 可观察性:所有应用流量都会流经负载均衡器,可以进行流量的日志记录;根据日志观察流量的特点,并针对性地进行服务改进和升级;

Load Balancer

原理

Load Balance 既然是对网络流量的负载均衡,那么根据需要“均衡”的流量的层次,分为四层负载均衡和七层负载均衡,即按照计算机网络分层原理中的传输层、应用层进行流量“均衡”:

  • 四层负载均衡:根据传输层协议(TCP、UDP、FTP)的资源特征进行流量“均衡”,比如根据客户端IP、目标IP分发流量到后端,不管传输的应用层内容,只是进行流量的“均衡”分配;
  • 七层负载均衡:根据应用层的特征进行流量分配,比如根据URI、HTTP-Headers、Session进行流量分配,这样使得流量尽量“均衡”到后端,也可以通过参数设置保证某些连贯请求由一个机器连续处理(高效利用单台机器的缓存),避免连贯请求消耗多台机器的资源;

无论是四层还是七层负载均衡,都需要解决一个核心问题:如何分配流量到一组后端服务,即一个请求到来后如何选择转发的后端服务器。主要有以下常用方法:

  • 轮询:对一组服务器进行轮询,每台后端服务处理的流量都相等;
  • 加权与阈值:根据后端服务的性能,静态或动态设定权值与阈值,根据权值分配流量,根据阈值限定最高流量;这样保证“能者多劳”,安全均衡;
  • 最少连接数/最快处理时间:先随机选取一个子组的后端服务,然后根据当前这组机器的最少连接数或最快平均处理时间,选定流量分配目标;
  • URI Hash:根据请求的URI特征进行哈希,根据哈希值映射到某台机器,并记录这个URI->哈希值的映射,后面的流量进行复用;这样可以使得某类请求(某些API、某些资源请求),专门由某台机器处理,避免所有机器缓存某项资源(如某张图片的获取,由一台后端服务缓存即可);
  • IP Hash:根据请求的客户端IP进行哈希,根据哈希值映射到后端机器;与 URI Hash 相似,这样可以使得某个客户的连贯请求由单台机器处理,该机器处理并缓存该客户的数据,避免多台机器缓存相同的客户数据,避免资源浪费;
  • 哈希环:构建一个环数值域,将后端机器根据IP或其他特征映射到环上;流量到来时也根据特征映射到环上,在环上顺时针的最近的机器即是均衡分配的目标后端;这样可以更方便地调整后端服务的权值、阈值等,也可以方便扩展、删除机器,调整环数据以及哈希算法即可;

分类

根据实际应用场景,负载均衡有以下类别:

  • 应用负载均衡:即对一个应用部署多台后端服务,通过负载均衡器进行管理,增强应用性能;
  • 全球服务负载均衡:针对广地域(全球)用户,部署多地服务器,并利用负载均衡器将流量分配到距离用户较近的服务器,提升服务速度和质量(类似CDN功能);
  • DNS负载均衡:将多个域名进行统一管理,使得多个域名对应的多个服务具有统一管理器与流量监控、分配器;
  • 内部负载均衡:在内网中使用,通常用于内网资源管理等;

http://www.ppmy.cn/devtools/160848.html

相关文章

跟着 Lua 5.1 官方参考文档学习 Lua (5)

文章目录 2.10 – Garbage Collection2.10.1 – Garbage-Collection Metamethods2.10.2 – Weak Tables 2.10 – Garbage Collection Lua performs automatic memory management. This means that you have to worry neither about allocating memory for new objects nor abo…

《Operating System Concepts》阅读笔记:p50-p61

《Operating System Concepts》学习第 9 天,p50-p61 总结,总计 12 页。 一、技术总结 1.system call (1) 定义 The primary interface between processes and the operating system, providing a means to invoke services made available by the o…

Wireshark使用介绍

文章目录 Wireshark介绍Wireshark使用工作模式介绍1. 混杂模式(Promiscuous Mode)2. 普通模式(Normal Mode)3. 监视模式(Monitor Mode) 界面分区捕获过滤器语法基本语法逻辑运算符高级语法使用示例捕获过滤…

从零开始构建一个语言模型中vocab_size(词汇表大小)的设定规则

从零开始构建一个语言模型就要设计一个模型框架,其中要配置很多参数。在自然语言处理任务中,vocab_size(词汇表大小) 的设定是模型设计的关键参数之一,它直接影响模型的输入输出结构、计算效率和内存消耗。 本文是在我前文的基础上讲解的:从零开始构建一个小型字符级语言…

C++:使用 SFML 创建强化学习迷宫场景

在强化学习中,迷宫通常作为一种环境,供智能体(Agent)在其中进行探索和学习。通过设计合适的环境,我们可以训练模型让其通过迷宫找到最优路径。本文将介绍如何使用 C 和 SFML 库来创建一个迷宫场景,并为强化…

Office word打开加载比较慢处理方法

1.添加safe参数 ,找到word启动项,右击word,选择属性 , 添加/safe , 应用并确定 2.取消加载项,点击文件,点击选项 ,点击加载项,点击转到,取消所有勾选,确定。

蓝桥杯学习大纲

(致酷德与热爱算法、编程的小伙伴们) 在查阅了相当多的资料后,发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以,干脆自己整理一篇,欢迎大家补充! 一、蓝桥必备高频考点 我们以此为重点学习…

美团MTSQL特性解析:技术深度与应用广度的完美结合

MTSQL作为一款高性能、高可用的关系型数据库,在业界引起了广泛关注。本文将从技术角度对美团MTSQL的核心特性进行解析,力求以通俗易懂的方式展现其技术亮点。 一、异步化:提升性能与可靠性 1. Binlog删除与Relaylog优化 美团在Binlog和Re…