Nginx(六)session共享

session和cookie的境界

一  分布式Session的几种实现方式

1)  基于数据库的Session共享
2)  基于NFS共享文件系统
3)  基于memcached 的session,如何保证memcached本身的高可用性
4)  基于resin/tomcat web容器本身的session复制机制
5)  基于Redis 或进行 session 共享
6)  基于cookie 进行session共享

学习思路:以解决问题的角度来思考!

一、Session Replication 方式管理 (即session复制)

        简介:将一台机器上的Session数据广播复制到集群中其余机器上

        使用场景:机器较少,网络流量较小

        优点:实现简单、配置较少、当网络中有机器Down掉时不影响用户访问

        缺点:广播式复制到其余机器有一定廷时,带来一定网络开销

二、Session Sticky 方式管理

        简介:粘性Session、当用户访问集群中某台机器后,强制指定后续所有请求均落到此机器上!

        使用场景:机器数适中、对稳定性要求不是非常苛刻

        优点:实现简单、配置方便、没有额外网络开销

        缺点:网络中有机器down掉时、用户Session会丢失、容易造成单点故障

说明:在nginx配置文件中增加sticky模块,为了实现session共享,需要支持sticky(粘滞)模块,nginx-1.14不支持sticky,所以使用nginx-1.10版本,重新编译nginx

###注意:将/usr/local/lnmp/nginx 目录全部删除 再次编译
tar zxf nginx-sticky-module-ng.tar.gz -C /usr/local/
cd nginx-1.10.3
./configure --prefix=/usr/local/lnmp/nginx \
   --with-http_ssl_module --with-http_stub_status_module \
   --with-threads --with-file-aio  \
   --add-module=/usr/local/nginx-sticky-module-ng 
make && make install
ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/
vim /usr/local/lnmp/nginx/conf/nginx.conf

upstream tomcat {
        sticky; # 核心参数
        server 172.25.0.1:8080;
        server 172.25.0.2:8080;
}

Nginx -->ip_hash(负载均衡的策略) -->单点故障!

说明:在分布式系统环境下,利用Session黏着的现象实现Session共享,但这是一种低级的实现方式,因为不可能所有用户的IP分布与真实的服务器性能分布情况正好吻合,并且在IP可变的情况下因Session黏着现象会导致安全问题。所以这种负载策略一般不会使用,而通过单点登录的方式实现Session共享。

三、缓存集中式管理

       简介:将Session存入分布式缓存集群中的某台机器上,当用户访问不同节点先从缓存中拿Session信息

       使用场景:集群中机器数多、网络环境复杂

       优点可靠性好

       缺点:实现复杂、稳定性依赖于缓存的稳定性、Session信息放入缓存时要有合理的策略写入!

如何考虑分布式 Session 问题?

在互联网公司为了可以支撑更大的流量,后端往往需要多台服务器共同来支撑前端用户请求!

场景:那如果用户在 A 服务器登录了,第二次请求跑到服务 B 就会出现登录失效问题

分布式 Session 一般会有以下几种解决方案:

Nginx ip_hash 策略,服务端使用 Nginx 代理,每个请求按访问 IP 的 hash 分配,这样来自同一 IP 固定访问一个后台服务器,避免了在服务器 A 创建 Session,第二次分发到服务器 B 的现象。

Session 复制,任何一个服务器上的 Session 发生改变(增删改),该节点会把这个 Session 的所有内容序列化,然后广播给所有其它节点。

共享 Session,服务端无状态话,将用户的 Session 等信息使用缓存中间件来统一管理,保障分发到每一个服务器的响应结果都一致。

博客地址

博客地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值