1.负载均衡
请求分发的技术,可以是软件诸如Nginx,Apache 也可以是硬件诸如 F5等。负责接受请求并胡处理的服务器的集合,叫做集群
(1) HAProxy
- 工作第四层、七层
- Session保持支持URL检测
- 并发处理极佳
- 负载均衡算法多
(2) **LVS **
- 工作在第四层
- 工作稳定
- 应用范围广
- 配置简单
- 不支持正则处理
- 不能做动静分离
(3) Nginx
- 安装配置简单
- 占用内存少
- 并发处理能力强3W+
负载均衡算法
- 轮询加权: 加权轮询,权重大就轮询2次
- 随机算法,加权随机: 随机分发请求,但是从概率上而言,访问基数足够大的情况下,基本等同于轮询
- 最小连接数: 在多个服务器中,与处理连接数(会话数)最少的服务器进行通信的算法
- IP哈希算法: 根据客户端IP,哈希取模,得到的结果便是访问的服务器号
- URL散列: 同一URL发往同一服务器
2.Session &Cookie
Http是无状态的
Session 就是缓存在内存中(本地应用缓存),服务重启会丢失
Cookie 是以当前域名为Cookie名存储的,再次访问相同域名会自动带上Cookie信息,Cookie信息里面含JSESSIONID
3.为什么负载均衡下Session不一致
4.解决Session一致性的方法
- Sticky Sessions : 粘带Session
- Session replication :Session 复制
- Shared Session :Session共享
5. 解决方案
5.1 基于IP_HASH的负载均衡
Nginx_HASH
优点
- 配置简单,不入侵应用个,无额外的代码修改
- 便于服务器水平拓展
缺点
- 服务器重启Session丢失
- 存在单点负载高的风险
- 单点故障问题
5.2 Session 复制
优点
- 不入侵应用
- 便于服务器水平扩展
- 能使用各种负载 均衡策略
缺点
- 性能低
- 内存消耗
- 代码考虑
5.3 Session 共享
优点
- 能适应各种负载均衡策略
- 服务器重启或宕机不会造成Session丢失
- 扩展能力强
- 适合集群数量大时使用
缺点
- 对应用有入侵,需增加相关配置
- 序列化反序列化消耗CPU性能
6.总结
史上最全的并发编程脑图:https://www.processon.com/view/5f472fd25653bb576974908f