首页 > 编程知识 正文

zuul网关的作用,zuul网关统一鉴权

时间:2023-05-04 13:53:38 阅读:187539 作者:4677

一、Zuul网关简介 zuul是spring cloud中的微服务网关。
网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。Zuul网关不是必要的。是推荐使用的。
使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。 二、网关的作用

三、网关的应用 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> 在main方法上添加@EnableZuulProxy import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@SpringBootApplication@EnableZuulProxypublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }} 修改application.yml配置文件 server: port: 8000spring: application: name: zuulzuul: routes: # 标识你服务的名字,这里可以自己定义,一般方便和规范来讲还是跟自己服务的名字一样 EUREKA-CLIENT-PRODUCER: #服务映射的路径,通过这路径就可以从外部访问你的服务了,目的是为了不爆露你机器的IP #这里zuul是自动依赖hystrix,ribbon的,不是面向单机 path: /EUREKA-CLIENT-PROVIDER/** #这里一定要是你Eureka注册中心的服务的名称,是因为这里配置serviceId因为跟eureka结合了, serviceId: EUREKA-CLIENT-PROVIDEReureka: client: service-url: defaultZone: http://admin:123456@127.0.0.1:8761/eureka/ 相关说明

a. 通过zuul访问服务的,URL地址默认格式为:http://zuulHostIp:port/服务名称/服务中的URL

例如:http://127.0.0.1:8000/EUREKA-CLIENT-PROVIDER/get?name=123
b. 服务名称就是配置文件中的spring.application.name。
c. 服务的URL,就是对应的服务对外提供的URL路径

URL匹配 - URL pattern
使用路径方式匹配路由规则。
参数key结构: zuul.routes.customName.path=xxx
用于配置路径匹配规则。
其中customName自定义。通常使用要调用的服务名称,方便后期管理
可使用的通配符有: * ** ?
? 单个字符
* 任意多个字符,不包含多级路径
** 任意多个字符,包含多级路径
zuul.routes.eureka-application-service.path=/api/**
#参数key结构: zuul.routes.customName.url=xxx
#用于配置符合path的请求路径路由到的服务地址。
zuul.routes.eureka-application-service.url=http://127.0.0.1:8080/

服务名称匹配 - service id pattern 通过服务名称路由
key结构 : zuul.routes.customName.path=xxx
#路径匹配规则
zuul.routes.eureka-application-service.path=/api/**
key结构 : zuul.routes.customName.serviceId=xxx
#用于配置符合path的请求路径路由到的服务名称。
zuul.routes.eureka-application-service.serviceId=eureka-application-service
simple service id pattern 简化配置方案
#如果只配置path,不配置serviceId。则customName相当于服务名称。
#符合path的请求路径直接路由到customName对应的服务上。
zuul.routes.eureka-application-service.path=/api/**

路由排除设置 - ignored service id pattern
#配置不被zuul管理的服务列表。多个服务名称使用逗号’,'分隔。
#配置的服务将不被zuul代理。
zuul.ignored-services=eureka-application-service
#通配方式配置排除列表。
zuul.ignored-services=*
#使用服务名称匹配规则配置路由列表,相当于只对已配置的服务提供网关代理。
zuul.routes.eureka-application-service.path=/api/**
#通配方式配置排除网关代理路径。所有符合ignored-patterns的请求路径都不被zuul网关代理。
zuul.ignored-patterns=//test/
zuul.routes.eureka-application-service.path=/api/**

路由前缀配置
#prefix URL pattern 前缀路由匹配
#配置请求路径前缀,所有基于此前缀的请求都由zuul网关提供代理。
zuul.prefix=/api
#使用服务名称匹配方式配置请求路径规则。
#这里的配置将为:http://ip:port/api/appservice/**的请求提供zuul网关代理。
#并将请求路由到服务eureka-application-service中。
zuul.routes.eureka-application-service.path=/appservice/**

zuul网关配置总结

网关配置方式有多种,默认、URL、服务名称、排除|忽略、前缀。
网关配置没有优劣好坏,应该在不同的情况下选择合适的配置方案。
zuul网关其底层使用ribbon来实现请求的路由,并内置Hystrix,可选择性提供网关fallback逻辑。使用zuul的时候,并不推荐使用Feign作为application client端的开发实现。毕竟Feign技术是对ribbon的再封装,使用Feign本身会提高通讯消耗,降低通讯效率,只在服务相互调用的时候使用Feign来简化代码开发就够了。而且商业开发中,使用Ribbon+RestTemplate来开发的比例更高。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。