⚖️ 负载均衡算法动画演示

🔄 轮询算法 (Round Robin)

按顺序依次将请求分配给每个服务器,循环往复。简单公平,但不考虑服务器负载。

当前服务器: Server 1
总请求
0
当前索引
0

⚖️ 加权轮询算法 (Weighted Round Robin)

根据服务器权重分配请求,权重高的服务器处理更多请求。适合服务器性能不同的场景。

当前服务器: Server 1 (权重: 3)
总请求
0
当前权重
0

🔗 最少连接算法 (Least Connections)

将请求分配给当前连接数最少的服务器。动态平衡负载,适合长连接场景。

选择: Server 1 (连接数: 0)
总请求
0
活跃连接
0

🎯 一致性哈希算法 (Consistent Hashing)

基于请求的哈希值映射到哈希环上的服务器。服务器增减时只影响相邻节点,适合分布式缓存。

请求哈希: -
预设服务器数:
总请求
0
服务器数
3

算法对比

算法 特点 适用场景
轮询 简单公平,均匀分配 服务器性能相近,短连接
加权轮询 考虑服务器性能差异 服务器性能不同,需要按权重分配
最少连接 动态平衡,考虑当前负载 长连接场景,连接持续时间不同
一致性哈希 服务器增减影响小,分布均匀 分布式缓存,CDN,微服务

一致性哈希算法详解

🔐 哈希算法

本演示使用 FNV-1a 哈希算法(Fowler-Noll-Vo 哈希算法的变体)来计算服务器和请求的哈希值。

算法原理:

  • 初始值:使用 FNV offset basis (2166136261) 作为初始哈希值
  • 迭代计算:对字符串的每个字符进行异或运算和位移运算
  • 映射范围:将哈希值映射到 0-359 度的哈希环上

算法特点:

  • 分布均匀:FNV-1a 算法具有良好的哈希分布特性,能有效避免哈希冲突
  • 计算快速:算法复杂度为 O(n),其中 n 为字符串长度
  • 确定性:相同输入总是产生相同输出,保证一致性
  • 雪崩效应:输入的小变化会导致输出的大变化,提高分布均匀性

一致性哈希工作原理:

  1. 哈希环构建:将服务器和请求都映射到 0-359 度的哈希环上
  2. 请求分配:请求的哈希值顺时针查找第一个大于等于该哈希值的服务器
  3. 环形处理:如果请求哈希值大于所有服务器哈希值,则分配给哈希值最小的服务器(环形特性)
  4. 动态调整:服务器增减时,只需重新分配受影响的部分请求,迁移成本低

💡 实际应用:

  • 分布式缓存:Redis Cluster、Memcached 使用一致性哈希进行数据分片
  • 负载均衡:Nginx、HAProxy 等支持一致性哈希负载均衡
  • CDN:内容分发网络使用一致性哈希将内容路由到边缘节点
  • 分布式存储:对象存储系统(如 Amazon S3)使用一致性哈希进行数据分布