架构: 负载均衡

2022-03-08 10:48:39 浏览数 (1)

引言

  • 本文介绍几种负载均衡架构及算法。

总体策略

  • DNS负载均衡用于实现地理级别的负载均衡;
  • 硬件负载均衡用于实现集群级别的负载均衡;
  • 软件负载均衡用于实现机器级别的负载均衡;

硬件负载均衡

  • 类似路由器、交换机;
  • 优点:
    • 支持各种负载均衡算法;
    • 支持100万并发(一般软件负载均衡也就支持10万并发);
    • 很多设备同时支持负载均衡、防火墙、防DDOS攻击功能;
  • 缺点:
    • 价格高昂;

软件负载均衡

  • 优点:
    • 便宜;
    • 维护和部署简单(安装Ngnix软件即可);
  • 缺点:
    • 并发量远小于硬件负载均衡,Linux服务器上装一个Nginx大概能到5万每秒;
    • 一般不具备防火墙、防DDOS攻击等功能;

DNS负载均衡

  • 实现地理级别的负载均衡;
  • DNS服务器将域名解析为最靠近用户的主机的IP地址,提升访问速度;
  • 缺点:
    • DNS缓存不能及时更新,有可能定位到一个已经移走的主机;
    • 除了映射IP地址,没有提供其他的负载均衡算法和策略;

均衡算法

  • 轮询:
    • 负载均衡系统收到请求后,按照顺序轮流分配到服务器上;
    • 算法简单,没有考虑机器的状态;
  • 加权轮询:
    • 分给32核机器的概率是分给16核机器的概率的两倍;
    • 考虑了机器性能,但无法根据机器状态动态调整;
  • 负载最低优先:
    • 根据及其具体状态决定负载均衡策略;
    • 考虑:机器连接数、机器的HTTP连接数、CPU占用率、IO占用率;
  • 性能最佳优先:
    • 根据及其具体状态决定负载均衡策略;
    • 考虑:服务器响应时间;
  • Hash:
    • 对源IP地址hash决定任务分配到哪台服务器;
    • 对session ID进行hash决定任务分配到哪台服务器,可以保证同一个会话的包都发送到同一台服务器处理;
代码语言:javascript复制
source: //changsiyuan.github.io/2018/07/15/2018-7-15-Architecture-4

0 人点赞