• load balance
  • 方法
    • dns轮循
    • java nio
    • erlang语言
    • linux epoll
    • bsd kqueue
    • 消息队列、事件通知
    • c/c++下ace, boost.asio, libev(libevent)
    • 服务器mina, jetty, node.js, netty
    • java协程框架 quasar kilim
  • 流量切换 # 某服务器挂了
    • DNS切换
    • httpDNS # app配置,绕过运营商localDNS
    • lvs/haproxy # 切换故障的nginx
    • nginx # 切换故障应用
  • 外网dns做gslb(全局负载均衡)
    • 有缓存,切换时间长
    • 分配最近ip和容错
  • 内网dns
    • 负载均衡关注点
      • 上游服务器配置
      • 负载均衡算法
      • 失败重试机制
      • 服务器心跳检查
    • 反向代理
      • 对响应结果缓存、压缩
    • 分层
      • 七层: HTTP, 端口、协议、主机名、url。流量有限制。
      • 四层: tcp, ip + 端口
      • 二层: 改报文目标mac
    • 方法
      • 轮询 # 有缓存,没有重试
      • naproxy
        • 七层
      • nginx
        • 七层
        • 1.9后支持tcp四层负载
      • OpenResty
        • 热点非热点流量分离,正常流量与爬虫流量分离
      • lvs
        • 软件四层
        • DR: 改写报文目标MAC到上游服务器,上游直接响应到客户端。要求和上游服务器在同一子网
      • f5
        • 硬件四层