可以简单理解为:他更像是一种思想,而不是一种具体的架构,在很多框架中都有体现,如国产的KONG,SOUL,SpringCloud中的ZUUL(NetFlix开源)都是网关的一种技术具体实现。
常见的API网关实现,其技术一般是依赖于:Netty + NIO + Servlet3.0 进行实现。
假设一种业务场景:服务1对外提供Http接口,同时依赖服务2的Dubbo协议接口,服务3的Http协议接口,服务4的SpringCloud协议,先不论接入的调试,至少我们项目在配置文件中,需要三个服务的地址或域名,每个环境都需要重新调试,对接三个系统。API网关就是帮助我们来解决这样一个场景的技术,我们不再需要单独调用每一个服务(当然还是可以单独调用的),只要将1,2,3,4服务全部暴露注册进网关,其余时候直接去网关请求就可以,网关负责转发,数据同步,请求对应的接口。既然可以完成请求,响应,转发,自然API网关就可以帮助我们实现鉴权,限流,熔断降级等效果。
一句话来说,API网关的功能就是接收并转发请求到实际的接口,然后将实际接口返回的数据返回给调用方。