「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config
「 从0到1学习微服务SpringCloud 」07 RabbitMq的基本使用
「 从0到1学习微服务SpringCloud 」08 构建消息驱动微服务的框架 Spring Cloud Streamnginx
假如当前有十几个微服务服务,订单,商品,用户等等,那客户端须要和每一个服务逐一打交道?这显然是不现实的,这就须要有一个统一入口,它就是服务网关。git
这里就不一一介绍了,感兴趣的可自行查资料。今天的主角是Zuul。github
Zuul虽然在性能上和nginx无法比,但它也有它的优势。Zuul 提供了认证鉴权,动态路由,监控,弹性,安全,负载均衡等边缘服务,在团队规模不大的状况下,没有专门负责路由开发时,使用Zuul当网关是一个快速上手的好方案。spring
nginx和Zuul是能够配合使用的,发挥各自的优势,使用nginx做为负载均衡实现高并发的请求转发,Zuul用做网关api
zuul的核心是一系列的filters, 其做用能够类比Servlet框架的Filter,或者AOP。
过滤器之间没有直接进行通讯,而是经过Request Context(上下文)进行数据传递。安全
Zuul的过滤器是由Groovy写成,这些过滤器文件被放在Zuul Server上的特定目录下面,Zuul会按期轮询这些目录,修改过的过滤器会动态的加载到Zuul Server中以便过滤请求使用。 cookie
四种过滤器
(1) PRE(前置):这种过滤器在请求被路由以前调用。咱们可利用这种过滤器实现鉴权、限流、参数校验调整等。并发
(2) ROUTING(路由):这种过滤器将请求路由到微服务。这种过滤器用于构建发送给微服务的请求,并使用Apache HttpClient或Netfilx Ribbon请求微服务。app
(3) POST(后置):这种过滤器在路由到微服务之后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端、日志等。负载均衡
(4) ERROR(错误):在其余阶段发生错误时执行该过滤器。
HTTP请->一系列过滤器->微服务->HTTP响应
1.新建一个子模块,勾选eureka discovery和zull
(咱们这里后面的练习就不用config组件了,由于在github修改配置有点麻烦)
并添加父子模块的关联,把子模块中多余的声明删掉
2.yml文件添加相关配置,入口类添加@EnableEurekaClient和@EnableZuulProxy注解
server: port: 8900 spring: application: name: api-gateway eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
3.如今已经能够作到路由的功能了,咱们来试试。启动service-hi应用,经过网关入口进行访问,访问规则:网关域名/目标服务/目标接口名,下面调用service-hi服务的hi接口
4.可自定义路由,设置自定义的路径。
配置以下,两种方式
zuul: routes: # 方法1 # 声明一个路由规则,名称随意取名就行 # 该规则为 /myHi/** 路由到 /service-hi/** (**为任意匹配) myHi: # 路由路径 (路由到哪一个路径) path: /myHi/** # 服务名 (须要路由的服务) serviceId: service-hi # 这里须要注意一下,使用zuul进行路由,默认不传递cookie # 若要传递,添加下面的配置(内容为空就行) sensitivedHeaders: # 方法2 # 路由声明 简洁写法 服务名: 路由路径 service-hi: /myHi/** # 忽略路径,不作路由 ignored-patterns: - /service-hi/hi # 也可使用通配符 - /**/hi
访问配置的路由路径,便可访问到相应接口啦~
已将代码上传到github
https://github.com/zhangwenka...
若是以为不错,分享给你的朋友!
THANDKS
一个立志成大腿而天天努力奋斗的年轻人
伴学习伴成长,成长之路你并不孤单!