在微服务架构下,构建用户界面(UI)常常需要从多个服务拉数据。比如做一个“订单历史”页面,得去订单服务拿历史记录,还得从商品服务拉商品信息。如果有更多需求,可能还得连别的服务。
用户体验差:前端要分别向多个服务发网络请求,延迟叠加,页面加载慢。别忘了,有些用户可能在信号弱的手机上,或是老旧电脑、偏远地区,网速堪忧。五个慢请求加起来,可能比一个慢请求更折磨人。
代码重复:如果网页端和移动端都得实现同样的逻辑去合并多个接口返回的数据,那就得在三个客户端里复制粘贴逻辑,又重复又容易出错,维护起来头都大。
这时候,我们就要引入「前端后端」(backend-for-frontend)模式。👉 不让前端直接去调各个微服务,而是专门搞一个“中介服务”来统一拉数据、整合结果。用户只需要访问这一个接口,就搞定一切。
这不仅能减少网络往返次数,还能把缓存、降级、重试、熔断等逻辑集中处理,以后升级也方便,不必到处改代码。
而且还能为不同客户端提供定制化服务。比如移动端可能需要更多元数据,网页端反之。如图10.1所示。
现在你明白了这个模式的妙处,下面我们就动手实现一个电商网站的「前端后端」服务。