专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
今天看啥  ›  专栏  ›  芋道源码

Cookie + Session 的时代已经过去了?

芋道源码  · 公众号  · Java  · 2024-10-14 09:30

主要观点总结

本文主要介绍了在Echo社区项目中,为何选择使用ThreadLocal来存储用户信息,而不是常见的Cookie+Session方式。文章首先概述了Cookie+Session的机制及其局限性,然后介绍了分布式集群中的Session共享问题及其解决方案,最后引出了ThreadLocal的使用场景和如何实现用户信息的存储与共享。

关键观点总结

关键观点1: Cookie + Session机制

HTTP协议无状态,需要机制保证客户端和服务端之间会话的连续性,常见的是使用Cookie+Session方式。服务端为每次请求开辟内存空间(Session对象),存储客户端在该会话期间的操作记录,生成sessionID存进客户端的Cookie中。其缺点在于长度限制、性能影响及安全性问题。

关键观点2: 分布式集群中的Session共享问题

随着分布式时代的到来,Session的缺点逐渐暴露。多个服务器间需要共享Session数据,常见解决方案如Session Replication、Session Sticky等,但都存在各种问题,如网络带宽开销、内存占用严重、依赖外部存储等。

关键观点3: ThreadLocal的使用

对于大型Web应用程序,避免使用Session机制,采用ThreadLocal解决。每个访问ThreadLocal变量的线程都有自己的实例副本,实现数据的隔离。在Echo项目中,通过过滤器判断用户是否登录,将登录成功的用户信息存入ThreadLocal,实现本次请求中持有用户信息。


文章预览

👉 这是一个或许对你有用 的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入 「 芋道快速开发平台 」 知识星球。 下面是星球提供的部分资料:   《项目实战(视频)》 :从书中学,往事上 “练 ” 《互联网高频面试题》 :面朝简历学习,春暖花开 《架构 x 系统设计》 :摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》 :系统学习,互联网主流技术栈 《必读 Java 源码专栏》 :知其然,知其所以然 👉 这是一个或许对你有用的开源项目 国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。 功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能: Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览