知识卡片

BFF层:企业级跨中台微服务集成的组合编排层

普通读书笔记卡

内容

微服务集成有两种规模:项目级微服务只需在某个关键微服务的应用层里,通过应用服务组合调用其他微服务的应用服务即可完成集成,前端应用只访问这一个封装好的facade接口,不必关心背后有多少个微服务在协作。但当企业级业务流程需要多个中台的微服务协同完成时,集成规模会大到不适合再塞进某一个微服务内部处理——这时可以在多个微服务之上增加一层BFF(Backend for Frontends,服务于前端的后端),专门负责跨中台微服务的服务组合编排、实现微服务间的服务和事务协作,还能通过facade接口适配不同前端渠道的接口和数据需求。BFF微服务和普通微服务有本质区别:它只有应用层和用户接口层,没有领域模型也没有领域层,因为它根本不需要实现任何领域逻辑;它和应用服务的差异也很清晰——应用服务做的是微服务内部的服务组合编排,BFF做的是微服务之间的服务组合编排。这个案例说明当”需要被组合编排的对象”从”一个微服务内的多个聚合”升级为”多个微服务本身”时,编排这件事本身也需要被相应地提升到一个新的、专门的架构层次,而不是硬塞进某个微服务的应用层了事。

参考来源

- 位置:第11章《几种微服务架构模型对比分析》"11.4.2 微服务要有合理的架构分层"(源文件:_epub-src/OEBPS/Text/chapter3-7-4-2.xhtml) - 结论依据:原文说明"我们可以在多个微服务上增加一层……这一层就是BFF层……它的主要职能是处理跨中台微服务的服务组合和编排……BFF微服务只有应用层和用户接口层的职能……所以它没有领域模型,也不会有领域层……BFF主要是微服务之间的服务组合和编排,而应用服务主要是微服务内的服务组合和编排",直接支撑本卡片结论。 - 原始内容:BFF微服务与其他微服务存在较大差异……所以它没有领域模型,也不会有领域层,它不需要实现领域逻辑。BFF微服务与应用服务的差异主要体现在:BFF主要是微服务之间的服务组合和编排,而应用服务主要是微服务内的服务组合和编排。