知识卡片
处理业务不一致的三种策略:无视、致歉、解决
内容
面对分布式系统里[[最终一致性暂时不一致不可避免且适用于所有远程通信]]描述的不一致,有三种基本处理策略,选哪种是一个明确的业务决策而非技术对错问题,核心衡量标准始终是成本/价值比。无视:接受不一致继续存在,不做任何专门处理——听起来奇怪,却是一个真实有效的策略,前提是不一致造成的业务影响可以接受(比如CRM里留一条从未真正入账单的无用记录,只是让某些报告数据略有偏差、营销活动偶尔碰到被拒用户,业务判断这种小概率影响可忽略);作者强调这不是鼓励忽视一致性问题,而是指出”用不做处理换取开发成本节省”在某些场景下确实是合理的业务判断,必要时事后可以靠对账工作弥补累积影响。致歉:是无视策略的延伸——不主动阻止不一致发生,但一旦被发现造成影响,就主动道歉补偿(比如忽略SIM卡注册故障,等用户投诉后道歉并送代金券再手动处理),本质上仍是成本/价值权衡,类似航空公司超额预订机票的逻辑:在绝大多数情况下不做一致性控制、承担少量道歉成本反而更便宜。解决:正面处理不一致问题,可以靠批处理式的对账作业(继承[[批处理实现流程自动化的三大缺陷]]描述的所有缺点),也可以用Saga模式或发件箱模式在单个实例层面解决,无需等待任何批处理运行。选择哪种策略必须有业务利益相关者参与决策,不能由IT部门单方面拍板,图形化流程模型这类可见性工具能帮助各方一起看清任务顺序和潜在失败点,从而做出更明智的选择。
结构图:
flowchart TD
A[处理业务不一致的三种策略] --> B[无视<br/>接受不一致,不做处理]
A --> C[致歉<br/>被发现后补偿]
A --> D[解决<br/>正面消除不一致]
B -->|适用| B1[业务影响可忽略,节省开发成本]
C -->|适用| C1[少量道歉成本低于全面一致性控制成本]
D --> D1[对账批处理作业<br/>继承批处理缺陷]
D --> D2[Saga模式/发件箱模式<br/>实例层面即时解决]
A -.决策主体.-> E[业务利益相关者,非IT单方面决定]
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第9章《工作流引擎与集成挑战》"9.2.2 处理不一致的业务策略"(源文件:_epub-src/EPUB/xhtml/Section0001_0013.xhtml)
- 结论依据:原文逐条说明无视、致歉、解决三种策略的具体表现、成本价值比的判断依据,以及Saga/发件箱模式作为实例层面解决方案相对批处理对账的优势,并强调决策需要业务利益相关者参与,直接支撑本卡片的结构图与解释。
- 原始内容:虽然无视一致性问题听起来很奇怪,但它实际上是一个有效的策略……在98%的案例中,不进行一致性控制,接受几个昂贵的道歉的成本可能会更便宜……选择一致性问题最佳解决策略是一个业务决策……这个决策需要业务利益相关者的参与。