系统设计 017: Session 与 Cookie 系统设计 017 Session 与 Cookie一、 Session服务器端的「身份档案」 Session Key 有多安全 Session 是怎么诞生的二、 Cookie浏览器里的「随身令牌」 Cookie 的关键特性 超形象比喻三、 完整流程一次登录全程通行四、❓ 三个灵魂问题彻底吃透 Session1. Session 过期后服务器会立刻删吗2. 单设备登录 vs 多设备登录区别在哪3. Session 适合存在哪里五、 核心总结在 Web 世界里登录态保持是绕不开的基础能力而撑起这一切的正是服务器端的Session与浏览器端的Cookie。它们像一对默契搭档让我们只需一次登录就能全程流畅访问无需反复输入账号密码。今天就用清晰、好懂的方式把这对核心概念彻底讲透✨。一、 Session服务器端的「身份档案」Session 是纯服务器端的会话机制它的载体是一张专门的Session Table会话表。这张表里只存三件关键数据Session KeySession Token全局唯一的哈希串相当于用户的临时身份证号User ID标记这条会话属于哪个用户常做加密处理Expire At会话过期时间戳 Session Key 有多安全它由UUID / GUID这类哈希算法生成字符集包含大小写字母、数字、下划线、横杠组合空间大到近乎不可能重复。哪怕在海量请求下也不会出现冲突安全性极高。 Session 是怎么诞生的用户提交账号密码 → 登录请求到达服务器验证通过 → 服务器新建一条 Session 记录生成唯一 Session Key 绑定 User ID 设置过期时间把Session Key通过 HTTP 响应返回给浏览器二、 Cookie浏览器里的「随身令牌」Cookie 是什么它是浏览器的本地键值对存储像一个小型哈希表专门存放来自服务器的标记信息。 Cookie 的关键特性按域名隔离A 站的 Cookie 不会带到 B 站自动携带每次向该网站发请求浏览器会自动带上全部 Cookie体积越小越好数据越大请求越臃肿、传输越慢‍♂️所以Cookie 只存最关键的身份标记——Session Key绝不存敏感信息。 超形象比喻把登录比作进入会场Session Table 后台登记本Session Key 你的入场牌Cookie 你挂在胸前的牌套只要戴着牌保安服务器一看便知你已授权无需再查身份证。三、 完整流程一次登录全程通行登录 → 服务器生成 Session返回 Session Key浏览器把 Session Key 存入 Cookie后续每一次请求 → 自动带上 Cookie服务器拿到 Session Key → 查询 Session Table验证未过期 → 取出 User ID → 读取用户信息保持登录状态流畅访问✅这就是我们一次登录、长期有效的底层逻辑。四、❓ 三个灵魂问题彻底吃透 Session1. Session 过期后服务器会立刻删吗不会。服务器用懒惰删除Lazy Deleting过期记录先留着等下次该 Key 再来请求验证超时再清理不浪费性能。2. 单设备登录 vs 多设备登录区别在哪单设备登录如微信Session Table 增加Device Token标记当前登录设备。新设备登录 → 使旧设备 Session 失效 → 旧端自动登出。多设备登录如 QQ不用额外处理。每个设备生成独立 Session互不冲突共用同一个 User ID。3. Session 适合存在哪里小站点可放Memcache等缓存丢失只需重新登录大型站点必须存数据库保证稳定最优方案数据库 前端缓存兼顾安全与速度⚡五、 核心总结Session服务器的会话档案存 Key、用户、过期时间Cookie浏览器的令牌盒只存 Session Key机制Cookie 带 Key → 服务器查 Session → 保持登录原则Cookie 轻量化、Session 唯一性、删除懒惰化理解 Session 与 Cookie就握住了 Web 登录、身份验证、会话管理的大门钥匙。不管是前端、后端、测试都能在这套逻辑里找到自己的设计依据。