负载均衡算法

简介: 负载均衡算法包括随机、轮询、最小活跃数、源地址哈希与一致性哈希。随机按概率分配,可加权重适配性能差异;轮询顺序调度,加权后按权重分配请求;最小活跃数优先调用负载低的服务器;源地址哈希确保同一IP固定访问某节点;一致性哈希减少节点变动时的数据迁移,提升系统稳定性。

随机
调用关系如上图(简化了公网->防火墙处理),适合场景:所有服务器性能基本一致,且无超阈值流量。
如果存在部分机器性能更优,此时可以在随机基础上增加权重,升级为:随机权重算法。
轮询
轮询不再是在多台服务器随机挑选,而是按照顺序一个个排队调用,调用完再插入队尾等待下一次调用
同加权随机,轮询也同样存在加权轮询的场景,此时流量调度将发生如下变化:
此处逻辑相对复杂,笔者在此说出主要思路,后续有时间补充伪代码,感兴趣的可以参照Dubbo的实现
如上有服务器servers=[A,B],对应权重weights=[3,1],总权重为4。我们可以理解为有4台服务器,3台A,1台B,一次调用过来的时候,需要按顺序访问。如有5次调用,调用顺序为AAABA。
选举思路如下:
次数
WeightedRoundRobin
选择结果
选择后的WeightedRoundRobin
1
3、1
A
2、1
2
2、1
A
1、1
3
1、1
A
0、1
4
0、1
B
0、0(等于0-0时复原成:3、1)
5
3、1
A
2、1
最小活跃数
指:将当前请求转发到连接数/请求数最少的机器上,其特点是根据服务器实时运行状态动态分配,保障服务负载不会过饱和。如下图当请求4过来时,Nginx判断目前服务器1连接数>服务器2,故4会请求到服务器2上:
源地址哈希
根据请求源IP哈希计算得到一个数值,用该数值在候选服务器列表的进行取模运算,得到的结果便是选中的服务器,此操作可以保证固定IP的请求总是到某一台服务器上,伪代码如下:
源地址哈希伪代码
Java
运行代码
复制代码
1
2
3
4
5
private K doSelect(List nodes, String ip) {
int length = nodes.size();
int index = hash(ip) % length;
return nodes.get(index);
}
一致性哈希
相同的请求尽可能落到同一个服务器上。一致性哈希解决稳定性问题,可以将所有的存储节点排列在首尾相接的 Hash 环上,每个 key 在计算 Hash 后会 顺时针找到临接的存储节点存放。而当有节点加入或退出时,仅影响该节点在 Hash环上顺时针相邻的后续节点。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
Dubbo Java 应用服务中间件
Seata常见问题之seata-server consul 启动后,在 consul 看不到如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
SQL 关系型数据库 MySQL
【MySQL】一文带你搞懂MySQL中的各种锁
【MySQL】一文带你搞懂MySQL中的各种锁
1317 0
|
3月前
|
数据采集 自然语言处理 搜索推荐
智能客服大模型微调:从基础模型到核心产品的全流程
本文详解电商智能客服大模型微调全流程:从需求分析、高质量数据准备(SFT+偏好数据),到ChatGLM-6B模型的LoRA监督微调与DPO对齐,再到RAG知识增强及FastAPI部署。附实操参数与效果评估标准,新手可快速复现。(239字)
|
2月前
|
人工智能 自然语言处理 Linux
自然语言到可运行代码:OpenClaw技术原理、部署及大模型api配置与工程化应用指南
人工智能在代码生成领域的落地,正在系统性改变软件开发的工作流程。OpenClaw作为一类能够理解自然语言需求并输出完整代码结构的AI辅助工具,已经从概念阶段进入实用阶段。它能够接收用户以日常语言描述的功能需求,自动生成函数、类、接口乃至完整模块,在规范写法、减少重复劳动、提升交付速度方面表现突出。但与此同时,这类工具也存在明确的能力边界与使用前提,需要开发者以理性、审慎的方式接入日常开发流程。本文从技术原理、实际体验、效率价值、职业影响、学习门槛与未来趋势出发,完整呈现OpenClaw的真实定位,并提供2026年阿里云、Windows 11、macOS、Linux四大环境的标准化部署流程,同时
679 0
|
4月前
|
设计模式 人工智能 程序员
【架构演进】智能体来了(西南总部)深度解析:多智能体协作(Multi-Agent)系统的设计哲学与工程实践
本文探讨AI架构从单体大模型向多智能体系统(MAS)的范式跃迁,基于“智能体来了(西南总部)”技术研判,解析角色解耦、消息路由与共享记忆等核心设计,揭示如何构建高效协作的“数字蜂群”,推动分布式AI从理论走向工程化落地。
494 2
|
3月前
|
机器学习/深度学习 运维 监控
数据不出门,也能一起“卷模型”——聊聊隐私保护下的联邦学习:原理与工程实践
数据不出门,也能一起“卷模型”——聊聊隐私保护下的联邦学习:原理与工程实践
422 4
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
495 12
|
6月前
|
安全 开发者 Windows
Win10/11系统永久暂停更新教程,避免频繁更新 Win 系统出问题,一个小工具就能搞定。
Win10/11系统永久暂停更新教程,避免频繁更新 Win 系统出问题,一个小工具就能搞定。
3120 7
|
9月前
|
机器学习/深度学习 算法 物联网
基于WOA-CNN-LSTM-Attention、CNN-LSTM-Attention、WOA-CNN-LSTM、CNN-LSTM、LSTM、CNN6模型多变量时序预测一键对比研究(Matlab代码)
基于WOA-CNN-LSTM-Attention、CNN-LSTM-Attention、WOA-CNN-LSTM、CNN-LSTM、LSTM、CNN6模型多变量时序预测一键对比研究(Matlab代码)
350 0

热门文章

最新文章