扫码阅读
手机扫码阅读

系统设计 | "胖瘦" BFF:常见的两种微服务形态

179 2024-08-27

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:系统设计 | "胖瘦" BFF:常见的两种微服务形态
文章来源:
TechLead 少个分号
扫码关注公众号

本文探讨了微服务架构中的Backend for Frontend (BFF) 概念,以及在微服务架构中BFF的两种不同形态:胖BFF和瘦BFF。作者通过分析各自的职责、好处和弊端,对比了这两种架构形态,以及在不同的业务场景下如何选择最合适的架构。

胖瘦BFF之争

作者描述了在服务化系统中,BFF的讨论重点在于它是直接转发数据还是需要重新编写API实现。这决定了在BFF中编写的代码量,并导致了所谓的“胖瘦BFF”区别。胖BFF职责繁多,包括鉴权、限流、熔断、服务降级、灰度路由等,还会编排领域服务,避免后端服务之间的依赖,且对不同类型的客户端提供一套BFF。瘦BFF功能较少,主要负责鉴权和流量转发,优势在于端到端交付和开发效率。

两种形态对比

作者提出了两种常见架构的对比:一个是各自的入口服务承接不同来源请求的架构(胖BFF),另一个是前端直接调用后端服务,忽略BFF的架构(瘦BFF)。胖BFF适合接入渠道多样的系统,而瘦BFF更适合接入差异较小的应用。

权衡和选择

选择合适的BFF架构取决于业务场景的不同。电商和互联网产品开发者更倾向于胖BFF,而企业内部应用由于用户群较固定,可能会发现胖BFF中存在大量重复代码。另外,企业内部应用在系统集成方面可能需要设计具有编排能力的BFF。

总结

无论是胖BFF还是瘦BFF,它们都是基于特定场景对单体系统拆分的结果。选择哪一种架构需要根据所属场景的特点,并能接受其缺点。由于应用开发需求的多样性,目前尚无一劳永逸的技术架构。

文章最后提供了参考资料,并邀请读者通过作者的微信号反馈内容错误以领取红包,并推荐阅读相关的系统设计主题文章。

想要了解更多内容?

查看原文:系统设计 | "胖瘦" BFF:常见的两种微服务形态
文章来源:
TechLead 少个分号
扫码关注公众号