Nginx是什么?
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。
现在一般大型web项目采用的技术架构参照图如下:
负载均衡定义:
在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
Nginx对比LVS:
为何Nginx负载均衡会产生session不一致问题?
常见的负载均衡算法:
1. 轮询(加权轮询) : 平均分配,加权轮询则权重大的轮询两次
2. 随机算法(加权随机): 随机分发请求
3. 最小连接数 : 多个服务器中,与处理连接数(会话数)最少的服务器进行通信的算法
4. IP哈希算法 : 根据客户端IP,哈希取模,得到的结果便是要访问的服务器的序号
5. URL散列 : 同一URL发往同一服务器。url链接地址哈希取模计算分配服务器序号
解决session不一致的方法:
1. session粘滞:-》适用IP哈希算法
nginx配置 :
upstream balance(变量名可变) {
ip_hash;
127.0.0.1:8001 weight =1 (权重配置);
127.0.0.1:8002 weight =3 ;
}
优点:
1、配置简单,不入侵应用。
2、便于服务器水平拓展。
缺点:
1、服务器重启session丢失
2、存在单点负载高的风险
3、 单点故障问题
2. session复制:
原理: tomcat 配置session同步
优点:
1、不入侵应用(存储在session中的对象全部需要序列化),便于服务器水平扩展
2、能适应各种负载均衡策略
3、服务器重启或宕机不会造成session丢失
缺点:
1、性能低
2、内存消耗
3、代码考虑(session序列化)
3. session共享:
对象同样需要序列化。使用缓存中间件进行管理-> 例:redis缓存数据库实现
优点 :
1、适用各种负载均衡策略,可拓展,适用于集群分布较大的应用
2、session不会因为服务器重启等故障丢失。
缺点 :
1、需要使用中间件,代码被修改
2、序列化和反序列化占用较大资源.
什么是Nginx主从?
nginx主从策略主要是为了防止出现nginx服务器挂掉,然后服务端瘫痪的问题。
以上草图可以很直观的看出,作者的绘画功底很差。。。
给大家分享一波小技巧:
查看各大型网站是否使用Nginx以及是否配置主从策略:
进入网站 - > 按F12 :
预知后事如何,待下回分解。