Spring Cloud之Zuul(二):管理Zuul端点

版权声明:本文为博主原创文章,可自由转载、引用,但需注明文章出处。 https://blog.csdn.net/StarskyBoy/article/details/85011979

主题

管理Zuul端点

前言

当@EnableZuulProxy与Spring Boot Actuator配合使用,Zuul会暴露:routes和filters端点。借助这些端点,可方便、直观地查看及管理Zuul。

内容

★routes端点★

1.routes端点简介

(1)使用GET方法访问该端点,即可返回Zuul当前映射的路由列表;

(2)使用POST方法访问该端点就会强制刷新Zuul当前映射的路由列表(尽管路由会自动刷新,Spring Cloud依然提供了强制立即刷新的方式)。

(3)Spring Cloud Edgware对/routes端点进行进一步增强,我们可以使用/routes?format=details查看更多与路由相关的详情设置。

由于spring-cloud-starter-zuul已经包含了spring-boot-starter-actuator,因此之前编写的microservice-gateway-zuul已具备路由管理的能力。

2.测试

(1)启动cloud-discovery-eureka(port=8001)

(2)启动cloud-register-user(port=8002)

(3)启动cloud-register-consumer-ribbon(port=8007)

(4)修改cloud-register-gateway-zuul配置,设置management.security.enabled: false

(5)启动cloud-register-gateway-zuul(port=8023)

3.结果展示

(1)访问http://localhost:8023/routes

说明:/cloud-register-user/**会转发到/cloud-register-user微服务的/**。

2)访问http://localhost:8023/routes?format=details

说明:可以看到路由各种配置,至于含义大家自个分析一下吧。

 

★filters端点★

(1)filters端点简介

在Spring Cloud Edgware版本中,新增了/filters 端点。访问该端点即可返回Zuul中当前所有过滤器的详情,并按照类型分类。

 

(2)结果展示

如下是 /filters 端点的展示结果,从中,我们可以了解当前Zuul中, error、post 、pre 、route 四种类型的过滤器分别有哪些,每个过滤器的order (执行顺序)是多少,以及是否启用等信息。这对于Zuul问题的定位很有用。

{

    "error": [

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter",

            "order": 0,

            "disabled": false,

            "static": true

        }

    ],

    "post": [

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.post.SendResponseFilter",

            "order": 1000,

            "disabled": false,

            "static": true

        }

    ],

    "pre": [

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.pre.DebugFilter",

            "order": 1,

            "disabled": false,

            "static": true

        },

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.pre.FormBodyWrapperFilter",

            "order": -1,

            "disabled": false,

            "static": true

        },

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.pre.Servlet30WrapperFilter",

            "order": -2,

            "disabled": false,

            "static": true

        },

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.pre.ServletDetectionFilter",

            "order": -3,

            "disabled": false,

            "static": true

        },

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.pre.PreDecorationFilter",

            "order": 5,

            "disabled": false,

            "static": true

        }

    ],

    "route": [

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter",

            "order": 100,

            "disabled": false,

            "static": true

        },

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter",

            "order": 10,

            "disabled": false,

            "static": true

        },

        {

            "class": "org.springframework.cloud.netflix.zuul.filters.route.SendForwardFilter",

            "order": 500,

            "disabled": false,

            "static": true

        }

    ]

}

源码获取

1.gitee:https://gitee.com/StarskyBoy/cloud

2.github: https://github.com/StarskyBoy/cloud

获取更多信息,请扫我

展开阅读全文

没有更多推荐了,返回首页