五.Spring Cloud网关路由实践(Zuul)

开宗明义
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统(A服务和B服务可以相互调用)

五.Spring Cloud网关路由实践(Zuul)_第1张图片
Screenshot from 2018-02-22 21-06-24.png

Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能

1 创建路由网关工程

1.1 创建springboot工程作为路由网关工程,命名为service-zuul


五.Spring Cloud网关路由实践(Zuul)_第2张图片
Screenshot from 2018-02-22 21-12-24.png

1.2 创建后的pom.xml文件(引入eureka,zuul,web依赖)


五.Spring Cloud网关路由实践(Zuul)_第3张图片
Screenshot from 2018-02-22 21-14-58.png

1.3 启动类ServiceZuulApplication ,加上@EnableZuulProxy注解开启zuul的功能


五.Spring Cloud网关路由实践(Zuul)_第4张图片
Screenshot from 2018-02-22 21-19-11.png

1.4 配置application.yml文件(首先指定服务注册中心的地址为http://localhost:8765/eureka/,服务的端口为8770,服务名为service-zuul;以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务)

五.Spring Cloud网关路由实践(Zuul)_第5张图片
Screenshot from 2018-02-22 21-22-49.png

1.5 依次运行所有工程,访问localhost:8770/api-a/hi?name=Silent-Y


五.Spring Cloud网关路由实践(Zuul)_第6张图片
Screenshot from 2018-02-22 22-01-17.png

1.5.1 访问localhost:8770/api-b/hi?name=Silent-Y


五.Spring Cloud网关路由实践(Zuul)_第7张图片
Screenshot from 2018-02-22 22-04-24.png

2 服务过滤(过滤功能以及安全验证功能)

2.1 基于service-zuul工程改造,新增一个MyFilter类继承ZuulFilter


五.Spring Cloud网关路由实践(Zuul)_第8张图片
Screenshot from 2018-02-22 22-30-17.png

filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
pre:路由之前
routing:路由之时
post: 路由之后
error:发送错误调用

filterOrder:过滤的顺序
shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。

2.2 此时访问localhost:8770/api-b/hi?name=Silent-Y


五.Spring Cloud网关路由实践(Zuul)_第9张图片
Screenshot from 2018-02-22 22-36-02.png

2.2.1 再访问localhost:8770/api-b/hi?name=Silent-Y&token=有内鬼,行动取消


五.Spring Cloud网关路由实践(Zuul)_第10张图片
Screenshot from 2018-02-22 22-37-22.png

未完待续......

你可能感兴趣的:(五.Spring Cloud网关路由实践(Zuul))