网关架构
成熟的架构示例
(有些公司不区分网关和BFF层)
BFF的核心作用是聚合裁剪,所以通常也叫聚合层。 聚合:将多个后台基础服务聚合成一个服务,例如首页需要同时展示分类和产品,那么BFF聚合服务就要聚合后台的分类服务和产品服务,提供一个统一的聚合后的服务给前端页面展示。
裁剪:后台提供的基础服务一般比较通用(或者说字段比较多),那么针对不同的用户体验(PC,手机,PAD),BFF聚合服务就要对后台服务进行适当的裁剪,比如手机屏幕小,需要多裁剪掉一些字段,而PC屏幕大,就少裁剪掉一些字段。
BFF——主要作用聚合、裁剪,针对复杂业务以及前端比较丰富的情况。
网关——主要作用请求路由、负载均衡、安全防护、隐藏内部实现细节。
Faraday网关实践
- 基于HttpServletFilter实现, zuul也是的
- 核心为路由映射表以及httpClient映射表
- 路由映射, 在配置文件定义了域名与实例的映射关系(也可以定义服务名, 请求头等与实例的映射), 也可以借助eureka, zk等服务发现机制来实现动态映射
- httpClient映射则是为每一个实例提前初始化一个httpClient
- 请求转发器, 可以实现灵活的LB策略
- 此外, 可以在截获器, 设置请求头, 认证鉴权, 日志监控等