一、为什么要有服务网关
我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了使得服务集群更为健壮,使用Hystrix的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。
在这样的架构中,对外服务Open Service这块,直接暴露我们的服务地址,这样的实现是不合理的,它破坏了服务无状态特点,无法直接复用既有接口。解决这些问题,就是服务网关了。
Spring Cloud Netflix中的Zuul就起到了服务网关的作用,添加服务网关Zuul后,不管是来自于客户端(PC或移动端)的请求,还是服务内部调用。一切对服务的请求都会经过Zuul这个网关,然后再由网关来实现 鉴权、动态路由等等操作。Zuul就是我们服务的统一入口。
有网关和没有网关的架构图比较
二、Zuul是什么呢
Zuul是Netflix开源的微服务网关,他可以和Eureka、Ribbon、Hystrix等组件配合使用,它的核心是