Lazy loaded image
API网关(
00 分钟
2024-10-9

意图

在单个位置(API 网关)中聚合对微服务的调用。用户对 API 网关进行一次调用,然后 API 网关调用每个相关的微服务。

解释

使用微服务模式,客户端可能需要来自多个不同微服务的数据。如果客户端直接调用每个微服务,这可能会导致加载时间更长,因为客户端必须为每个调用的微服务发出网络请求。此外,让客户端调用每个微服务直接将客户端与该微服务联系起来——如果微服务的内部实现发生变化(例如,如果两个微服务在未来某个时间合并)或者如果微服务的位置(主机和端口)更改,则必须更新使用这些微服务的每个客户端。
API 网关模式的目的是缓解其中一些问题。在 API 网关模式中,在客户端和微服务之间放置了一个额外的实体(API 网关)。API 网关的工作是聚合对微服务的调用。客户端不是单独调用每个微服务,而是一次调用 API 网关。API 网关然后调用客户端需要的每个微服务。
现实世界的例子
我们正在为电子商务网站实现微服务和 API 网关模式。在这个系统中,API 网关调用 Image 和 Price 微服务。
简单来说
对于使用微服务架构实现的系统,API 网关是聚合对各个微服务的调用的单一入口点。
维基百科说
API 网关是充当 API 前端的服务器,接收 API 请求,执行限制和安全策略,将请求传递给后端服务,然后将响应传递回请求者。网关通常包括一个转换引擎,用于动态编排和修改请求和响应。网关还可以提供收集分析数据和提供缓存等功能。网关可以提供支持身份验证、授权、安全、审计和法规遵从性的功能。
程序示例
这个实现展示了电子商务网站的 API 网关模式可能是什么样的。分别使用和ApiGateway调用 Image 和 Price 微服务。在桌面设备上查看网站的客户可以同时看到价格信息和产品图片,因此调用这两个微服务并聚合模型中的数据。但是,移动用户只能看到价格信息;他们看不到产品图片。对于移动用户,唯一检索价格信息,用于填充.ImageClientImpl PriceClientImpl ApiGateway DesktopProductApi GatewayMobileProduct
这是 Image 微服务实现。
这是 Price 微服务实现。
在这里,我们可以看到 API Gateway 如何将请求映射到微服务。

类图

notion image

适用性

在以下情况下使用 API Gateway 模式
  • 您正在使用微服务架构,并且需要为您的微服务调用提供单点聚合。
  • Controller
 
上一篇
flowable获取下一步会创建的用户任务
下一篇
Kafka实现oracle的CDC数据实时变更

评论
Loading...