目录
-
- 一、微服务架构的特点
- 二、微服务接口类设计技巧
-
- 2.1、BFF(Backend For Frontend)
-
- 2.1.1、 服务分布式带来的第一个挑战导致的几个典型问题
- 2.1.2、什么是 BFF
- 2.1.3、BFF 应用场景
- 2.1.4、BFF 落地经验
-
- 2.1.4.1、前端负责 BFF 开发优缺点
- 2.1.4.2、后端负责 BFF 开发优缺点
- 2.1.5、什么时候用 BFF 来提供接口,什么时候直接访问微服务
- 2.2、GraphQL
-
- 2.2.1、GraphQL 的概述
- 2.2.2、GraphQL 的基本原理
- 2.3、接口循环调用
本文来源:极客时间vip课程笔记
一、微服务架构的特点
-
服务分布式
原本由单体或者 SOA 系统提供的功能,现在由多个微服务来提供,不同微服务提供不同的功能。
-
数据分布式
原本由大一统的存储系统(主要是关系数据库 RDBMS)存储的数据,现在分散存储在多个独立的存储系统上,不同微服务可以根据数据特性,采用不同的存储系统。
二、微服务接口类设计技巧
2.1、BFF(Backend For Frontend)
2.1.1、 服务分布式带来的第一个挑战导致的几个典型问题
-
服务分布式带来的第一个挑战,就是前端(广义上的前端,含 App/H5/ 桌面客户端等,下同)原来可能只需要一个接口请求就能完成的功能,现在需要多次请求多个微服务不同的接口,尤其是一些复杂的页面,需要请求的后端接口会更多。这就导致了几个典型问题的出现。
-
第一个是请求性能问题。
这里的性能问题其实不是单个微服务接口处理的性能,而是前端和服务端来回请求的网络消耗。当一个页面需要请求多个接口获取后端数据的时候,即便能够并行发送多个请求,由于网络尤其是移动端网络的不稳定性,如果其中一个或几个请求访问慢的话,整个页面就可能会加载缓慢,从而影响用户体验。
-
第二个是网络带宽问题。
虽然单个微服务接口请求的数据可能不大,但是由于网络传输协议本身也需要占用不少字节空间(例如 HTTP 请求 header),大量的小请求会导致机房入口带宽大大增加,从而增加企业网络带宽成本。
-
第三个是前端开发成本问题。
前端需要理解和对接多个后端微服务,开发工作量、联调工作量都会增加不少。尤其是后端微服务经过演变,提供了多个版本接口时,多版本接口的选择和适配会给前端开发人员带来较大的理解和开发负担。
2.1.2、什么是 BFF
-
BFF 技术就是应对上述挑战的接口技术方案,全称是 Backend For Frontend,中文一般翻译为“前端专属后端”或“服务前端的后端”。
-
结合上图,接口访问基本逻辑如下。
当用户访问一个普通不复