天天看点

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

3.5 Zuul 2.0 服务架构新特性

zuul2.0使用netty server作为网关监听服务器监听客户端发来的请求,然后把请求转发到前置过滤器(inbound filters)进行处理,处理完毕后在把请求使用netty client代理到具体的后端服务器进行处理,处理完毕后在把结果交给后者过滤器(outbound filters)进行处理,然后把处理结果通过nettyServer写回客户端。

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

在zuul1.0时候客户端发起的请求后需要同步等待zuul网关返回,zuul网关这边对每个请求会分派一个线程来进行处理,这会导致并发请求数量有限。

而zuul2.0使用netty作为异步通讯,可以大大加大并发请求量。

4 实践

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践
SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践
SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践
SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践
SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

注意端口

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

嵌入式Zuul反向代理

Spring Cloud已经创建了一个嵌入式Zuul代理,以简化UI应用程序想要代理对一个或多个后端服务的调用的非常常见的用例的开发。此功能对于用户界面对其所需的后端服务进行代理是有用的,避免了对所有后端独立管理CORS和验证问题的需求。

要启用它,使用@EnableZuulProxy注释Spring Boot主类,并将本地调用转发到相应的服务

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

按照惯例,ID为“用Users”的服务将接收来自位于/users的代理(具有前缀stripped)的请求。

代理使用Ribbon来定位要通过发现转发的实例,并且所有请求都以hystrix命令执行,所以故障将显示在Hystrix指标中,一旦电路打开,代理将不会尝试联系服务。

添加注解

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

Zuul启动器不包括发现客户端,因此对于基于服务ID的路由,还需要在类路径中提供其中一个路由(例如Eureka)

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践

先将 Product 服务启动

SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践
SpringCloud微服务实战(十一)-微服务网关及其实现原理(Zuul为例讲解)(下)4 实践