示例
假设有一个电商App的“我的订单”页面,需要展示订单列表和用户昵称。
-
∙
没有业务网关:
App先请求**订单服务**获取订单列表。订单列表里只有用户ID,没有用户名。App再拿着用户ID去请求**用户服务**获取用户昵称。App将两次获取的数据组合后展示。- **问题**:App发出了多次请求,逻辑复杂,延迟高。 -
∙
有业务网关:
App只发送一次请求到 **业务网关**:`GET /api/my-orders`。网关进行**身份认证**(检查Token)。网关**同时调用**订单服务的`/internal/orders`和用户服务的`/internal/users`(内部协议,如gRPC)。网关将两个服务返回的数据**聚合**成客户端需要的JSON格式。网关将最终组合好的数据返回给App。- **好处**:客户端逻辑简单,只需一次请求,体验更好,后端微服务之间的调用在机房内部完成,速度极快。