利用Redis实现session共享

在负载均衡环境中,session不一致是个问题。通过IP_HASH策略可以将同一IP请求分配到同一服务器,但存在session丢失风险。session复制利用组播网络在Tomcat间同步,但性能较低且内存消耗大。采用session共享,结合Redis作为session存储,能适应多种负载策略,即使服务器重启也不会丢失session,但需序列化操作,增加性能开销。
摘要由CSDN通过智能技术生成

负载均衡

首先使用nginx配置一个简单的负载均衡:

upstream myupstream{
    server *.*.*.*:8080 weight=1;
    server *.*.*.*:8081 weight=1;
}
server{
    listen *.*.*.*:80
    local / {
        proxy_pass http://myupstream;
    }
}

session不一致产生的原因

在配置了负载均衡之后,本地发出的请求会被分发到不同的服务器上,第一次请求时,服务器1会产生一个session写到服务器内存中并将sessionid返回到本地浏览器中的cookie中,第二次请求时,本地发起请求同时会携带该sessionid到服务器2,但服务器2内存中并不存在该sessionid,因此会创建一个新的session并返回到本地浏览器中,之后的每一次请求都会循环这个过程,导致用户信息丢失。

解决方案

基于IP_HASH的负载均衡
  • 实现
    设置负载均衡策略为iphash
upstream backserver { 
ip_hash; 
    server *.*.*.*:8080;
    server *.*.*.*:8080;
}
  • 原理:
    同一ip的请求会分发到同一服务器进行处理
  • 优点:
    1、配置简单,无需修改代码,不入侵应用。
    2、便于水平拓展。
  • 缺点:
    1、服务器出现故障或者重启会导
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值