关于集群中session共享理解的问题?
最近在研究集群和分布式的实现,感觉非常吃力。
集群是一套完整的系统部署到不同的服务器(tomcat)中,每个服务器中部署的程序都是一样的,通过nginx反向代理就可以根据权重把用户的请求转发到不同的的服务器中,同时实现了同一个用户在一次session会话有效期内的所有请求都会转发给同一个服务器。是不是这样就不需要考虑session共享了。我理解的对吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
据说淘宝开始的时候就是用 cookie 存储用户登陆信息的,后来访问量上来后就没这么用了,因为 cookie 太大,导致流量大增
比较常用的就是
1.nginx根据用户hash
2.用缓存,redis,memcached等,最好主从
.nginx根据用户hash 这个是不是只适用于集群,如果分布式的tomcat(每个tomcat中的工程负责的服务都不一样)怎么办呢?
如果想要session在集群里共享,反向代理没法实现。tomcat只存储容器内应用产生的session,除非在在业务里进行url重写,才能让a容器的session让b容器访问,不推荐这样。
推荐,使用spring-session,通过楼上说的spring-session-data-redis,实现集群共享session。插一句,在高并发下通常不会使用session,集群一大了肯定高机率死锁,而是通过加密cookie管理会话
关于spring系列的分布式系统有个spring cloud,不过没接触过
我碰到的业务量都比较小,可能没你的业务流量这么大,我的做法是,nginx根据用户hash来指向不同的服务器。 现在的做法是有台大内存的memcached服务器,然后所的应用session指向到这台机器,但比较担心这台机器宕机。以后加主从吧,目前跑了一两年,问题不大。
但是这样容错就低了 一个服务器出问题了 其他服务器不好接管
http://blog.csdn.net/u010028869/article/details/50773174?ref=myread感觉这个不错
spring session或者jwt
spspring session
那么 请问分布式有什么解决办法呢?
回复
@颖辉小居 : 分布式可以使用 RPC 实现
是这样配置吗?http://blog.csdn.net/xiao__gui/article/details/52706243
回复
@颖辉小居 : https://www.qtdebug.com/spring-security-6-cluster/ 和 SpringMVC 一起使用
可以看看 spring-session-data-redis 这个插件,用 Redis 存储 session 实现集群,只需要配置 web.xml,不需要修改代码就能实现集群。