从 SQS 和 Redis 抓取开关到 Temporal 用于其订阅平台

主要观点:Grab 基于 Temporal 构建新架构 GrabUnlimited,提升用户体验并减少 80%生产事故,新架构提高了稳健性和可扩展性,解决了原架构的问题。
关键信息

  • GrabUnlimited 是 Grab 的订阅项目,原架构依赖 Amazon RDS、SQS 和 Redis,随着用户增长出现问题,如用户未收到福利、会员未自动续期等。
  • 原架构每日获取需续期会员的 cron 作业变慢,Redis 锁限制导致会员状态损坏,还存在弹性问题和订阅服务复杂性增加等问题。
  • 团队选择基于 Temporal 构建新架构,评估了 Temporal 在多个方面的表现,新架构用 Timer 替代 cron 作业提高扩展性,利用 Temporal 的内置功能解决并发、弹性和幂等性问题。
    重要细节
  • 新架构受益于 Temporal 的无限重试、指数退避、速率限制和可观察性等内置功能。
  • 通过为多个互斥操作的工作流实例分配相同的工作流 ID 解决了之前的并发挑战。
  • 利用 Temporal 的弹性机制配置适当的重试策略保护外部服务。
  • 采用 Temporal 过程中团队需调整系统设计方法以充分利用其功能,虽有挑战但认为学习曲线值得。
阅读 66
0 条评论