zuul网关_SpringCould之服务网关(zuul)介绍与配置
??记得点击上方蓝字“程序员小强”关注哦
一、前言介绍
1.什么是服务(API)网关?
服务网关也就是API网关,可以作为服务的统一入口。
可提供身份校验、动态路由、负载均衡、安全管理、统计、监控、流量管理、灰度发布、压力测试等功能。
API 网关有很多实现方式,如:Spring Cloud Zuul、 Nginx、Tyk、Kong。
本篇介绍的对象正是 Spring Cloud Zuul。
Spring Cloud Zuul 是基于 Netflix Zuul 的微服务路由和过滤器的解决方案,也用于实现 API 网关。其中,路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入门的基础。而过滤功能是负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。
Spring Cloud Zuul 和 Eureka 进行整合时,Zuul 将自身注册到 Eureka 服务中,同时从 Eureka 中获取其他微服务信息,以便请求可以准确的通过 Zuul 转发到具体微服务上。
2.什么是Zuul?
Zuul是Netflix开源的服务网关/API网关,提供动态路由、监控、弹性、安全性等功能。
3.过滤器类型
Zuul中有以下几种典型的过滤器类型。
pre:在请求被路由到目标服务前执行;
routing:在请求被路由到目标服务时执行,这是使用Apache HttpClient或Netflix Ribbon构建和发送原始HTTP请求的地方;
post:在请求被路由到目标服务后执行,比如给目标服务的响应添加头信息,收集统计数据等功能;
error:请求在其他阶段发生错误时执行。
4.过滤器常见使用场景
前置(Pre)
限流
鉴权
参数校验调整
日志打印
后置(Post)
统计
日志
5.过滤器生命周期
二、路由配置
1.路由配置参数说明
路由配置基础参数说明
配置项 | ken.io 的说明 |
zuul.routes.{routename} | 路由名称,自定义,支持小写字母、- |
zuul.routes.{routename}.path | 要路由的路径,支持通配符:?、 、* |
zuul.routes.{routename}.serviceId | 注册在Eureka的ServiceName |
zuul.routes.{routename}.url | 如果应用没有注册在Eureka,也可以通过指定Url来路由 |
zuul.ignored-services | 忽略指定的服务,可以配置多个,以,间隔 |
zuul.ignored-patterns | 忽略指定的路径,可以配置多个,以,间隔。同样支持通配符 |
path通配符说明
通配符 | 说明 | path举例 | 匹配示例 |
? | 匹配单个任意字符 | /test/? |
/test/a、/test/b |
* | 匹配任意字符 |
/test/* |
/test/a、/test/b、/test/ab |
** | 匹配任意字符且支持多级目录 | /test/** | /test/a、/test/b、/test/ab、/test/ab/c |
注:若对于通配符来说,没有特定的需求,使用**就好
2.路由配置示例
2.1路由到到不同的服务
zuul: routes: api-ribbon: path: /api-ribbon/** serviceId: server-consum-ribbon
适用于:服务随着业务的发展不断扩大需要拆分,这时候我们可以通过api兼容+路由配置来适配,可以对上游无感知。
例如用户服务(userservice)有三个核心模块,auth、info、safe,经过拆分拆出来两个服务:authservice、safeservice。那么拆分后的路由配置:
zuul: routes: user-auth: path: /user/auth/** serviceId: authservice user-safe: path: /user/safe/** serviceId: safeservice user: path: /user/** serviceId: userservice
因为路由规则匹配顺序是按配置顺序来的,所以未拆出去的配置在最后。
2.2路由到指定站点
当某应用并没有注册到服务注册中心(Eureka),但又需要可以通过指定url的访问
zuul: routes: ken-io: path: /ken/** url: https://ken.io/
2.3忽略指定路径
适用于某些通用的接口不暴露给外部,
例如每个应用都会有一个健康检查入口,但是这个入口是不应该暴露给外部的,就可以通过忽略规则屏蔽掉。
zuul: ignored-patterns: /**/hs,/**/health
2.4忽略指定服务
zuul: ignored-services: aservice,bservice
2.5配置访问前缀
可以通过以下配置来给网关路径添加前缀,此处添加了/api前缀,
这样我们需要访问http://xxx:port/api/xxxx才能访问到接口
zuul: prefix: /api #给网关路由添加前缀
2.6不同API路由统一前缀
在不同服务路由的开头附加一个的前缀是很常见的
比如希望在不同服务的路由的开头都加上一个/api的前缀,Zuul也是支持的。可以使用如下配置来实现这一功能:
zuul: ignored-services: '*' prefix: /api routes: organizationservice: /organization/** licenseservice: /license/**
2.7Header过滤及重定向添加Host
Zuul在请求路由时,默认会过滤掉一些敏感的头信息,以下配置可以防止路由时的Cookie及Authorization的丢失:
zuul: sensitive-headers: Cookie,Set-Cookie,Authorization #配置过滤敏感的请求头信息,设置为空就不会过滤
Zuul在请求路由时,不会设置最初的host头信息,以下配置可以解决:
zuul: add-host-header: true #设置为true重定向是会添加host请求头
2.8常用配置
zuul: routes: #给服务配置路由 user-service: path: /userService/** feign-service: path: /feignService/** ignored-services: user-service,feign-service #关闭默认路由配置 prefix: /proxy #给网关路由添加前缀 sensitive-headers: Cookie,Set-Cookie,Authorization #配置过滤敏感的请求头信息,设置为空就不会过滤 add-host-header: true #设置为true重定向是会添加host请求头 retryable: true # 关闭重试机制 PreLogFilter: pre: disable: false #控制是否启用过滤器
SpringCould篇推荐
1.SpringCould实战开篇
2.SpringCould之服务注册与发现Eureka服务端搭建
3.SpringCould之服务生产者项目搭建
4.SpringCould之服务消费者方式Feign
5.SpringCould之服务消费方式Ribbon+RestTemplate
6.SpringCould之断路器(Hystrix)
下一篇 预告SpringCould之服务网关(zuul)代码实战实例
zuul网关_SpringCould之服务网关(zuul)介绍与配置相关推荐
- spring cloud gateway 网关_微服务网关Spring Cloud Gateway全搞定
一.微服务网关Spring Cloud Gateway 1.1 导引 文中内容包含:微服务网关限流10万QPS.跨域.过滤器.令牌桶算法. 在构建微服务系统中,必不可少的技术就是网关了,从早期的Zuu ...
- 网关服务器性能,服务网关API路由导致的性能问题分析
背景 酷家乐是从 16 年初开始进行服务化改造的,因为一些特殊原因,无法直接使用主流的dubbo 或 spring cloud,因此酷家乐研发团队在开源的基础上做了二次开发,迅速上线了一套定制型的微服 ...
- 商城项目的微服务网关,微服务网关的主要作用
微服务网关的作用: 不使用微服务网关的缺陷: 1.每一个页面会对接很多个微服务,调用起来繁琐 2.调用微服务过多,很容易暴露出端口,增加了服务器的受攻击的面积 3.跨域的问题,没有加网关时,我们是加的 ...
- python 微服务 网关_微服务网关
微服务网关作用: API网关:跨一个或多个内部API提供单个统一的API入口点.通常还包括限制访问速率和有关安全性等特点.API网关可以为外部消费者提供统一的入口点,而与内部微服务的数量和组成无关. ...
- SpringCloud OpenFeign服务调用客户端介绍及配置使用
一.OpenFeign介绍 OpenFeign是Netfix开发的一款声明式,模板化的Http服务调用客户端.使用在服务调用者工程端.OpenFeign的负载均衡也为客户端负载均衡.一下简称Feign ...
- Spring Cloud版——电影售票系统七使用 Zuul 构建微服务网关
2019独角兽企业重金招聘Python工程师标准>>> GitHub地址:https://github.com/leebingbin/SpringCloud.MovieTicketi ...
- Zuul微服务网关、容错与监控、Zuul路由端点、路由配置、Zuul上传文件、Zuul过滤器、Zuul异常处理、Zuul回退、Zuul聚合微服务
一.为什么要使用微服务网关 二.Zuul 1.编写Zuul微服务网关 2.Zuul的Hystrix容错与监控 3.Zuul的路由端点 4.路由配置 1.自定义指定微服务的访问路径 2.忽略指定微服务 ...
- SpringCloud→SpringCloud搭建Zuul动态服务网关(五)
文章目录 SpringCloud搭建Zuul动态服务网关 网关分类 开放Api 微服务网关 API服务管理平台 网关设计 开放API接口 内网API接口 网关框架 使用Zuul实现反向代理 使用Zuu ...
- 使用Zuul构建微服务网关(路由)
文章目录 一.网关产生的背景 二.Zuul简介 三.Zuul实现API网关 四. 路由配置详解 五.Zuul的容错与回退 六.Zuul的安全与Header 1.敏感头设置 2.忽略Header 七.Z ...
最新文章
- 如何用jsp在线自动批改_推荐:5个好用的免费自动化在线营销工具
- 堆栈——Windows核心编程学习手札之十八
- 初识HTML流水笔记
- Ambari 2.6.0 HDP 2.6.3集群搭建
- 08 | 栈:如何实现浏览器的前进和后退功能?
- 【C语言重点难点】数据类型、常量和变量
- libpng warning: iCCP: known incorrect sRGB profile
- 【mac】mac 安装 RibbitMQ 报错 Error when reading /Users/lcc/.erlang.cookie: eacces
- TensorFlow 实战(四)—— tensor 的认识
- 有限时间不明确需求项目的上线(部分还款)
- windows命令_Windows自带强大的入侵检测工具——Netstat 命令 查询是否中木马
- 操作系统学习---进程
- AutoCAD2014 无法通过快捷方式启动
- JavaCC中扩展的正规表达式
- 正版软件 Microsoft 365 家庭版 1用户 58
- TestNG入门教程-6-enabled和priority属性
- 计算机一级西溪2,我的西溪研学日记(二)——不一样的课堂,不一样的精彩...
- 手把手教你作者python机器人,自己训练一个机器人助手
- 杂谈~关于踩shit
- 网安之PHP开发第十六天
热门文章
- go语言--竞争、原子函数、互斥锁
- forEach、for...in、for...of
- EBS AP 创建会计科目失败
- funuiTitle-居中问题修改
- 2015年全年目标及执行情况跟踪
- CC学iOS杂记 001_Device
- asp.net的10个提升性能或扩展性的秘密(二)
- 计算机开机无讯号,【图片】电脑突然开机没反应,显示器没信号!~【显卡吧】_百度贴吧...
- python input函数详解_Python如何使用input函数获取输入,看完你就会了
- python input函数详解_对Python3中的input函数详解