- 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
- 硬件四层
- 负载均衡关注点