高性能之负载均衡

文章目录

负载均衡

静态负载均衡算法

随机和加权法

随机法是最简单粗暴的负载均衡算法。

如果没有配置权重的话,所有的服务器被访问到的概率都是相同的。如果配置权重的话,权重越高的服务器被访问的概率就越大。

未加权重的随机算法适合于服务器性能相近的集群,其中每个服务器承载相同的负载。加权随机算法适合于服务器性能不等的集群,权重的存在可以使请求分配更加合理化。

不过,随机算法有一个比较明显的缺陷:部分机器在一段时间之内无法被随机到,毕竟是概率算法,就算是大家权重一样,也可能会出现这种情况。
于是,轮询法来了!

轮询和加权轮询法

轮询法是挨个轮询服务器处理,也可以设置权重。

如果没有配置权重的话,每个请求按时间顺序逐一分配到不同的服务器处理。如果配置权重的话,权重越高的服务器被访问的次数就越多。

未加权重的轮询算法适合于服务器性能相近的集群,其中每个服务器承载相同的负载。加权轮询算法适合于服务器性能不等的集群,权重的存在可以使请求分配更加合理化。

一致性 Hash 法

相同参数的请求总是发到同一台服务器处理,比如同个 IP的请求。

动态负载均衡

在实时中进行适应,当分发请求时会考虑到活跃的性能指标和服务器条件。

最小连接法

这些连接算法将每个新请求发送到当前活跃连接或打开请求最少的服务器,这需要实时跟踪每个后端服务器上的正在进行的连接数量,优点是新请求会根据剩余容量灵活地路由,然而,如果连接不均匀地堆积,负载可能不经意地集中在某些服务器上。

最快响应时间

最少响应时间算法将传入请求发送到当前延迟最低或响应时间最快的服务器,每个服务器的延迟都会持续被测量并被考虑在内。这种方法是高度自适应和反应迅速的,然而它需要持续的监测,这会带来显著的开销并增加复杂性,它也没有考虑每个服务器已经有多少现有的请求。

总的来说,简单的静态算法和更自适应的动态算法之间存在明显的权衡。我们需要考虑特定的性能目标、能力和约束来选择负载均衡策略,像轮询这样的静态算法很适合无状态的应用程序,动态算法有助于优化大型复杂应用的响应时间和可用性

相关推荐
枕星而眠14 分钟前
C++ 面向对象核心机制深度解析:多态性、虚函数、虚继承与 final 类
运维·开发语言·c++·后端
着迷不白22 分钟前
八、shell脚本
linux·运维
tobias.b23 分钟前
JumpServer4\.10\.16离线部署\+外部Nginx反向代理 解决30分钟空闲断开WebSocket超时(延长10天)
运维·websocket·nginx
流浪0011 小时前
Linux系统篇(四):一文吃透 Linux 虚拟地址空间:从页表映射到内核结构体全链路拆解
linux·运维·服务器
Jacob程序员1 小时前
WebSSH技术实现全解析
linux·运维·服务器·websocket
暗冰ཏོ1 小时前
运维岗位完整学习指南:从 Linux 基础到 DevOps / SRE 实战
linux·运维·服务器·ubuntu·运维开发·devops
龙泉寺天下行走1 小时前
bash (())奇怪的返回码
linux·运维·服务器
Fcy6481 小时前
Linux下 进程间通信详解(二)System V IPC
linux·运维·消息队列·共享内存·信号量·system v
vortex51 小时前
SSH “administratively prohibited” 报错解决
运维·ssh
壹号用户1 小时前
初识linux
linux·运维·服务器