通过前面的分析可以发现,网关的本质应该是对请求进行路由转发,以及对请求进行前置和后置的过滤。
-
请求的转发和路由:接受客户端的所有请求,并将请求转发到后端的微服务中。因为微服务的粒度比较细,所以API网关又类似于门面模式,对多个微服务进行功能整合,提供唯一的业务接口给客户端。
-
过滤:网关会拦截所有的请求来完成一系列的横切工作,比如鉴权、限流。
常见的开源API网关实现方案有很多,比如OpenResty、Zuul、GateWay、Orange、Kong、Tyk等,下面我们简单来讲几种框架。
Spring Cloud Zuul
Zuul是Netfix开源的微服务网关,它的主要功能是路由转发和过滤。大部分读者接触到Zuul应该是Spring Cloud Netflix生态中,它被整合到Spring Cloud 中为微服务架构提供API网关的功能。