今天,我想说说负载均衡,负载均衡的目的是要实现资源使用最大化,最大吞吐量,最小响应时间和避免过载。在负载均衡中,需要关注的点有:
1.实现负载均衡软件之间的差异
2.各层级负载均衡的实现
3.负载均衡算法
4.session会话一致性问题
负载均衡的软件:
四层负载:作用于网络层,基于IP 和端口,效率高。优势在于面对大流量的冲击时,报文只是单方面经过四层负载均衡社保,负载社保很小
七层负载: 作用于应用层,解析复杂报文 URL。分流过程中能够对应用层协议,进行深度识别,带来更精细化均衡的可能。高可用能力强
四层负载均衡设备的优势在于面对大流量 的冲击时,报文只是单方面经过四层负载均衡设备,负载均衡设备负担很小,不易成为网络或者系统瓶颈。而七层负载均衡在分流过程中能够对应用层协议进行深度识别,带来更精细化均衡的可能,再加上HTTP协议应用广泛并且简单,所以七层负载均衡对HTTP请求进行负载均衡的商用能力最强
而具体各个软件之间的差别,可以在网上查询。在这里不再赘述。
各层级负载均衡实现:
负载均衡层主要包括:接入层,应用层,存储层,缓存层等。
负载均衡算法:
在不同的负载均衡软件中,每个负载均衡软件都实现了多种负载均衡的算法。例如Nginx就实现了:
- 轮询
- Weight:权重
- Ip_hash
- Fair(第三方),按后端服务器的响应时间来进行请求分配,响应时间短的优先分配
- url_hash(第三方)
我们需要根据不同的场景选择相应的算法
负载均衡中session解决方案:
1.Cookie(安全性问题,会将登陆信息暴露,有被劫持的危险)
2.服务之间同步session(复制) (服务器之间同步session文件,但当机器多时,session同步过于复杂,且很占用带宽,不适合大面积集群)
3.Ip_hash(nginx)(可能造成,某台机器过载,部分机器利用不足,同时在某台机器宕机之后,指向该机器的用户会失去登陆态)
4.Redis/memchached(将用户登陆信息保存在第三方缓存应用中,建议使用该模式,但要做到高可用)
站在巨人的肩膀上成长,文章思想和经验来自各类大神 参考 “架构师之路” 《亿级流量网站架构核心技术》