拆微服务时,我们纠结了半年的订单-商品-用户边界,最后被一张数据库表说服了
团队因订单服务拆分半年后决定重新合并,源于对`order_item_snapshot`表的重新审视。争论焦点从按领域还是按用户旅程拆分,转向识别“商品目录”与“商品快照”的本质区别。核心原则是数据跟随其变更原因走,动态商品信息归商品服务,下单时不可变的交易快照归订单服务。最终通过快照表实现订单服务零外部依赖,大幅降低延迟,并明确了“不一致”才是快照的正确行为。
共 2 篇文章
团队因订单服务拆分半年后决定重新合并,源于对`order_item_snapshot`表的重新审视。争论焦点从按领域还是按用户旅程拆分,转向识别“商品目录”与“商品快照”的本质区别。核心原则是数据跟随其变更原因走,动态商品信息归商品服务,下单时不可变的交易快照归订单服务。最终通过快照表实现订单服务零外部依赖,大幅降低延迟,并明确了“不一致”才是快照的正确行为。
一场为期两天的事件风暴工作坊,帮助团队解决了微服务拆分的边界难题。核心在于强制统一业务语言,通过梳理领域事件、命令和聚合,从业务事件流中自然推导出服务边界。文章详细记录了建立共识、处理异常流程、将成果转化为代码结构的过程,并分享了落地时的事件版本管理、顺序问题及监控等实战经验。