微服务数据管理与容错 — 软件工程选择题
题目
某预约微服务将每次预约变更先写入本地数据库,再异步发布事件;服务可能在数据库提交后、事件发布前崩溃。要求不使用分布式事务,确保已提交的变更最终可被下游处理,且重复投递不会重复生效。以下哪种方案满足要求?
A. 先发布事件,再写入本地数据库;下游按事件内容处理
B. 将变更与待发布事件写入同一本地事务,由后台任务重试发布,下游按事件唯一标识幂等处理
C. 仅在内存中暂存事件,发布失败时由服务重启后重新生成
D. 数据库提交后立即发布事件,若未收到下游确认则回滚本地数据库