当前位置:首页>开发>正文

如何架构一个合适的企业API网关

2024-06-27 13:31:36 互联网 未知 开发

如何架构一个合适的企业API网关?

如何架构一个合适的企业API网关

在我们讲的微服务架构下的API网关,一般指的是前三类使用场景。即,主要是把企业内部的API能力,暴露给其他应用或合作伙伴使用。网关层作为客户端与服务端的一层挡板,主要起到了三大类作用:

第一类作用是隔离作用,作为企业系统边界,隔离外网系统与内网系统。

第二类作用是解耦作用,通过解耦,使得微服务系统的各方能够独立、自由、高效、灵活地调整,而不用担心给其他方面带来影响。

第三类作用是脚手架作用,提供了一个地点,方便通过扩展机制对请求进行一系列加工和处理。

二:网关的好处

(1)网关层对外部和内部进行了隔离,保障了后台服务的安全性。

(2)对外访问控制由网络层面转换成了运维层面,减少变更的流程和错误成本

(3) 减少客户端与服务的耦合,服务可以独立发展。通过网关层来做映射。

(4)通过网关层聚合,减少外部访问的频次,提升访问效率。

(5)节约后端服务开发成本,减少上线风险。

(6)为服务熔断,灰度发布,线上测试提供简单方案。

(7)便于扩展。

三:API网关需要考虑的因素

1、安全性问题

企业在把服务暴露给外部使用时,首先要确保服务使用的安全,防止外部的恶意访问对公司业务的影响,特别是涉及交易方面的服务,更是要全面考虑安全性。为确保安全,需要考虑在通讯链路的建立、通讯数据的加密、数据的完整性、不可抵赖性等方面。

2、性能问题

作为企业API的入口,所有的请求都会经过API网关进行转发,可想而知,对API网关的访问压力是巨大的,有的网站甚至达到每分钟上千万的访问量。特别是在一些互联网企业,海量的移动终端每时每刻都需要与后端的服务进行交互,如果不能保证网关的高性能,企业在网关层需要投入大量的设备和成本。曾在一家互联网公司发生过,由于网关性能问题,网关的机器数量,需要与后台服务器的数量保持同步增长。这种情况显然是企业服务忍受的。

四:API网关的功能

企业级API网关应该提供下列的功能:

API网关功能

1.服务路由:外部服务访问接口映射到对应的内部服务访问接口。

2.认证授权:提供对用户身份的认证以及用户权限验证,包括用户身份的合法性、针对用户角色的访问授权验证、针对用户的访问授权验证、IP 黑名单验证等。

3.超时处理:当 API 网关调用的内部服务响应时间超过了在自主开发的 API 网关后台管理子系统中所设置的允许最长的超时时间时,API 网关会立即停止调用,并返回相关消息给你。

4.限流控制:当你通过 API 网关调用内部服务的频率达到在某个阈值时,API 网关会立即做断开链路处理。过了时间后,链路会自动闭合回去。

5.熔断处理:熔断处理对避免无谓的资源消耗特别有用,当通过 API 网关调用的内部服务出现异常的频率达到某个阈值时,那么 API 网关会做临时熔断处理即临时断开链路,暂时停止你对那个内部服务的调用。临时熔断后,过了一段时间后,链路会自动闭合回去。

6.日志信息记录:会记录客户 IP、客户请求参数、返回结果、异常信息等信息。

7.负载均衡: 提供API接口的负载均衡,能够处理API接口的高并发访问,防止服务雪崩。

8.安全防护:提供严格的认证服务,支持算法签名,用户使用 API 网关提供的密钥进行认证,没有被授予密钥的客户端无法调用业务 API接口,经过认证授权的请求才能到达后端应用服务。同时SSL 加密。

9.灰度发布:支持API接口线上灰度部署,减少应用版本切换风险。


如何架构一个合适的企业API网关
如何架构一个合适的企业API网关

企业级API网关必须要买商业的API网关才可以,开源的只适合有技术实力的互联网企业使用,传统企业的API网关的功能开源的远远满足不了需求,要在开源的基础上改动很大的工作量,企业最终要形成企业自己的API接口统一管理平台实现API的全生命周期管理,而不是定位在纯网关级别。我们是专业做企业级API网关的RestCloud,非常清楚要做好里面的工作量非常大。

技术选型

企业api网关现在越来越多被大型企业选择,可以了解nginx体系下的openresty,openresty edge,kong。java体系下的spring cloud gateway作为选型。一般完全自研没必要的,门槛有点高。

需求范围

企业api网关是个统称,包含的功能很多,如数据路由,协议转换,熔断,限流,应用防火墙,灰度发布等等。如果要自主研发,先明确下需求范围。

高可用

企业网关作为一个流量入口,自身的高可用要求很高,有问题如同断网的影响。需应用和系统架构师商讨设计。