1、负载均衡手段及适用范围
DNS | 地理级别的负载均衡,根据用户IP分配就近服务器 | 简单粗暴,扩展性查,分配策略简单 |
硬件负载均衡 | F5、A10,支持百万级别 | 价格昂贵,定制化,稳定可靠,支持DDos防御等 |
软件负载均衡 | Nginx,LVS,支持5万级别 | 开源软件,可扩展 |
实际组合使用:DNS实现地理级别,硬件负载均衡实现集群级别,Nginx实现机器级别的负载均衡
2、Nginx支持分配算法
(1)轮询(默认策略)
用户请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,自动剔除
(2)按权重
为不同后端服务器分配权重值,权重大的机器接受流量大;应用场景包括机器硬件配置不同或为了屈从上下游流量同机房同中心策略
(3)IP_Hash
按请求ip的hash结果分配,这样每个用户固定访问一个后端服务器,可以解决session问题
(4)fair
根据后端服务器响应时间,耗时较短的优先分配
(5)url-hash
按URL的hash结果分配请求,使得每个URL固定映射到一个后端服务器
3、实例分析
需求:日活1000W的负载均衡设计
分析:
(1)一天按10小时计算,得到平均QPS=1000W/(10*3600)=278
(2)峰值QPS按5倍经验值,得到QPS=278*5=1389
(3)是否进一步考虑未来半年业务量扩大带来的QPS增加?
(4)按单台Tomcat能抗住1000QPS(经验值),至少需要两台Tomcat,考虑高可用,多增加一台Tomcat备用
(5)使用Nginx+keepalive保证高可用
(6)涉及到数据库,采用主从结构,读写分离