【51CTO.com快译】API网关是对微服务体系结构样式的一个关键结果的响应:服务及其接口的激增。API网关的核心目的是简化和稳定暴露给客户端的接口。
除此之外,由于API网关在体系结构中的独特位置,因此可以实现多种附加功能,例如监视,日志记录,安全性,负载平衡和流量操纵。
API网关类似于Facade设计模式,但应用于网络级别。这两种情况的目标都是提供一个简化的接口配置文件,以隐藏系统的复杂性。可以在下图中看到简单的API网关思路。
简化的界面
API网关的作用是将客户端与服务解耦,并在此过程中为入站和出站流量提供单点联系。
微服务后端可能涉及许多交互服务,这些服务的URL和协议可能是异构的。API网关可以为客户端提供一个简化的交互界面。在某种意义上,这就像一个简化代理。
此外,API网关可能更复杂,能够接受单个请求,检索必要的资源,并将它们组合成单个响应。例如,对用户概要文件的请求可能检索用户详细信息、最近的消息和兴趣。网关可以接收单个请求,从每个必要的服务请求数据,然后将它们统一为单个响应。
这种功能需要在架构级别上进行编排,并对其他微服务组件(如断路器和服务网)产生影响。
因为API网关能够转换后端使用的协议和URL,所以它很适合帮助迁移服务。也就是说,API网关在某种程度上可以隐藏后端发生的更改。
API稳定性
API网关还可以提高客户端与服务进行交互的API的稳定性。网关可以平滑那些可能破坏客户端或要求客户端进行更改的细微变化,开发人员可以使用网关将一些流量导向服务的新版本来测试它们。
通常,API网关为客户端提供单点联系点,这有助于将更改对后端服务的影响最小化。服务越复杂,更改越频繁,网关的功能就越有价值。
请注意,API网关还可以简化API表层,甚至对于内部客户端也是如此。也就是说,可以使用网关使微服务体系结构本身中的拓扑更容易管理。
监控方式
API网关在体系结构中的作用也使其非常适合进行某些类型的监视,警报和跟踪。同样,在网关处收集统计信息对于流量和使用情况的广泛分析也很有用。带有日志记录的API网关如下图所示。
有多种方法可以处理API网关日志记录的分析,比如使用Amazon Elasticsearch Service。
安全
由于网关是系统的单点入口,因此在系统加固中首当其冲。这类似于系统管理最佳实践中跳转主机的角色。
这样服务就能够主要关注与单个API网关的通信的安全,这比处理多个面向公共的API简单得多。
以上内容适用于基础设施级安全性。然而,网关也可以在业务级别上承担身份验证和授权的工作。这需要对所涉及的后端服务进行编排,但可以通过将安全逻辑集中在一个地方来简化事情。这自然与速率限制或使用付费联系在一起,因为网关将拥有用于计费的客户端帐户。
API网关解决方案
API网关解决方案分为两大类:托管的和自行开发的。在托管解决方案领域,每个云供应商都提供一个产品。这些可以通过搜索找到,因为它们被(毫无想象力地)命名为“Amazon API网关”、“Azure应用网关”和“谷歌云API网关”。
在开发自己的框架时,最好从一个能够帮助完成大量繁重工作的框架开始。例如,在Java生态系统中,Spring Cloud提供了Spring Cloud Gateway。而Nginx是另一个不错的选择。
API网关的实际应用
我们已经讨论了API网关可以提供的许多好处。但是,一定要记住这种权衡:网关也是需要维护的基础设施的另一部分。特别是,API网关必须与对后端和客户端的更改保持同步。也就是说,如果你的体系结构复杂性或业务需要它,API网关可能是不错的解决方案。
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】