关于springboot:微服务架构的外部-API-集成模式

5次阅读

共计 2579 个字符,预计需要花费 7 分钟才能阅读完成。

明天咱们来聊聊 API 集成,通过前两天的理解,咱们理解到微服务是多服务,松耦合的服务集,既然波及到了多服务,调用内部的 API 的必不可少的。
因为客户的多样性,设计应用程序的内部 API 变得更具备挑战性。这些客户端通常具备不同的数据要求。

1、间接沟通

这种形式以客户端间接调用服务的形式设计 API。因为以下毛病,微服务架构目前很少采纳这种办法。
客户端必须通过细粒度的服务 API 收回多个申请来检索他们须要的数据,这不仅效率低下,而且可能导致比拟差的用户体验。
因为客户端对每个服务及其 API 的理解导致不足封装,因而很难更改架构和 API。
客户可能感觉应用服务的 IPC 机制既不不便也不实用。

咱们在研发的时候,不能把放弃向后兼容性留给后端服务的开发人员。须要开发独自的公共 API,而不是间接向第三方公开服务。
这项艰巨的工作就是由 API 网关的架构组件实现的。

2、API 网关模式

间接拜访服务有许多毛病。API 网关是一种更好服务拜访模式。
基本上,API 网关也是一种服务,它充当内部应用程序的入口点。该组件负责申请路由、API 组合和其余横切关注点,例如身份验证、监控和速率限度。API 网关相似于 OOPS(设计模式) 中的外观设计模式。API 网关封装应用程序的外部架构并向其客户端提供 API。
API 网关还负责申请路由、API 组合和协定转换。来自内部客户端的 API 申请通过 API 网关,API 网关将一些申请路由到相应的服务。API 网关还能够通过调用多个服务并聚合后果来解决其余申请。服务器还能够在客户端敌对协定(例如 HTTP 和 WebSockets)与服务应用的客户端不敌对协定之间进行转换。

3、申请路由

申请路由是 API 网关最重要的性能之一。API 网关通过将申请路由到适当的服务来实现 API 操作。API 网关在收到申请时查问路由映射以确定将申请路由到哪个服务。例如,路由映射可能会将 HTTP 办法和门路映射到服务的 HTTP URL。NGINX 等 Web 服务器提供反向代理作为此性能的一部分。

4、API 组成

API 网关通常不仅仅做反向代理。他们还能够应用 API 组合执行 API 操作。API 网关为客户端提供了一个粗粒度的 API,使他们可能通过一个申请来检索他们须要的数据。
聚合器 / 组合模式有两个子模式。

  • 链式模式:基本上,这种类型的组合模式遵循链式构造。在这种模式下,客户端与服务通信,所有服务链接在一起,一个服务的输入成为下一个服务的输出。
  • 分支模式:分支模式是聚合器和链模式的扩大版本。客户端能够间接与服务通信,在这种设计模式下,服务能够同时与多个服务通信。

5、协定转换

API 网关也能够转换协定。只管应用程序服务在外部应用各种协定,包含 REST 和 gRPC,但它可能会向内部客户端提供 REST API。一些 API 操作在须要时在 RESTful 内部 API 和外部基于 gRPC 的 API 之间进行转换。
国外一些技术网站,把这项性能间接称为:Protocol Translation,间接翻译就是:协定翻译,我依据能力间接叫做:协定转换

6、前端模式的后端

API 网关能够提供一个通用的 API。繁多 API 面临的一个问题是不同的客户端通常有不同的需要。这个问题的解决方案是让客户端能够抉择在申请中指定服务器应该返回哪些字段和相干对象,就像应用 GraphQL 一样。对于必须为第三方应用程序提供服务的公共 API,这种办法就足够了,但它不能为客户提供更多可选的操作。
通过 API 网关为客户端提供个性化 API 是一个不错的抉择,我也比拟喜爱这个能力,从肯定水平上缩小了通信数据的压力

7、施行横切关注点

API 网关次要解决 API 路由和组合,但它们也可能解决横切关注点。横切关注点的例子包含:

  • 身份验证:验证发出请求的客户端身份。
  • 受权:验证客户端是否被受权执行该特定操作。
  • 速率限度:限度每秒来自特定客户端或所有客户端的申请数。
  • 缓存:缓存响应以缩小对服务的申请数量。
  • 指标收集:为计费剖析目标收集 API 应用指标。
  • 申请日志记录:记录申请。

注:横切关注点指的是一些具备横越多个模块的行为,应用传统的软件开发办法不可能达到无效的模块化的一类非凡关注点。比方典型的案例,日志性能

8、API 网关架构

API 网关具备分层的模块化架构。它由两层组成,API 层和公共层。一个或多个 API 模块形成 API 层。API 模块依据客户要求实现 API。

9、API 网关的益处

应用 API 网关的次要长处是它封装了应用程序的内部结构。
API 网关为客户端提供客户端特定的 API,缩小客户端和应用程序之间的往返次数
简化了客户端代码。

10、API 网关的毛病

减少保护老本,也是一个可开发、部署和治理的高可用性组件。
API 网关有可能成为开发瓶颈,因为开发人员必须不断更新 API 网关以公开他们的服务 API。

11、现成的 API 网关

有几种现成的服务和产品实现了 API 网关性能。

  • AWS API Gateway:AWS API Gateway API 是一组 REST 资源,每个资源都反对一个或多个 HTTP 办法。您能够配置 API 网关以将每个申请路由到后端服务。您须要在后端服务中实现 API 组合,AWS API Gateway** 不反对 API 组合。
  • Kong:Kong 基于 NGINX HTTP 服务器,它容许您依据 HTTP 办法、标头和门路定义灵便的路由规定,以决定应用哪个后端服务。

12、开发 API 网关

应用 Web 框架,您能够构建本人的 API 网关,将申请代理到其余服务。咱们来看看 Netflix Zuul 和 Spring Cloud Gateway。

  • Netflix Zuul:Zuul 是一个 Netflix 框架,它实现了诸如路由、速率限度和身份验证等横切性能。Zuul 应用了过滤器的概念,过滤器是相似于 servlet 过滤器的可重用申请拦截器。Zuul 通过组装一系列过滤器来解决 HTTP 申请,这些过滤器会转换申请、调用后端服务并将响应发送到客户端之前对其进行转换。
  • Spring Cloud Gateway:Spring Cloud Gateway 是一个 API 网关框架,基于 Spring Framework、Spring Boot 和 Spring Webflux,一个反应式 Web 框架。

Spring Cloud Gateway 提供了一种简略而全面的形式来实现以下工作:

  • 将申请路由到后端服务。
  • 实现执行 API 组合的申请处理程序。
  • 解决横切关注点,例如身份验证。
正文完
 0