Spring Cloud教程-API网关简介
API网关简介
什么是API网关?
API代表应用程序接口。它是一组用于构建软件应用程序的指令、协议和工具。它规定了软件组件之间应该如何交互。
API网关是一个服务器,它是系统的单一入口点。API网关封装了内部系统架构。它为每个客户端提供定制的API。它还具有其他职责,如身份验证、监控、负载平衡、缓存、请求塑形和管理,以及静态响应处理。
API网关还负责请求路由、组合和协议转换。所有客户端发出的请求都经过API网关。然后,API网关将请求路由到适当的微服务。
API网关以以下两种方式之一处理请求:
- 将请求路由或代理到适当的服务。
- 将请求分发到多个服务。
API网关可以为每个客户端提供自定义API,并在两种协议之间进行翻译,例如HTTP、WebSockets和内部使用的Web-Unfriendly协议。
示例
API网关的典型示例是Netflix API网关。Netflix流媒体服务可用于数百种不同类型的设备,如电视、机顶盒、智能手机、平板电脑等。它试图为其流媒体服务提供一个“一刀切”的API。
API网关包括:
- 安全性
- 缓存
- API组合和处理
- 管理访问配额
- API健康监测
- 版本控制
- 路由
API网关的优点
- API网关最重要的优点是封装了应用程序的内部结构。
- 客户端直接与API网关交互,而不是调用特定的服务。
- 减少了客户端与应用程序之间的往返次数。
- 简化了客户端代码。
- 减少了编码工作,使应用程序更高效,同时减少了错误。
- 为每种类型的客户端提供了特定的API。
缺点
- 需要路由规则。
- 存在单点故障的可能性。
- 所有API规则都集中在一处可能会增加复杂性。
API网关的工作原理
在微服务中,我们通过API路由所有请求。我们可以在API网关中实现常见功能,如身份验证、路由、速率限制、审计和日志记录。
考虑这样一个场景,我们不希望特定客户端调用某个微服务超过五次。我们可以将此作为API网关中的限制的一部分来实现。我们可以在API网关中跨微服务实现常见功能。Zuul API网关是一个常见的API网关实现。
我们必须在所有微服务中实现以下功能:
- 服务聚合
- 身份验证、授权和安全性
- 速率限制
- 容错性
假设有一个外部消费者想要在一个流程中调用十五个不同的服务。最好将这十五个服务聚合起来,并为外部消费者提供一个服务调用。这些都是在所有微服务中通用的功能。这些功能在API级别实现。
与其允许微服务直接相互调用,不如通过API网关执行所有调用。API网关将处理常见功能,如身份验证、容错性等,并提供所有微服务的聚合服务,因为所有调用都经过API网关。