Spring Cloud Zuul是什么?
我们已经可以基本搭建出一套简略版的微服务架构了,我们有注册中心Eureka,可以将服务注册到该注册中心中,我们有 Ribbon或Feign可以实现对服务负载均衡地调用,我们有Hystrix可以实现服务的熔断,但是我们还缺少什么呢?
来看一个 微服务架构图
在上面的架构图中,我们的服务包括:内部服务Service A和内部服务ServiceB,这两个服务都是集群部署,每个服务部署了3个实例,他们都会通过EurekaServer注册中心注册与订阅服务,而 Open Service是一个对外的服务,也是集群部署,外部调用方通过负载均衡设备调用Open Service服务,比如负载均衡使用Nginx,这样的实现是否合理,或者是否有更好的实现方式呢?接下来我们主要围绕该问题展开讨论。
1、如果我们的微服务中有很多个独立服务都要对外提供服务,那么我们要如何去管理
这些接口?特别是当项目非常庞大的情况下要如何管理?
2、在微服务中,一个独立的系统被拆分成了很多个独立的服务,为了确保安全,权限
管理也是一个不可回避的问题,如果在每一个服务上都添加上相同的权限验证代码来确
保系统不被非法访问,那么工作量也就太大了,而且维护也非常不方便。
为了解决上述问题,[微服务架构中提出了API网关的概念,它就像一个安检站一样,所有外部的请求都需要经过它的调度与过滤,然后API网关来实现请求路由、负载均衡、权限验证等功能;
所以Spring Cloud Zuul 就是为了实现请求路由、负载均衡、权限验证等功能