小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

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

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

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

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

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

  在啟動(dòng)了消費(fèi)者工程后,再設(shè)置 Sentinel 控制臺(tái)。

  參數(shù)例外項(xiàng)

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

  直接在consumer-paramflow工程上進(jìn)行修改,在啟動(dòng)類(lèi)中添加如下代碼:

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;

// 配置開(kāi)啟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);
    }

    //配置熱點(diǎn)參數(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ù)流控對(duì)象
    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復(fù)制代碼類(lèi)型:[java]

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

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

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

  系統(tǒng)負(fù)載 Load

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

  CPU 使用率

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

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

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

  并發(fā)線(xiàn)程數(shù)

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

  入口 QPS

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

  gitee:

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多