推荐:Nginx 会话黏着一致性解决

关于session共享有四种方案

1), tomcat广播, 对系统资源占用较大, 占用io流, 不推荐使用

2), 使用memcache

3), 使用redis, 安装第三方库, 

4), 使用tengine的cookie一致性解决

5) 使用nginx的sticky cookie第三方开发包。


本文只讲后面四种方式。其中4) 和5)原理一样。


 2, 使用memcached作为session管理

2.1) 安装memcached

yum -y install memcached

2.2) 测试memcached是否安装成功, 使用telnet, 没有的话yum安装

telnet localhost 11211

会显示: 

然后: 

set abc 0 0 5
12345

出现STORED表示memcached安装成功

2.3) tomcat下安装jar, 拷贝到 CATALINA_HOME/lib 目录下, 

2.4) 更改tomcat配置

vim ./conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
memcachedNodes="n1:192.168.208.102:11211" 
sticky="false" 
lockingMode="auto"
sessionBackupAsync="false"
sequestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
/>

之后启动tomcat, 既可以看到sessionID已经不变了

 3, 使用redis解决session一致性问题

 配置和memcached基本类似

3.1) 安装redis

yum install redis

启动

service redis start

3.2) 修改reids.conf 中的 bind, 否则只能使用localhost访问

vim /etc/redis.conf


bind 192.168.208.102

3.3), 在 CATALINA_HOME/conf/context.xml 中添加配置

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
         host="192.168.208.102"
         port="6379"
         database="0"
         maxInactiveInterval="60" />

3.4) 将redis和tomcat的session-manager jar包导入

此时启动tomcat, 就可以完成session一致性问题了

4, 使用tengine的会话保持功能实现

tengine提供了cookie保持功能, 即客户端访问一台服务器后, 始终指向该台服务器, 相当于粘滞功能

此种情况, 分配的那台tomcat挂了以后, 就不能狗保持回话一致了, 因此并不为一种可靠的解决方案。

此外, 使用memcached或redis时, 如果不想安装插件, 可在代码中直接操作缓存来存储和取出数据, 相当于session, 为一种比较可靠的一致性解决方案。

使用淘宝的 tgenine 和使用nginx的sticky cookie第三方开发包原理一样。

关于使用nginx的sticky cookie第三方开发包设置文章,请详见http://blog.csdn.net/bigtree_3721/article/details/78007744

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值