亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Zuul:構(gòu)建高可用網(wǎng)關(guān)之多維度限流

wenshi11019 / 3227人閱讀

摘要:對(duì)請(qǐng)求的目標(biāo)進(jìn)行限流例如某個(gè)每分鐘只允許調(diào)用多少次對(duì)客戶(hù)端的訪問(wèn)進(jìn)行限流例如某個(gè)每分鐘只允許請(qǐng)求多少次對(duì)某些特定用戶(hù)或者用戶(hù)組進(jìn)行限流例如非用戶(hù)限制每分鐘只允許調(diào)用次某個(gè)等多維度混合的限流。

對(duì)請(qǐng)求的目標(biāo)URL進(jìn)行限流(例如:某個(gè)URL每分鐘只允許調(diào)用多少次)

對(duì)客戶(hù)端的訪問(wèn)IP進(jìn)行限流(例如:某個(gè)IP每分鐘只允許請(qǐng)求多少次)

對(duì)某些特定用戶(hù)或者用戶(hù)組進(jìn)行限流(例如:非VIP用戶(hù)限制每分鐘只允許調(diào)用100次某個(gè)API等)

多維度混合的限流。此時(shí),就需要實(shí)現(xiàn)一些限流規(guī)則的編排機(jī)制。與、或、非等關(guān)系。

介紹

spring-cloud-zuul-ratelimit是和zuul整合提供分布式限流策略的擴(kuò)展,只需在yaml中配置幾行配置,就可使應(yīng)用支持限流


    com.marcosbarbero.cloud
    spring-cloud-zuul-ratelimit
    1.3.4.RELEASE
支持的限流粒度

服務(wù)粒度 (默認(rèn)配置,當(dāng)前服務(wù)模塊的限流控制)

用戶(hù)粒度 (詳細(xì)說(shuō)明,見(jiàn)文末總結(jié))

ORIGIN粒度 (用戶(hù)請(qǐng)求的origin作為粒度控制)

接口粒度 (請(qǐng)求接口的地址作為粒度控制)

以上粒度自由組合,又可以支持多種情況。

如果還不夠,自定義RateLimitKeyGenerator實(shí)現(xiàn)。

//默認(rèn)實(shí)現(xiàn)
public String key(final HttpServletRequest request, final Route route, final RateLimitProperties.Policy policy) {
    final List types = policy.getType();
    final StringJoiner joiner = new StringJoiner(":");
    joiner.add(properties.getKeyPrefix());
    if (route != null) {
        joiner.add(route.getId());
    }
    if (!types.isEmpty()) {
        if (types.contains(Type.URL) && route != null) {
            joiner.add(route.getPath());
        }
        if (types.contains(Type.ORIGIN)) {
            joiner.add(getRemoteAddr(request));
        }
        // 這個(gè)結(jié)合文末總結(jié)。
        if (types.contains(Type.USER)) {
            joiner.add(request.getUserPrincipal() != null ? request.getUserPrincipal().getName() : ANONYMOUS_USER);
        }
    }
    return joiner.toString();
}
支持的存儲(chǔ)方式

InMemoryRateLimiter - 使用 ConcurrentHashMap作為數(shù)據(jù)存儲(chǔ)

ConsulRateLimiter - 使用 Consul 作為數(shù)據(jù)存儲(chǔ)

RedisRateLimiter - 使用 Redis 作為數(shù)據(jù)存儲(chǔ)

SpringDataRateLimiter - 使用 數(shù)據(jù)庫(kù) 作為數(shù)據(jù)存儲(chǔ)

限流配置

limit 單位時(shí)間內(nèi)允許訪問(wèn)的個(gè)數(shù)

quota 單位時(shí)間內(nèi)允許訪問(wèn)的總時(shí)間(統(tǒng)計(jì)每次請(qǐng)求的時(shí)間綜合)

refresh-interval 單位時(shí)間設(shè)置

zuul:
  ratelimit:
    key-prefix: your-prefix 
    enabled: true 
    repository: REDIS 
    behind-proxy: true
    policies:
      myServiceId:
        limit: 10
        quota: 20
        refresh-interval: 30
        type:
          - user
        

以上配置意思是:30秒內(nèi)允許10個(gè)訪問(wèn),并且要求總請(qǐng)求時(shí)間小于20秒

效果展示

yaml配置:

zuul:
  ratelimit:
    key-prefix: pig-ratelimite 
    enabled: true 
    repository: REDIS 
    behind-proxy: true
    policies:
      pig-admin-service:
        limit: 2
        quota: 1
        refresh-interval: 3

動(dòng)態(tài)圖 ↓↓↓↓↓

Redis 中數(shù)據(jù)結(jié)構(gòu) 注意紅色字體

總結(jié)

可以使用Spring Boot Actuator 提供的服務(wù)狀態(tài),動(dòng)態(tài)設(shè)置限流開(kāi)關(guān)

源碼可以參考:https://gitee.com/log4j/pig

用戶(hù)限流的實(shí)現(xiàn):如果你的項(xiàng)目整合 Shiro 或者 Spring Security 安全框架,那么會(huì)自動(dòng)維護(hù)request域UserPrincipal,如果是自己的框架,請(qǐng)登錄成功后維護(hù)request域UserPrincipal,才能使用用戶(hù)粒度的限流。未登錄默認(rèn)是:anonymous

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/70685.html

相關(guān)文章

  • 微服務(wù)網(wǎng)關(guān)方案調(diào)研

    摘要:綜述經(jīng)調(diào)研,使用解決方案的占多數(shù),已經(jīng)能滿(mǎn)足絕大多數(shù)公司需求。但除了一些超級(jí)公司外,比如阿里,京東,他們是自己擼的一套網(wǎng)關(guān)。 綜述 經(jīng)調(diào)研,使用Spring Cloud Zuul解決方案的占多數(shù),已經(jīng)能滿(mǎn)足絕大多數(shù)公司需求。但除了一些超級(jí)公司外,比如阿里,京東,他們是自己擼的一套網(wǎng)關(guān)。此外,點(diǎn)評(píng)直接采用的nginx負(fù)載均衡前置網(wǎng)關(guān),而沒(méi)用第七層網(wǎng)關(guān),原因據(jù)說(shuō)是七層網(wǎng)關(guān)會(huì)影響性能,但由于...

    Y3G 評(píng)論0 收藏0
  • 墻裂推薦:搜云庫(kù)技術(shù)團(tuán)隊(duì),面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    SegmentFault 評(píng)論0 收藏0
  • 墻裂推薦:搜云庫(kù)技術(shù)團(tuán)隊(duì),面試必備的技術(shù)干貨

    摘要:今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來(lái)的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫(xiě)過(guò)了,這個(gè)記錄的過(guò)程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...

    Neilyo 評(píng)論0 收藏0
  • Spring Cloud - 技術(shù)棧

    摘要:整理自楊波老師的總結(jié)注冊(cè)中心支持模型存儲(chǔ)和靈活健康檢查能力。服務(wù)網(wǎng)關(guān)選擇是最佳搭配,但異步性能不足基于的異步未推出正式版。配置中心缺失治理能力。監(jiān)控存儲(chǔ)依賴(lài)于時(shí)間序列數(shù)據(jù)庫(kù)。隊(duì)列對(duì)于日志等可靠性要求不高的場(chǎng)景,用。功能強(qiáng)大但復(fù)雜。 整理自楊波老師的總結(jié) showImg(https://segmentfault.com/img/bV3iL1?w=800&h=512); 注冊(cè)中心 Eur...

    張金寶 評(píng)論0 收藏0
  • spring cloud gateway 限流

    摘要:常見(jiàn)的限流方式,比如適用線(xiàn)程池隔離,超過(guò)線(xiàn)程池的負(fù)載,走熔斷的邏輯。在令牌桶算法中,存在一個(gè)桶,用來(lái)存放固定數(shù)量的令牌。,令牌桶每秒填充平均速率。 轉(zhuǎn)載請(qǐng)標(biāo)明出處: https://www.fangzhipeng.com本文出自方志朋的博客 在高并發(fā)的系統(tǒng)中,往往需要在系統(tǒng)中做限流,一方面是為了防止大量的請(qǐng)求使服務(wù)器過(guò)載,導(dǎo)致服務(wù)不可用,另一方面是為了防止網(wǎng)絡(luò)攻擊。 常見(jiàn)的限流方式,...

    joy968 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<