外部API:API网关 / Backend for Front-

2018-08-28  本文已影响0人  scheshan

背景

假设你正在采用微服务架构构建一个在线商城,你正在实现一个产品详情页面。你需要开发不同版本的产品详情的用户界面:

此外,这个在线商场必须通过 REST API 暴露产品详情接口,给第三方应用程序使用。

产品性行情UI可以展示关于产品的许多信息。比如,Amazon.com 上 POJOs in Action 的详情页展示了:

由于在线商城采用了微服务架构,产品详情数据散步在多个服务。例如,

因此,展示产品详情的代码需要从这些服务获取信息。

问题

微服务为基础的应用客户端怎么访问分散的服务?

限制

解决方案

实现一个API网关,作为所有客户端的单一入口。API网关以两种方式之一处理请求。一部分请求简单的代理 / 路由到对应的服务。其他请求分散给多个服务。

image.png

相比起提供一刀切风格的API,API网关可以对不同的客户端暴露不同的接口。比如,Netflix API网关运行了对特定客户端的适配代码,为不同客户端提供了最适应它们需求的接口。

API网关业务通常实现了安全性,比如验证客户端发起请求时是否经过授权。

变异: Backent for front-end

这个模式的一个变异是 Backend for Front-End 模式。它为不同类型的客户端定义了不同的API网关。

image

在这个例子中,有三种类型的客户端:网站应用程序,移动端应用程序和第三方应用程序。也有三种不同的网关。每个网关为它的客户端提供接口。

示例:

结果

使用API网关有如下优势:

API网关有如下弊端:

问题:

相关模式

知名案例

示例应用

参考作者的微服务示例应用里的API网关。它采用了Spring Cloud Gateway实现。

上一篇 下一篇

猜你喜欢

热点阅读