国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

阿里Sentinel整合Zuul網關詳解

miqt / 633人閱讀

摘要:前面我們講解了整合,詳細請查看文章阿里支持啦目前來說,大部分公司線上的網關應該是,所以今天我們就來看看如何在中整合。

前面我們講解了Sentinel整合Spring Cloud Gateway,詳細請查看文章:阿里Sentinel支持Spring Cloud Gateway啦

目前來說,大部分公司線上的網關應該是Zuul,所以今天我們就來看看如何在Zuul中整合Sentinel。本來想基于Spring Cloud Alibaba來進行整合講解,整合的時候發現目前還沒更新版本,依賴還是之前的版本,咱們就以最原生的方式進行整合吧,等Spring Cloud Alibaba更新之后,Sentinel的整合只會變得更簡單。

加入zuul-adapter依賴:


    com.alibaba.csp
    sentinel-zuul-adapter
    1.6.0

配置Sentinel提供的限流過濾器和限流規則:

@Configuration
public class ZuulConfig {

    @Bean
    public ZuulFilter sentinelZuulPreFilter() {
        return new SentinelZuulPreFilter();
    }

    @Bean
    public ZuulFilter sentinelZuulPostFilter() {
        return new SentinelZuulPostFilter();
    }

    @Bean
    public ZuulFilter sentinelZuulErrorFilter() {
        return new SentinelZuulErrorFilter();
    }

    @PostConstruct
    public void doInit() {
        // 注冊 FallbackProvider
        ZuulBlockFallbackManager.registerProvider(new MyBlockFallbackProvider());
        initGatewayRules();
    }

    /**
     * 配置限流規則
     */
    private void initGatewayRules() {
        Set rules = new HashSet<>();
        rules.add(new GatewayFlowRule("yinjihuan").setCount(1) // 限流閾值
                .setIntervalSec(1) // 統計時間窗口,單位是秒,默認是 1 秒
        );

        GatewayRuleManager.loadRules(rules);
    }
}

SentinelZuulPreFilter

pre過濾器,在請求路由之前匹配routeId和api,進行限流操作

SentinelZuulPostFilter

post過濾器,路由之后恢復資源

SentinelZuulErrorFilter

error過濾器,異常后的處理

最后再配置一個簡單的路由,路由名稱yinjihuan,跟上面規則中的名稱一致:

zuul.routes.yinjihuan.path=/cxytiandi/**
zuul.routes.yinjihuan.url=http://cxytiandi.com

觸發限流后會返回固定的提示:

{
    "code":429,
    "message":"Sentinel block exception",
    "route":"yinjihuan"
}

如果想修改提示內容可以自己實現ZuulBlockFallbackProvider接口,框架默認提供的實現是DefaultBlockFallbackProvider,源碼如下:

public class DefaultBlockFallbackProvider implements ZuulBlockFallbackProvider {

    @Override
    public String getRoute() {
        return "*";
    }

    @Override
    public BlockResponse fallbackResponse(String route, Throwable cause) {
        if (cause instanceof BlockException) {
            return new BlockResponse(429, "Sentinel block exception", route);
        } else {
            return new BlockResponse(500, "System Error", route);
        }
    }
}

用法其實跟Zuul中的FallbackProvider一致,但是FallbackProvider比較好的是返回的ClientHttpResponse,我們可以自定義響應內容。

Sentinel提供的ZuulBlockFallbackProvider接口中定義的返回對象是BlockResponse ,也就意味著限制了響應的字段,BlockResponse中有code,message,route三個字段,如果我想返回status, msg這兩個字段目前我沒找到其它的方式,不知道后續會不會支持,其實最好的是也返回ClientHttpResponse,這樣就可以自定義響應內容了。

這邊有個小插曲,就是我們自定義fallbackResponse的時候如果用中文message的話,響應內容是亂碼,如下:

{
code: 429,
message: "??????",
route: "yinjihuan"
}

我看了下SentinelZuulPreFilter中的代碼,如下:

這邊是構造了BlockResponse,然后設置到ResponseBody中,但是沒有進行編碼設置,我自己改了下源碼,加了一行代碼:

  ctx.getResponse().setContentType("application/json; charset=utf-8");

加了上面的代碼后,中文就不會亂碼了,效果如下:

{
code: 429,
message: "訪問太頻繁啦",
route: "yinjihuan"
}

不說了,我還是去提個issues吧: https://github.com/alibaba/Sentinel/issues/733

歡迎加入我的知識星球,一起交流技術,免費學習猿天地的課程(http://cxytiandi.com/course) PS:目前星球中正在星主的帶領下組隊學習Spring Cloud,等你哦!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/74485.html

相關文章

  • Spring Cloud Alibaba 新版本發布:眾多期待內容整合打包加入!

    摘要:在之后,也終于發布了最新的版本。該版本距離上一次發布,過去了整整個月下面就隨我一起看看,這個大家期待已久的版本都有哪些內容值得我們關注。如果是用戶,同時也是阿里云這些產品的用戶,那么直接使用還是非常方便的。 在Nacos 1.0.0 Release之后,Spring Cloud Alibaba也終于發布了最新的版本。該版本距離上一次發布,過去了整整4個月!下面就隨我一起看看,這個大家期...

    不知名網友 評論0 收藏0
  • Sentinel: 分布式系統的流量防衛兵

    摘要:有沒有那么一個框架能夠把熔斷跟限流都給做了,以前沒有,但是現在有了,我這屬于自問自答哈這個框架就是阿里最新開源的。后來我才發現我錯了,大錯特錯,這是一個新的框架,潛力實力阿里開源。 前言 在 Spring Cloud 體系中,熔斷降級我們會使用 Hystrix 框架,限流通常會在 Zuul 中進行處理,Zuul 中沒有自帶限流的功能,我們可以自己做限流或者集成第三方開源的限流框架。最新...

    jifei 評論0 收藏0
  • Dubbo Cloud Native 之路的實踐與思考

    摘要:可簡單地認為它是的擴展,負載均衡自然成為不可或缺的特性。是基于開發的服務代理組件,在使用場景中,它與和整合,打造具備服務動態更新和負載均衡能力的服務網關。類似的特性在項目也有體現,它是另一種高性能代理的方案,提供服務發現健康和負載均衡。 摘要: Cloud Native 應用架構隨著云技術的發展受到業界特別重視和關注,尤其是 CNCF(Cloud Native Computing Fo...

    niceforbear 評論0 收藏0
  • 企業對API網關怎么應用與選擇

    摘要:而當企業只是將系統與系統之間的調用使用的方式進行訪問時使用網關對調用進行管理,那么網關起到的就是服務治理的作用。另外很多企業因為自身信息安全的原因,不能使用外網公有網的網關服務,這樣就只有選擇私有云的方案了。 showImg(https://segmentfault.com/img/bVbsVBA?w=255&h=255); 前言 「 API網關 」是任何微服務架構的重要組成部分。有了...

    wuaiqiu 評論0 收藏0
  • 墻裂推薦:搜云庫技術團隊,面試必備的技術干貨

    摘要:今天整理了一下近大半年以來的一些文章,和我的預期一樣,很多文章我都忘記自己曾經寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點贊,加轉發。 今天整理了一下近大半年以來的一些文章,和我的預期一樣,很多文章我都忘記自己曾經寫過了,這個記錄的過程讓我也有了新的理解。希望大家,收藏,點贊,加轉發。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    SegmentFault 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<