首页
/ ZITADEL 身份认证系统性能优化:移除遗留用户令牌事件

ZITADEL 身份认证系统性能优化:移除遗留用户令牌事件

2025-05-22 00:57:59作者:田桥桑Industrious

在分布式身份认证与访问管理系统中,事件溯源(Event Sourcing)是构建审计跟踪和状态重建的核心机制。ZITADEL 作为开源身份平台,近期对其认证事件体系进行了重要优化,移除了历史遗留的 user.token.added 事件类型。这一变更体现了系统架构持续演进过程中对性能优化和代码简化的思考。

背景:事件溯源模型的双重作用

在事件驱动架构中,每个状态变更都被记录为不可变事件。ZITADEL 采用这种模式实现两大功能:

  1. 业务逻辑执行:通过事件触发后续业务流程
  2. 状态重建:通过重放事件流还原实体当前状态(即"里程碑投影")

原先系统中存在两个语义相似的事件:

  • user.token.added:传统用户令牌颁发事件
  • oidc_session.added:现代OIDC会话创建事件

随着OIDC成为主流协议,后者已完全覆盖前者的业务含义,形成了冗余事件。

技术债务的识别

问题根源在于里程碑投影(Milestone Projection)的实现。这个负责重建系统状态的组件仍在查询已废弃的 user.token.added 事件,导致:

  • 存储空间浪费:重复存储相同业务含义的事件
  • 查询性能损耗:需要扫描更多事件记录
  • 代码维护成本:需要处理两种事件类型的兼容逻辑

架构优化方案

解决方案包含两个技术决策层级:

1. 核心逻辑简化

移除里程碑投影中对 user.token.added 的事件处理逻辑,完全依赖 oidc_session.added 事件来重建用户认证状态。这需要确保:

  • 所有客户端代码已迁移到OIDC协议
  • 历史事件数据迁移或兼容方案就绪
  • 监控系统能识别旧事件类型的异常出现

2. 代码清理策略

进一步决策是否完全移除事件定义及相关引用,这需要考虑:

  • 向后兼容性要求
  • 其他子系统是否仍有依赖
  • 文档和示例代码的更新范围

实施影响分析

此项优化带来多方面收益:

  • 性能提升:减少事件存储和查询负载
  • 代码健壮性:消除重复逻辑,降低bug风险
  • 可维护性:简化事件处理流程

对于系统使用者,变更完全透明,因为:

  • OIDC协议已成为行业标准
  • 所有新功能早已基于新事件实现
  • 认证业务流程不受影响

最佳实践启示

ZITADEL 的这个案例展示了架构演进的典型模式:

  1. 增量替换:先建立新机制,再逐步迁移
  2. 验证完备性:确保新方案完全覆盖旧功能
  3. 彻底清理:在适当时机移除历史包袱

这种渐进式优化既保证了系统稳定性,又能持续提升性能,值得在分布式系统开发中借鉴。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
178
262
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
867
513
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
183
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
265
305
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
598
57
GitNextGitNext
基于可以运行在OpenHarmony的git,提供git客户端操作能力
ArkTS
10
3