![6884ac0d61cc52a6c4e26ff7af057354.png](https://img-blog.csdnimg.cn/img_convert/6884ac0d61cc52a6c4e26ff7af057354.png)
一. 什么是网关
网关一词较早出现在网络设备里面,比如两个相互独立的局域网段之间通过路由器或者桥接设备进行通信, 这中间的路由或者桥接设备我们称之为网关。
API 网关可以看做系统与外界联通的入口, 网关将各系统对外暴露的服务聚合起来,所有要调用这些服务的系统都需要通过 API 网关进行访问,基于这种方式网关可以对 API 进行统一管控,例如:认证、鉴权、流量控制、协议转换、监控等等。
API 网关的流行得益于近几年微服务架构的兴起,原本一个庞大的业务系统被拆分成许多粒度更小的系统进行独立部署和维护,这种模式势必会带来更多的跨系统交互,企业 API 的规模也会成倍增加,API 网关(或者微服务网关)就逐渐成为了微服务架构的标配组件。
二. 为什么需要 API 网关
为什么需要 API 网关?有如下几点原因:
RPC 协议转成 HTTP。由于在内部开发中我们都是以 RPC 协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将 RPC 协议转换成 HTTP 协议,也叫协议转换功能。
请求路由。在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。
统一鉴权。因为鉴权操作不涉及到业务逻辑,那么可以在网关层进行处理,不用下层到业务逻辑。
统一监控。由于网关是外部服务的入口,所以我们可以在这里监控我们想要的数据,比如入参出参,链路时间。
流量控制,熔断降级。对于流量控制,熔断降级非业务逻辑可以统一放到网关层。
三. 网关的应用场景
1、面向 Web 或者移动 App
这类场景,在物理形态上类似前后端分离,前端应用通过 API 调用后端服务,需要网关具有认证、鉴权、缓存、服务编排、监控告警等功能。
2、面向合作伙伴开放 API
这类场景,主要为了满足业务形态对外开放,与企业外部合作伙伴建立生态圈,此时的 API 网关注重安全认证、权限分级、流量管控、缓存等功能的建设。
3、企业内部系统互联互通
对于中大型的企业内部往往有几十、甚至上百个系统,尤其是微服务架构的兴起系统数量更是急剧增加。系统之间相互依赖,逐渐形成网状调用关系不便于管理和维护,需要 API 网关进行统一的认证、鉴权、流量管控、超时熔断、监控告警管理,从而提高系统的稳定性、降低重复建设、运维管理等成本。