为什么微服务要“隐藏实现细节,只暴露必要接口”?如果服务直接读别人的数据库会有什么问题?
Why should services hide implementation details and expose only necessary APIs? What goes wrong if Service B reads Service A's database directly?
题目类型: 技术面试题
这是一道技术面试题,常见于澳洲IT公司面试中。
难度: medium
分类: System Design
标签: database-per-service, contract
参考答案摘要
答案 微服务边界依赖稳定的契约(API/事件)。如果 Service B 直接访问 Service A 的数据库,相当于把私有实现变成公共依赖: Service A 的 schema 变更会直接破坏 Service B,导致发布必须协调。 无法判断谁在用哪些表/字段,降低演进与重构能力。 权限、安全与数据一致性更难治理,形成“隐形单体”。 正确做法是通过 Service A 的 API/事件获取数...
本题提供 STAR 原则详细解答和技术解析,登录匠人学院学习中心即可查看完整答案。