知识卡片

Dubbo服务接口应粗粒度对应完整功能

操作参考卡 · 1976.p

内容

Dubbo官方最佳实践对接口有一组约束:接口尽量粗粒度,每方法代表一个完整功能而非某功能的一步,否则将面临分布式事务;按业务场景划分并抽象相近业务以防接口爆炸;不用无语义的通用接口如Map query(Map);每接口定义版本号;增方法加字段可兼容,删方法删字段及枚举新增字段不兼容需升版本;参数返回值用POJO、必须传值调用。遵循服务驱动设计,一个业务服务正好对应一个方法,粒度与Dubbo一致。发散:”一方法=一完整功能”的深层动机是避免把一次业务拆成多次远程调用而落入分布式事务陷阱。

参考来源

- 位置:《解构领域驱动设计》第18章《领域驱动设计的战略考量》18.2.2(源文件:_epub-src/OEBPS/031.xhtml) - 结论依据:原文完整列出Dubbo官方服务化最佳实践的接口约束,并指出其与服务驱动设计的业务服务粒度一致。 - 原始内容:服务接口尽可能粗粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题……服务参数及返回值都必须是传值调用,而不能是传引用调用。