知识卡片
Session-Cookie的运作机制与外部化需求
内容
HTTP协议本身无状态,不会记住上一次请求发生过什么,Session-Cookie就是给这个无状态协议”打补丁”的方案:Session是服务端保存的用户状态数据(是否登录、身份信息),Cookie只是客户端存的一小段标识(session-id),服务端凭这个id把每次请求和对应的Session关联起来,从而在多次请求间”记住”用户。默认情况下Session存在服务端的JVM内存里,这意味着服务重启或者多实例部署时,内存里的Session要么丢失、要么互相看不到,因此分布式场景下必须把Session从进程内存迁移到Redis等外部存储集中管理。发散:这本质上是”有状态服务如何应对水平扩展”的一个具体案例——只要状态绑死在单个进程的内存里,这个进程就无法被随意重启或复制,外部化是让服务变得可水平扩展的前提条件。
参考来源
《Spring Boot应用开发实战》第5章《应用程序安全性》