在微服务架构中,服务的粒度被进一步细分,各个业务服务可以被独立的计划、开辟、测试、摆设和管理。各个独立摆设单元可以用差别的开辟测试团队维护,可以使用差别的编程语言和技术平台举行计划,这就要求必须使用一种语言宁静台无关的服务协议作为各个单元间的通讯方式。而REST API 由于其简朴、高效、跨平台、易开辟、易测试、易集成,成为了不二选择。此时假如都是接纳客户端和服务器直连的话,那么此时系统就会出现大量的冗余代码和功能,维护起来工作量巨大,而且随着服务增多,出错性也大大的增长。因此一个类似综合前置的系统就产生了,这就是 API 网关(API Gateway)。API 网关作为分散在各个业务系统微服务的 API 聚合点和统一接入点,外部哀求通过访问这个接入点,即可访问内部所有的 REST API 服务。
2. API网关定义
网关的角色是作为一个 API 架构,用来保护、加强和控制对于 API 服务的访问。
API 网关是一个处于应用步伐或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限定等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。因此,隐蔽在 API 网关后面的业务系统就可以专注于创建和管理服务,而不消行止理这些计谋性的基础设施。
**哀求接入:**作为所有 API 接口服务哀求的接入点,管理所有的接入哀求;
**业务聚合:**作为所有后端业务服务的聚合点,所有的业务服务都可以在这里被调用;
**中介计谋:**实现安全、验证、路由、过滤、流控,缓存等计谋,举行一些必要的中介处理;
**统一管理:**提供配置管理工具,对所有 API 服务的调用生命周期和相应的中介计谋举行统一管理。
4. API网关分类
面临互联网复杂的业务系统,基本可以将API网关分成两类:流量网关和业务网关。
**流量网关:**跟具体的后端业务系统和服务完全无关的部分,比如安全计谋、全局性流控计谋、流量分发计谋等。流量网关的功能跟 Web 应用防火墙(WAF)非常类似。WAF一般是基于 Nginx/OpenResty 的 ngx_lua 模块开辟的 Web 应用防火墙。
**业务网关:**针对具体的后端业务系统,或者是服务和业务有一定关联性的部分,并且一般被直接摆设在业务服务的前面。业务网关一般摆设在流量网关之后,业务系统之前,比流量网关更靠近系统。我们大部分环境下说的 API 网关,狭义上指的是业务网关。并且假如系统的规模不大,我们也会将两者合二为一,使用一个网关来处理所有的工作
5. 开源API网关先容