8月19日·星期三 14:24·来源:InfoQ

Canva 分享了基于 S3 的架构,用于管理数亿个会话的会话撤销

Canva近日公开了其会话撤销基础设施的重新设计方案,旨在支撑数亿个活跃会话,同时避免多数身份验证请求触发联网数据库查询。新架构将撤销数据以紧凑不可变形式存入Amazon S3,并作为内存索引分发至应用网关,据称部署速度提升、数据库开销减少,撤销缓存内存占用降低87.5%。 此前,Canva将12小时撤销数据存于内存,会话刷新仍需持续查询MySQL,规模扩大后数百个网关实例并发请求超百万条撤销记录,造成数据库负载压力。新方案将12小时窗口划分为30分钟的S3对象,每次撤销以16字节二进制记录表示,排序数组支持直接内存搜索。网关通过条件GET下载变更块,丢弃超时数据;异步工作进程合并新撤销记录并上传,条件PUT提供乐观并发控制,ZooKeeper仅用于减少冲突。 该设计亦兼顾恢复与部署,网关可下载相关数据块重建本地状态,无需依赖数据库。工作节点每秒可处理超2000次撤销,含百万撤销的数据块二进制大小约16兆字节。迁移后,Canva将撤销数据库缩减至两个只读副本,数据库负载随撤销写入吞吐量及网站流量扩展,而非网关实例数。方案在Reddit引发讨论,有建议采用短效访问令牌加刷新令牌方案,Canva工程师回应称内存撤销数据可避免频繁刷新带来的数据库负载与可用性瓶颈。
本文摘要由千智坊基于公开报道整理,查看完整内容:阅读原文(InfoQ)→