千家信息网

Spring Cloud中怎么实现zuul网关服务

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,Spring Cloud中怎么实现zuul网关服务,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Zuul 工程创建工程创建 clou
千家信息网最后更新 2025年02月03日Spring Cloud中怎么实现zuul网关服务

Spring Cloud中怎么实现zuul网关服务,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Zuul 工程创建

工程创建 cloud-gateway-zuul。还是基于之前的工程 pom文件导入

         spring-cloud-alibaba-basis        com.xian.cloud        1.0-SNAPSHOT        4.0.0    cloud-gateway-zuul    网关服务zuul                                        com.alibaba.cloud            spring-cloud-starter-alibaba-nacos-discovery                                            com.alibaba.cloud            spring-cloud-alibaba-nacos-config                                           org.springframework.cloud            spring-cloud-starter-openfeign                            org.springframework.boot            spring-boot-starter-test            test                                    org.springframework.cloud            spring-cloud-starter-netflix-zuul            

创建GatewayZuulApplication启动类

package com.xian.cloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;import org.springframework.cloud.openfeign.EnableFeignClients;/** *  * * @author xianliru@100tal.com * @version 1.0 * @createDate 2019/10/29 10:52 */@EnableZuulProxy@EnableFeignClients@EnableDiscoveryClient@SpringBootApplicationpublic class GatewayZuulApplication {    public static void main(String[] args) {        SpringApplication.run(GatewayZuulApplication.class,args);    }}

创建 bootstrap.yml

spring:  profiles:    active: dev  application:    name: gateway-zuul-server  cloud:    nacos:      config:        server-addr: 47.99.209.72:8848        file-extension: yamlzuul:  host:    # 目标主机的最大连接数,默认值为200    max-total-connections: 1000    # 每个主机的初始连接数,默认值为20    max-per-route-connections: 200  routes:    discovery-server:      path: /server/**      serviceId: cloud-discovery-server    client-common:      path: /client/**      serviceId: cloud-discovery-client      sensitiveHeaders: X-ABC,Authorization  # 所有路由的默认Hystrix隔离模式(ExecutionIsolationStrategy)为SEMAPHORE。如果此隔离模式是首选,则zuul.ribbonIsolationStrategy可以更改为THREAD  ribbon-isolation-strategy: thread  # 这个属性意思,指定忽略的服务列表 * 代表忽略所有服务  ignored-services: '*'  # 字段比较敏感,不希望传递给下游微服务。 设置空没有要忽略的敏感字段。全部传给下游服务  sensitive-headers: X-ABC  ribbon:    eager-load:      # 强制加载,不设置会进行懒加载。spring 第一次请求会非常慢      enabled: true```#### 参数- zuul.host.max-total-connections 目标主机的最大连接数。- zuul.host.max-per-route-connections 每个主机的初始连接数。这个俩个参数是zuul的优化后的属性值,如果想有适合的配置,还需要根据业务情况而定因为我们有俩个业务服务 一个服务提供者 一个是服务消费者我们配置俩个服务的分别路由 discovery-server、client-common- path  是请求路径匹配规则- serviceId 是我们服务的spring.application.name 对应的值。- sensitiveHeaders 字段比较敏感,不希望传递给下游微服务。 设置空没有要忽略的敏感字段。全部传给下游服务这个字段可以是全局设置也可以是单个服务配置。- ribbon-isolation-strategy 所有路由的默认Hystrix隔离模式(ExecutionIsolationStrategy)为SEMAPHORE。如果此隔离模式是首选,则zuul.ribbonIsolationStrategy可以更改为THREAD-  ignored-services 忽略所有微服务,只路由指定的微服务。-  ribbon.eager-load.enabled  true 强制加载 false 默认懒加载true日志打印效果  false 将不打印这段日志```2019-10-29 23:47:11.377  INFO 61396 --- [           main] c.netflix.loadbalancer.BaseLoadBalancer  : Client: cloud-discovery-server instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-server,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null2019-10-29 23:47:11.382  INFO 61396 --- [           main] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater2019-10-29 23:47:11.450  INFO 61396 --- [           main] c.netflix.config.ChainedDynamicProperty  : Flipping property: cloud-discovery-server.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 21474836472019-10-29 23:47:11.452  INFO 61396 --- [           main] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client cloud-discovery-server initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-server,current list of Servers=[192.168.3.6:9012],Load balancer stats=Zone stats: {unknown=[Zone:unknown; Instance count:1;  Active connections count: 0;     Circuit breaker tripped count: 0;   Active connections per server: 0.0;]},Server stats: [[Server:192.168.3.6:9012;    Zone:UNKNOWN;   Total Requests:0;  Successive connection failure:0;      Total blackout seconds:0;     Last connection made:Thu Jan 01 08:00:00 CST 1970;   First connection made: Thu Jan 01 08:00:00 CST 1970;    Active Connections:0;      total failure count in last (1000) msecs:0;       average resp time:0.0;        90 percentile resp time:0.0;     95 percentile resp time:0.0;     min resp time:0.0;    max resp time:0.0;    stddev resp time:0.0]]}ServerList:com.alibaba.cloud.nacos.ribbon.NacosServerList@33e4b9c42019-10-29 23:47:11.576  INFO 61396 --- [           main] c.netflix.config.ChainedDynamicProperty  : Flipping property: cloud-discovery-client.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 21474836472019-10-29 23:47:11.577  INFO 61396 --- [           main] c.netflix.loadbalancer.BaseLoadBalancer  : Client: cloud-discovery-client instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-client,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null2019-10-29 23:47:11.578  INFO 61396 --- [           main] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater2019-10-29 23:47:11.639  INFO 61396 --- [           main] c.netflix.config.ChainedDynamicProperty  : Flipping property: cloud-discovery-client.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 21474836472019-10-29 23:47:11.640  INFO 61396 --- [           main] c.n.l.DynamicServerListLoadBalancer      : DynamicServerListLoadBalancer for client cloud-discovery-client initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-client,current list of Servers=[192.168.3.6:9011],Load balancer stats=Zone stats: {unknown=[Zone:unknown; Instance count:1;  Active connections count: 0;     Circuit breaker tripped count: 0;   Active connections per server: 0.0;]},Server stats: [[Server:192.168.3.6:9011;    Zone:UNKNOWN;   Total Requests:0;  Successive connection failure:0;      Total blackout seconds:0;     Last connection made:Thu Jan 01 08:00:00 CST 1970;   First connection made: Thu Jan 01 08:00:00 CST 1970;    Active Connections:0;      total failure count in last (1000) msecs:0;       average resp time:0.0;        90 percentile resp time:0.0;     95 percentile resp time:0.0;     min resp time:0.0;    max resp time:0.0;    stddev resp time:0.0]]}ServerList:com.alibaba.cloud.nacos.ribbon.NacosServerList@256589a1```将三个服务全部启动。服务提供者和服务消费者还有zuul 服务在控制台 输入命令 curl http://localhost:9083/client/client/test![file](https://cache.yisu.com/upload/information/20210524/347/785552.png)我们看到打印效果,请求通过网关服务成功转发到了我们的下游服务上。并返回- ribbon-isolation-strategy- ignored-services- sensitiveHeaders

关于Spring Cloud中怎么实现zuul网关服务问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0