Zuul微服务网关

Zuul简介:

Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能

身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求

审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产试图

动态路由:动态地将请求路由到不同的后端集群

压力测试:逐渐增加只想集群的流量,以了解性能

负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求

静态响应处理:在边缘位置直接建立部份响应,从而避免其转发到内部集群

多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB(Elastic Load Balancing)使用的多样化,以及让系统的边缘更贴近系统的使用者

为什么使用微服务网关:

客户端会多次请求不同的微服务,增加了客户端的复杂性

存在跨域请求,在一定场景下处理相对复杂

认证复杂,每个服务都需要独立认证

难以重构,随着项目的迭代,可能需要重新划分微服务

某些微服务可能使用了防火墙/浏览器不友好的协议,直接访问会有一定的困难

微服务网关的优点:

易于监控。可在微服务网关收集监控数据并将其推送到外部系统进行分析

易于认证。可在微服务网关上进行认证,然后再将请求转发到后端的微服务,从而无需在每个微服务中进行认证

减少了客户端与各个微服务之间的交互次数

Spring Cloud对Zuul进行了整合与增强。Zuul使用的默认HTTP客户端是Apache HTTP Client,也可以使用RestClient或okhttp3.OkHttpClient,需要设置ribbon.restclient.enabled=true;或ribbon.okhttp.enabled=true

Zuul路由配置:

自定义指定微服务的访问路径:zuul-routes-microservice-provider-user=/user/**

忽略指定微服务:zuul-ignored-service=microserivce-provider-user,microservice-consumer-movie

忽略所有为服务,只路由指定微服务:

zuul:

ignored-service:‘*‘ (忽略所有微服务)

routes:

microservice-provider-user:/user/**

同时指定微服务的serviceId和对应路径:

zuul:

routess:

user-route:    (路由名)

service-id:provider-microservice-user

path:/user/**    (service-id对应的路径)

同时指定path和URL:

将/user/**映射到http://localhost:8000/**

zuul:

routes:

user-route:

url: http://localhost:8000/

path: /user/**

同时指定path和URL,并且不破坏Zuul的Hystrix、Ribbon特性

zuul:

routes:

user-route:

path: /user/**

service-id: microservice-provider-user

ribbon:

eureka:

enabled: false    (为Ribbon禁用Eureka)

microservice-provider-user:

ribbon:

listOfServices: localhost:8000,localhost:8001

使用正则表达式指定Zuul的路由匹配规则:

将microservice-prodiver-user映射到/v1/microservice-provider-user/**路径

@Bean

public PatternServiceRouteMapper serviceRouteMapper(){

return new PatternServiceRouteMapper("(?<name>^.+)-(?<version>v.+$)","${version}/${name}");

}

路由前缀:

访问Zuul的/api/microservice-prodiver-user/1路径,请求将会被转发到microservice-provider-user的/api/1

zuul:

prefix: /api

strip-prefix: false

routes:

microservice-provider-user: /user/**

忽略某些路径:

将microservice-prodiver-user微服务映射到/user/**路径,但会忽略该微服务中所有包含/admin/的路径

zuul:

ignoredPatterns: /**/admin/**

routes:

microservice-prodiver-user

原文地址:https://www.cnblogs.com/gqymy/p/11183350.html

时间: 2024-08-04 01:41:19

Zuul微服务网关的相关文章

spring cloud 学习(6) - zuul 微服务网关

微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService.ProductService.UserService...,为了让调用更简单,一般会在这些服务前端再封装一层,类似下面这样: 前面这一层俗称为“网关层”,其存在意义在于,将"1对N"问题 转换成了"1对1”问题,同时在请求到达真正的微服务之前,可以做一些预处理,比如:来源合法性检测,权限校验,反爬虫之类... 传统方式下,最土的办法,网关层可以人肉封装,类似以下示例代码: LoginResul

《springcloud 二》SrpingCloud Zuul 微服务网关搭建

网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Nginx是采用服务器负载均衡进行转发 Zuul依赖Ribbon和eureka实现本地负载均衡转发 相对来说Nginx功能比Zuul功能更加强大,能够整合其他语言比如lua脚本实现强大的功能,同时Nginx可以更好的抗高并发,Zuul网关适用于请求过滤和拦截等. Zuul网关 zuul是spring clo

springCloud(13):使用Zuul构建微服务网关-简介

一.为什么要使用微服务网关 不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求.如:一个电影购票的手机APP,可能会调用多个微服务,才能完成一次购票的业务流程.如果让客户端直接与各个微服务通信,会有以下的问题: 1.客户端会多次请求不同的微服务,增加了客户端的复杂性: 2.存在跨域请求,在一定场景下处理相对复杂: 3.认证复杂,每个服务都需要独立认证: 4.难以重构,随着项目的迭代,可能需要重新划分微服务,如果客户端直接与微服务通信,那么重构将会很难实

个推微服务网关架构实践

作者:个推应用平台基础架构高级研发工程师 阿飞 在微服务架构中,不同的微服务可以有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求.因此,在客户端和服务端之间增加一个API网关成为多数微服务架构的必然选择. 在个推的微服务实践中,API网关也起着至关重要的作用.一方面,API网关是个推微服务体系对外的唯一入口:另一方面,API网关中实现了很多后端服务的共性需求,避免了重复建设. 个推微服务网关的设计与实现 个推微服务主要是基于Docker

Spring Cloud微服务安全实战_4-1_微服务网关安全_概述&amp;微服务安全面临的挑战

  第四章  网关安全 这一章从简单的API的场景过渡到复杂的微服务的场景 4.1 概述 微服务安全面临的挑战:介绍中小企业的一个微服务架构,相比第三章的单体应用的简单的API所面临的哪些挑战 OAuth2协议与微服务安全:介绍OAuth2中的各个角色,以及相互之间的关系,介绍具体的代码实现 微服务网关安全:搭建网关,安全中心,两个微服务,怎么将安全从微服务中解耦出来放到网关上,与OAuth协议联系起来解决微服务安全面临的新的挑战. 4.2 微服务安全面临的挑战  更多的入口点,更高的安全风险

微服务网关常用限流算法

常用算法有三种:计数器算法.漏斗桶算法.令牌桶算法,市面上最常用的是最后一个 第一个:计数器算法  他维护的是单位时间内的最大请求量,因此极端情况可能造成服务抖动  第二个:漏斗桶算法,这种算法保护了后端的微服务,但是会可能造成微服务网关压力激增 第三种:令牌桶算法 令牌桶算法相对于漏斗桶算法,其实就是少了一个输出速率的设置,他与漏斗桶算法相比,主要是为了保护网关自己,由于网关在实际的应用场景中会显得非常关键,因此大部分的限流算法都会选择令牌桶算法 原文地址:https://www.cnblog

springCloud(14):使用Zuul构建微服务网关-路由端点与路由配置详解

一.Zuul的路由端点 当@EnableZuulProxy与SpringBoot Actuator配合使用时,Zuul会暴露一个路由管理端点/routes.借助这个端点,可以方便.直观地查看以及管理Zuul的路由. /routes端点的使用非常简单,使用GET方法访问该端点,即可返回Zuul当前映射的路由列表:使用POST方法访问该端点就会强制刷新Zuul当前映射的路由列表(尽管路由会自动刷新,Spring Cloud依然提供了强制立即刷新的方式). 由于spring-cloud-starter

2020-03-28 微服务网关Zuul

一.问题 二.介绍(整合所有微服务,向外暴露一个统一的请求路径) 三.Zuul网关 配置启动类 配置文件 基础路由配置 路由:根据请求的URL,将请求分配到对应的微服务中进行处理. 面向服务的路由配置 开启eureka的服务发现 重新修改配置文件 原文地址:https://www.cnblogs.com/mathlin/p/12589489.html

springCloud(16):使用Zuul构建微服务网关-容错回退与高可用

一.容错与回退 1.1.容错 在Spring Cloud中,Zuul默认已经整合了Hystrix. 测试: a.依次启动eureka-server(4010).provide-user(4011).hystrix-consumer-movie(5012).microservice-gateway-zuul(5016).hystrix-dashboard(5013) b.访问http://localhost:5016/hystrix-consumer-movie/user/1,可正常获取结果 c.