Uber 如何通过批处理实现单账户每秒30+次更新

Uber 近日介绍了一套高吞吐量账本处理系统,用于解决其分布式账务基础设施中单个账户持续遭遇高并发写入的问题。这类问题通常出现在大量更新请求集中落到同一个账户上的场景中。当更新频率持续升高时,传统"一次请求对应一次事务"的处理模式很快会触及性能瓶颈。根据 Uber 工程团队介绍,这套新系统在满足严格一致性和审计要求的前提下,能够实现单个账户每秒 30 次以上的更新处理能力。

该能力是构建在 Uber 财务账本平台之上。整个账本系统采用复式记账模型,负责记录平台内所有资金流转行为。复式记账能够提供很强的数据正确性保证和端到端可追溯能力,但代价是同一账户上的更新操作必须严格串行执行。在大规模调账、财务对账或运营修正等场景下,某些账户会在短时间内收到大量更新请求。此时,传统事务执行流程中的瓶颈便会逐渐显现出来。

在旧架构中,每一次账本更新都会触发一次完整且独立的处理流程。这个流程包括读取账户状态、执行校验、计算余额变化,以及持久化账本记录和审计日志等步骤。由于每个请求都需要重复执行这一整套流程,当某个账户成为热点账户时,系统会产生大量额外开销。这些开销主要来自频繁的存储访问、事务协调成本以及写放大问题。

为了解决这一问题,Uber 在新架构中引入了基于批处理的执行模型。其核心思路并不复杂:不再逐条处理更新请求,而是将同一账户上的多个操作聚合到一个很短的时间窗口内,然后统一执行。这样一来,多个更新操作便能够共享一次账本读取和写入过程,从而显著降低系统开销。

整个处理流程可以分为三个阶段。首先,系统会按照账户维度对更新请求进行聚合,在固定时间窗口内形成批次。随后,批次中的所有操作会作为一个原子单元统一执行。系统只需读取一次账本状态,并在同一次执行过程中完成校验和余额更新。最后,处理结果被持久化,并同步到下游系统,包括审计日志和财务对账流水线等。

目前系统采用约 250 毫秒的批处理窗口。更新请求的聚合由 Redis 负责协调,而底层则利用乐观式原子更新机制来保证并发场景下的数据正确性。这种设计既保留了财务系统所要求的一致性保证,www.ntjrcw.com又能够通过横向扩展提升整体处理能力。

在架构设计过程中,一个重要的权衡点是批处理窗口的大小。窗口越短,请求等待时间越少,但系统需要承担更多调度和执行开销。窗口越长,则能够提高吞吐效率,但代价是请求需要等待更久才能被处理。最终,Uber 选择了一个经过严格控制的批处理窗口,在接近实时处理能力与系统效率之间取得平衡。

系统还专门设计了故障隔离机制,以应对批处理中部分操作失败的情况。例如,当出现短暂的存储异常或网络故障时,系统会尽可能将影响限制在单个操作层面,而不是让整个批次失败。这样不仅减少了重试放大效应,也提升了系统在高峰负载下的稳定性。

首席信息官 Mark Peters 表示:

对于 Uber 这样规模的平台而言,在保证严格一致性的同时实现亚秒级批处理能力,是构建运营韧性的关键。

Uber 表示,这套架构已经显著缩短了高负载场景下的账务处理时间。对于平台内部的大规模资金流转业务而言,它不仅加快了财务对账速度,也提升了整个市场平台运营流程的处理效率。

相关推荐
Jelena1577958579215 分钟前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
汤姆小白32 分钟前
06-CLI命令参考
人工智能
humors2211 小时前
新手笔记本/路由/手机安全问题小记
安全·华为·电脑·手机·路由器·笔记本·tplink
颜酱1 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
A洛1 小时前
Codex 实战:一句话完成 Temu 商品图采集与印花抠图自动化
运维·人工智能·自动化·codex
甲维斯1 小时前
Kimi K3 修Bug,越修越多!
人工智能
Litluecat2 小时前
2026年7月20日科技热点新闻
人工智能·科技·新闻·每日·速览
达达尼昂2 小时前
AI 编程的工程化实践:Flutter AI Harness 的设计与落地
人工智能·后端·全栈
廋到被风吹走2 小时前
【AI】从“卖能力“到“卖信任“,合规与安全成为新战场
人工智能·安全