标准答案
- 领域边界把业务规则、术语、状态和数据责任划到一个可理解的范围内,同一个词在不同边界里可以有不同含义。
- 限界上下文要求边界内的模型保持一致,边界之间通过 API、事件或明确的集成契约协作。
- 共享数据库会让其他服务绕过契约直接读取或修改表,表结构一变就会牵动多个服务。
- 必要的数据共享应通过发布事件、只读副本、专用查询模型或明确接口完成,而不是让所有服务直接连同一个业务库。
题目解析
例如“订单状态”在订单域代表履约流程,在财务域可能代表结算状态。把它们强行塞进一个通用表,常会导致字段含义不清和修改互相影响。
数据库可以暂时共享以降低迁移成本,但需要明确所有者、只读范围和迁移路径。长期无边界的共享写入,会把微服务退化成分布式单体。
常见误区
- 把限界上下文理解成每个名词都必须建一个服务。
- 认为服务有独立代码仓库就自然拥有独立边界。
- 用共享表解决接口设计困难,导致数据语义和变更责任失控。