2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

熱點參數(shù)限流與系統(tǒng)自適應(yīng)限流

 碼農(nóng)9527 2022-01-11

熱點參數(shù)限流指的是,在流控規(guī)則中指定對某參數(shù)的 QPS,當所有對該資源的請求 URL中攜帶有指定參數(shù)的請求QPS 達到了閾值,則發(fā)生限流。

  復制 consumer-nacos-sentinel-degrade 工程,重命名為 consumer-paramflow。在PetsController處理器中添加如下兩個方法:

/**
 * 熱點參數(shù)限流 * @param id * @param name * @return
 */
@GetMapping("/complux")
@SentinelResource(value = "paramFlowRule", fallback = "getCompluxFallback")
public String getCompluxHandle(Integer id, String name) {
    return "complux : " + id + " , " + name;
}

//降級處理方法 
public String getCompluxFallback(Integer id, String name) {
    return "complux Fallback : " + id + " , " + name;
}12345678910111213復制代碼類型:[java]

  在啟動了消費者工程后,再設(shè)置 Sentinel 控制臺。

  參數(shù)例外項

  參數(shù)例外項是指,對于熱點參數(shù)中某個或某些特殊值單獨設(shè)置規(guī)則。參數(shù)類型僅支持基本數(shù)據(jù)類型或其對應(yīng)的包裝類型,及String類型。

  直接在consumer-paramflow工程上進行修改,在啟動類中添加如下代碼:

package com.javafamily;

import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowItem;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRuleManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

import java.util.ArrayList;
import java.util.List;

// 配置開啟feign
@EnableFeignClients
@SpringBootApplication
public class ParamflowConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ParamflowConsumerApplication.class, args);
        initRule();
    }

    // 初始化規(guī)則
    public static void initRule() {
        List<ParamFlowRule> rules = new ArrayList<>();
        ParamFlowRule rule = ParamflowConsumerApplication.paramFlowRule();
        rules.add(rule);
        ParamFlowRuleManager.loadRules(rules);
    }

    //配置熱點參數(shù)限流
    private static ParamFlowRule paramFlowRule() {
        ParamFlowRule rule = new ParamFlowRule();
        rule.setResource("/complux");
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
        rule.setLimitApp("default");
        rule.setCount(2);
        rule.setParamIdx(1);
        rule.setDurationInSec(10);
        List<ParamFlowItem> items = new ArrayList<>();
        items.add(nameParamItem("human", 100));
        items.add(nameParamItem("administrative", 100));
        rule.setParamFlowItemList(items);
        return rule;
    }

    //創(chuàng)建參數(shù)流控對象
    private static ParamFlowItem nameParamItem(String paramValue, int count) {
        ParamFlowItem item = new ParamFlowItem();
        item.setClassType(String.class.getName());
        item.setObject(String.valueOf(paramValue));
        item.setCount(count);
        return item;
    }
}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455復制代碼類型:[java]

  系統(tǒng)自適應(yīng)限流

  Sentinel 系統(tǒng)自適應(yīng)限流對應(yīng)用級別入口流量進行整體控制,結(jié)合應(yīng)用的 Load、CPU 使用率、平均RT、入口 QPS 和入口并發(fā)線程數(shù)等幾個維度的監(jiān)控指標,通過自適應(yīng)的流控策略,讓系統(tǒng)的入口流量和系統(tǒng)的負載達到一個平衡,讓系統(tǒng)盡可能跑在最大吞吐量的同時保證系統(tǒng)整體的穩(wěn)定性。由于該限流方式中閾值的設(shè)置需要很多系統(tǒng)軟硬件相關(guān)的數(shù)據(jù),而與代碼關(guān)系不大,所以這種限流方式一般是由運維來設(shè)置的。

  系統(tǒng)規(guī)則目前支持五種模式:

  系統(tǒng)負載 Load

  該模式僅對Linux/Unix-like 系統(tǒng)生效。當系統(tǒng) CPU 最近一分鐘的負載量load1 超過了設(shè)置的閾值時會觸發(fā)系統(tǒng)保護,即對再來的請求進行限流處理。這個閾值就是系統(tǒng)負載容量,系統(tǒng)容量可以由maxQps *minRt 估算得出。不過,也可以通過 CPU cores * 2.5 計算出其參考數(shù)值。

  CPU 使用率

  當系統(tǒng) CPU 使用率超過閾值即觸發(fā)系統(tǒng)保護(取值范圍 0.0-1.0),比較靈敏。

  平均響應(yīng)時間 RT

  當對當前應(yīng)用上所有入口流量的平均RT 達到閾值時觸發(fā)系統(tǒng)保護,單位是毫秒。

  并發(fā)線程數(shù)

  當對當前應(yīng)用的所有入口流量進行處理的所有線程數(shù)量達到閾值時觸發(fā)系統(tǒng)保護。

  入口 QPS

  當對當前應(yīng)用的所有入口流量的總 QPS 達到閾值時觸發(fā)系統(tǒng)保護。

  gitee:

  https:///javainfamily/spring-cloud-alibaba

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多