作者回复: 前后分离并不是说就没有Web应用了,因为有遗留应用的问题。很多互联网公司都是既有传统Web应用,同时又有新的前后分离应用,所以这些公司一般既有API网关,也有面向遗留Web应用的反向代理,也有一些公司完全是前后分离的,没有传统Web应用。
作者回复: 课程中讲了,BFF的核心作用是聚合裁剪,所以通常也叫聚合层。 聚合:将多个后台基础服务聚合成一个服务,例如首页需要同时展示分类和产品,那么BFF聚合服务就要聚合后台的分类服务和产品服务,提供一个统一的聚合后的服务给前端页面展示。 裁剪:后台提供的基础服务一般比较通用(或者说字段比较多),那么针对不同的用户体验(PC,手机,PAD),BFF聚合服务就要对后台服务进行适当的裁剪,比如手机屏幕小,需要多裁剪掉一些字段,而PC屏幕大,就少裁剪掉一些字段。
作者回复: client可以不经过BFF直接调用内部微服务,这个主要看企业微服务复杂度和规模,规模小,前端应用形态不复杂的话,未必需要BFF层。如果规模大,前端应用形态很多,就要考虑独立BFF层,这样架构职责更清晰分明,系统更加灵活易于扩展。
作者回复: 对,类似spring mvc这种采用服务器端模版引擎渲染的。
作者回复: nginx可以作为网关用,例如kong可以认为是扩展版的nginx,专门针对微服务api场景;nginx的功能也可以由现代云原生网关(或称反向代理)代替,例如traefik和envoy等。
作者回复: 不是一个大集群,而是分集群部署,比如h5网关单独一个集群,无线网关单独一个集群,因为针对不同的场景,网关的功能和配置也会有不同。
作者回复: BFF层和微服务层的这种划分是逻辑性的,不是物理性的。公司可以根据业务规模灵活划分,比如早期并不严格区分,BFF层和微服务合并在一起,等到了一定规模再考虑区分开,让架构更加清晰规范。
作者回复: 你指的是哪一种后台管理?如果是业务的后台管理,一般看业务需求,比如电商后台管理,这个肯定不是每个服务一个后台。还有像Spring Boot Admin这种管理界面,这个也可以只部署一个,它可以监控其它的Spring Boot应用和实例。
作者回复: 你好,网关和后台服务(包括BFF)的反向路由实现方式有很多,简单的可以静态配地址,也可以引入服务注册中心,比如Eureka等。
作者回复: 谢谢支持!加油!