You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google数据工程师认证样题答疑:为何选D而非B?

为什么正确答案是D而非B?

核心问题在于你误解了Cloud Pub/Sub中messageId的作用——它根本没法用来做业务事件的去重。

选项B的问题

Cloud Pub/Sub生成的messageId是单次发布请求的唯一标识,和业务事件本身无关。当POS终端因为网络中断重试发送同一个库存更新事件(比如同一个订单的商品扣减),这是两次独立的发布操作,Pub/Sub会给这两次请求生成完全不同的messageId。你要是用messageId去重,根本识别不出这是同一个业务事件的重试,重复消息还是会被处理,库存统计依然会出错。

选项D的合理性

库存更新的本质是绑定到具体订单的:同一个订单对同一个商品的库存变更,无论终端重试多少次,都只应该被计算一次。添加orderId作为业务层面的唯一订单标识,再结合prodSku(商品SKU),就能精准识别重复的业务事件——只要是同一个orderId+prodSku的组合,就判定为同一库存更新操作的重试,直接丢弃即可,这样就能彻底避免重复统计的问题,保证库存数据准确。

其他选项的问题补充

  • 选项A:publishTime是消息发布的时间戳,重试消息的publishTime必然不同,而且不同业务事件也可能刚好在同一时间发布,完全不具备去重的可行性。
  • 选项C:用最终库存值adjustedQuantity替代增量quantityDelta,会丢失实时增量的上下文,而且多个终端并发更新时,直接覆盖最终值会导致数据冲突,根本没法保证统计准确。

内容的提问来源于stack exchange,提问作者WernerZiegler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:45:41