开发者社区> 问答> 正文

集群环境下session方案与no session方案哪种好?

集群环境下,必然需要考虑用户和会话的问题,如果不加处理的话,一旦后端IP轮询切换,session也就断了。所以就有了4种方案。先说下session的问题,tomcat在启动时就会创建一个session,当会话越多的时候,session也就越多。而session在tomcat中属于重量级对象。一个没有任何内容的空session就需要消耗1.5K的内存存储空间
1.tomcat自带的方案,session复制,笨重低效,基本上是淘汰的方案。
2.nginx第三方扩展的sticky粘滞,把会话和后端IP绑定,比较简单,但个人感觉不是很可靠。
3.基于redis等nosql的session集中存储,tomcat配置也比较简单。这种最流行,但仍然存在以下问题:(1)redis有单点,并且增加了系统复杂度。(2)用来连接redis的jedis性能不稳定,高并发下很容易挂,这点看到过不少反馈。
4.纯cookie,不使用session,天然分布式。存在的问题:(1)cookie需要加解密,性能消耗要考虑,而且不能存太多东西,序列化本身消耗也不少。(2)每次请求都会带上cookie,包括JS和CSS等请求,浪费宽带,除非部署了CDN或专用服务器。
究竟哪种方案更好呢?

展开
收起
落地花开啦 2016-02-25 17:49:57 3176 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    1,放弃使用session,就算同步策略非常优秀,但是造成的网络风暴不可避免
    2,sticky粘滞会导致无法热切换,存在运维问题
    3,如果是jedis的锅,是否有代替方案,因为目前redis等KV工具还是广泛使用的,如果担心单点问题,可以仿照osc的j2cache自己弄一个redis + db
    4,结合业务,看下面总结
    总结:结合业务
    如果每次请求都需要获取当前认证用户的较多相关信息,ID哈希后查DB是一个好办法,但如果是并发高的系统,只能寻找redis等代替方案

    2019-07-17 18:47:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
运用新技术解决有状态应用的冷热迁移挑战 迁移策略+新容器运行时 立即下载
Web服务架构变化及性能优化 立即下载