Spring Cloud zuul网关服务 一

作者: 程序猿弟弟 | 来源:发表于2019-10-30 00:06 被阅读0次

    上一篇进行Netflix Zuul 1.0 与 gateway的对比。今天来介绍一下 zuul的搭建及应用

    Zuul 工程创建

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

     <parent>
            <artifactId>spring-cloud-alibaba-basis</artifactId>
            <groupId>com.xian.cloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>cloud-gateway-zuul</artifactId>
        <name>网关服务zuul</name>
    
        <dependencies>
            <!-- 注册中心 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <!-- 配置中心 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-nacos-config</artifactId>
            </dependency>
            <!-- fengin 支持 -->
           <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- zuul -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            </dependency>
        </dependencies>
    

    创建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;
    
    /**
     * <Description>
     *
     * @author xianliru@100tal.com
     * @version 1.0
     * @createDate 2019/10/29 10:52
     */
    @EnableZuulProxy
    @EnableFeignClients
    @EnableDiscoveryClient
    @SpringBootApplication
    public 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: yaml
    
    zuul:
      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:null
    2019-10-29 23:47:11.382  INFO 61396 --- [           main] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
    2019-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 = 2147483647
    2019-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@33e4b9c4
    2019-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 = 2147483647
    2019-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:null
    2019-10-29 23:47:11.578  INFO 61396 --- [           main] c.n.l.DynamicServerListLoadBalancer      : Using serverListUpdater PollingServerListUpdater
    2019-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 = 2147483647
    2019-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://img.haomeiwen.com/i13742075/45c7d5bdc1d61ac0.png)
    我们看到打印效果,请求通过网关服务成功转发到了我们的下游服务上。并返回
    
    
    - ribbon-isolation-strategy
    - ignored-services
    - sensitiveHeaders
    
    以上几个参数、还有zuul服务的路由拦截器的使用,将在下一篇讲解。
    
    
    如何喜欢可以关注分享本公众号。
    ![file](https://img.haomeiwen.com/i13742075/718dc310a2758d4e.png)
    
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。转载请附带公众号二维码
    

    相关文章

      网友评论

        本文标题:Spring Cloud zuul网关服务 一

        本文链接:https://www.haomeiwen.com/subject/tqpnvctx.html