Spring Cloud Zuul (服务网关)

1.zuul的作用

1.1服务的统一入口

Zuul的主要功能是路由和过滤器。是各种服务的统一入口,同时还会用来提供监控、授权、安全、调度等等。

如上图所示,在无网关的情况下,API接口直接暴露给服务调用方,当调用方增多,不同业务调用方各不相同,势必需要添加定制化访问权限、校验等逻辑。

加入网关后,所有的请求被API网关截获,可以先做权限认证,然后通过负载均衡(ribbon)调用后台服务。

1.2filter功能


如上图所示,可以通过扩展ZuulFilter,在执行方法之前,做各种检查工作。


1) Pre: 过滤规则在路由之前起作用。可以利用“Pre”过滤器实现用户鉴权,记录请求日志等;


2) Routing:过滤规则在路由时发生作用。可以利用“Routing”过滤器实现动态路由、灰度发布、A/B测试、负载限流等。


3) Post:过滤规则在路由之后发生作用。可以利用"Post"过滤器收集统计信息和指标,将微服务的相应写入Http响应并返回给服务消费者;


4) Error:过滤规则路由过程中发生错误时发生作用。可以利用Error过滤器记录错误日志,并对错误进行二次处理等。


在过滤器之间用RequestContext传递消息。RequestContext存储的内容包括路由目标地址、错误信息、请求信息、响应信息等。Zuul的过滤规则也可以用基于JVM的语言编写,包括Java、Python、Groovy等。

3.实战

本实例是用spring boot + mybatis + zuul.

1)pom.xml 配置。zuul用到了

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

2)在application类上添加注解@EnableZuulProxy

3)配置application.properties

server.port=8001                                       #spring boot端口为8001
spring.application.name=zuulService

zuul.routes.userservice.path=/users/**    #所有对/users/xxxx方法的访问会被转发服务http://10.10.7.106:8081/springmvc/users/xxxx上
zuul.routes.userservice.strPrefix=true
zuul.routes.userservice.url=http://10.10.7.106:8081/springmvc/users
eureka.client.serviceUrl.defaultZone=http://10.10.8.89:8761/eureka #向eureka上注册

4)添加一个类并扩展ZuulFilter,该类在application.java里通过注解@bean调用,使用它的权限检查功能。

源代码如下:

spring_mybatis.rar

springboot.rar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值