最近公司业务繁忙,全力以赴在做狐小E,一直没时间做技术分享,现在上线了,终于有时间来写点东西。
网关是微服务架构不可或缺的一部分,作为微服务架构的唯一入口,将所有请求转发到后端对应的微服务上去,同时又可以将各个微服务中的通用功能集中到网关去做,而不是在每个微服务都实现一遍,比如权限校验,限流,熔断和监控等。
如图所示,这是个典型的前后端分离的微服务架构,但这个架构在的问题是,一个接口无法同时满足不同场景的业务。如移动端APP,可能与Web端、OpenAPI 的需求不一样,导致接口存在差异, 这时微服务就要对接不同的API需求,产生了各种各样的问题。
有没有更优雅的解决方式呢?那就是引入BFF,这个词是 2015 年 11 月 Sam Newman 在他的一篇博客中提出的。BFF 是 Backends for Frontends 的简写,为了前端的后端。Sam Newman 的博客还有一个副标题:Single-purpose Edge Services for UIs and external parties,为了用户界面或外部方的单一目的的边缘服务。用户界面比如我们常见的网页,或 App,外部方比如第三方 App,客户 App,企业微信,小程序等。其实这中模式更早一点就出现了,淘宝在更早一点的时候就设立中途岛项目,其主要内容就是 BFF。
BFF也称聚合层或者适配层,