AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

五小步快速集成使用sentinel限流

來源: 責(zé)編: 時(shí)間:2023-09-18 21:40:09 319觀看
導(dǎo)讀1、環(huán)境和資源準(zhǔn)備sentinel支持許多流控方式,比如:單機(jī)限流、熔斷降級(jí)、集群限流、系統(tǒng)保護(hù)規(guī)則、黑白名單授權(quán)等。本文介紹如何快速集成使用sentinel,文中以單機(jī)限流為例,使用代碼而非控制臺(tái)配置的方式限流。sentinel官

1、環(huán)境和資源準(zhǔn)備

7ip28資訊網(wǎng)——每日最新資訊28at.com

3、項(xiàng)目集成sentinel

項(xiàng)目中集成sentinel分如下5步。7ip28資訊網(wǎng)——每日最新資訊28at.com

3.1、引入pom

<!-- 這是sentinel的核心依賴 --><dependency>  <groupId>com.alibaba.csp</groupId>  <artifactId>sentinel-core</artifactId>  <version>1.8.0</version></dependency><!-- 這是將自己項(xiàng)目和sentinel-dashboard打通的依賴 --><dependency>  <groupId>com.alibaba.csp</groupId>  <artifactId>sentinel-transport-simple-http</artifactId>  <version>1.8.0</version></dependency><!-- 這是使用sentinel對(duì)限流資源進(jìn)行AOP --><dependency>  <groupId>com.alibaba.csp</groupId>  <artifactId>sentinel-annotation-aspectj</artifactId>  <version>1.8.0</version></dependency>

3.2、增加sentinel-aop

@Configurationpublic class AopConfiguration {    @Bean    public SentinelResourceAspect sentinelResourceAspect() {        return new SentinelResourceAspect();    }}

3.3、增加sentinel.properties配置

在application.properties同級(jí)目錄下,增加sentinel.properties文件,配置內(nèi)容如下:7ip28資訊網(wǎng)——每日最新資訊28at.com

# 集成到sentinel的項(xiàng)目名稱project.name=spring-sentinel-demo# 對(duì)應(yīng)的sentinel-dashboard地址csp.sentinel.dashboard.server=localhost:8080

7ip28資訊網(wǎng)——每日最新資訊28at.com

同時(shí)需要加載sentinel.properties配置,有兩種加載方式,選擇一種即可,如下:7ip28資訊網(wǎng)——每日最新資訊28at.com

7ip28資訊網(wǎng)——每日最新資訊28at.com

3.4、設(shè)置需要被限流的資源

給需要被限流的資源打上注解@SentinelResource,使用方式如下。7ip28資訊網(wǎng)——每日最新資訊28at.com

  • 默認(rèn)情況下,超出配置的流控閾值后,直接拋出 FlowException(BlockException) 異常,可以使用blockHandler自定義。
  • fallback用于配置熔斷降級(jí)的方法,當(dāng)發(fā)生慢調(diào)用、異常數(shù)、異常比例數(shù),會(huì)調(diào)用fallback方法。
  • 可以針對(duì)部分異常情況做忽略處理,不再觸發(fā)熔斷降級(jí)。
@Servicepublic class TestServiceImpl implements top.mangod.springsentineldemo.service.TestService {    @Override    @SentinelResource(value = "test", blockHandler = "handleException", blockHandlerClass = {top.mangod.springsentineldemo.service.ExceptionUtil.class})    public void test() {        System.out.println("Test");    }    @Override    @SentinelResource(value = "hello", fallback = "helloFallback")    public String hello(long s) {        if (s < 0) {            throw new IllegalArgumentException("invalid arg");        }        return String.format("Hello at %d", s);    }    @Override    @SentinelResource(value = "helloAnother", defaultFallback = "defaultFallback",        exceptionsToIgnore = {IllegalStateException.class})    public String helloAnother(String name) {        if (name == null || "bad".equals(name)) {            throw new IllegalArgumentException("oops");        }        if ("foo".equals(name)) {            throw new IllegalStateException("oops");        }        return "Hello, " + name;    }    public String helloFallback(long s, Throwable ex) {        // Do some log here.        ex.printStackTrace();        return "Oops, error occurred at " + s;    }    public String defaultFallback() {        System.out.println("Go to default fallback");        return "default_fallback";    }}

3.5、指定和加載流控規(guī)則

文中我使用代碼方式制定流控規(guī)則,在控制臺(tái)中也可以直接配置流控規(guī)則,為什么不使用控制臺(tái)方式呢?7ip28資訊網(wǎng)——每日最新資訊28at.com

如果是類似云原生的部署環(huán)境,比如:將spring應(yīng)用打成docker鏡像,然后在部署到Kubernetes中,部署之后Pod地址是會(huì)變化。7ip28資訊網(wǎng)——每日最新資訊28at.com

只要應(yīng)用的地址變化后,之前的配置就消失了。不可能每次地址變化后都到控制臺(tái)去重新配置策略,所以需要選擇代碼方式制定規(guī)則。7ip28資訊網(wǎng)——每日最新資訊28at.com

流控規(guī)則一般會(huì)有如下幾個(gè):7ip28資訊網(wǎng)——每日最新資訊28at.com

  • 資源限流規(guī)則FlowRule
  • 異常熔斷降級(jí)規(guī)則DegradeRule
  • 系統(tǒng)過載保護(hù)規(guī)則SystemRule
  • 訪問黑白名單規(guī)則AuthorityRule

控制臺(tái)設(shè)置流控規(guī)則,如下:7ip28資訊網(wǎng)——每日最新資訊28at.com

7ip28資訊網(wǎng)——每日最新資訊28at.com

代碼制定和加載流控規(guī)則,如下:7ip28資訊網(wǎng)——每日最新資訊28at.com

public static void main(String[] args) {    // 加載限流規(guī)則    initSentinelRule();    SpringApplication.run(SpringSentinelDemoApplication.class, args);  }  private static void initSentinelRule() {    // 資源限流    FlowRule flowRule = new FlowRule("test")        .setCount(1)        .setGrade(RuleConstant.FLOW_GRADE_QPS);    List<FlowRule> list = new ArrayList<>();        /*if (method) {            FlowRule flowRule1 = new FlowRule("test:sayHello(java.lang.String)")                    .setCount(5)                    .setGrade(RuleConstant.FLOW_GRADE_QPS);            list.add(flowRule1);        }*/    list.add(flowRule);    FlowRuleManager.loadRules(list);    // 異常降級(jí)    /*List<DegradeRule> DegradeRules = new ArrayList<>();    DegradeRule degradeRule = new DegradeRule("");    degradeRule.setGrade(CircuitBreakerStrategy.ERROR_RATIO.getType());    degradeRule.setCount(0.7); // Threshold is 70% error ratio    degradeRule.setMinRequestAmount(100)            .setStatIntervalMs(30000) // 30s            .setTimeWindow(10);    DegradeRules.add(degradeRule);    DegradeRuleManager.loadRules(DegradeRules);*/    // 系統(tǒng)負(fù)載保護(hù)    /*List<SystemRule> systemRules = new ArrayList<>();    SystemRule systemRule = new SystemRule();    systemRule.setHighestSystemLoad(10);    systemRules.add(systemRule);    SystemRuleManager.loadRules(systemRules);*/        // 黑白名單授權(quán)訪問    /*AuthorityRule rule = new AuthorityRule();    rule.setResource("test");    rule.setStrategy(RuleConstant.AUTHORITY_WHITE);    rule.setLimitApp("appA,appB");    AuthorityRuleManager.loadRules(Collections.singletonList(rule));*/  }

4、啟動(dòng)測試

項(xiàng)目啟動(dòng)完畢后,訪問鏈接http://localhost:9091/foo,就可以在控制臺(tái)上看到被限流的資源7ip28資訊網(wǎng)——每日最新資訊28at.com

7ip28資訊網(wǎng)——每日最新資訊28at.com

在流控規(guī)則這里,可以看到上文中在代碼里設(shè)置的規(guī)則:7ip28資訊網(wǎng)——每日最新資訊28at.com

7ip28資訊網(wǎng)——每日最新資訊28at.com

啟動(dòng)項(xiàng)目后,測試限流效果,如下:7ip28資訊網(wǎng)——每日最新資訊28at.com

  1. 1秒內(nèi)多次訪問http://localhost:9091/foo,可以看到觸發(fā)了限流異常:

7ip28資訊網(wǎng)——每日最新資訊28at.com

  1. 輸入http://localhost:9091/foo?t=-1會(huì)觸發(fā)異常。fallback用于配置熔斷降級(jí)的方法,當(dāng)發(fā)生慢調(diào)用、異常數(shù)、異常比例數(shù)時(shí),會(huì)調(diào)用fallback方法。圖片
  2. 輸入http://localhost:9091/baz/foo、http://localhost:9091/baz/bad,會(huì)分別觸發(fā)異常和默認(rèn)fallback。圖片

5、總結(jié)

本文主要介紹spring項(xiàng)目如何快速集成sentinel實(shí)現(xiàn)系統(tǒng)限流。7ip28資訊網(wǎng)——每日最新資訊28at.com

首先啟動(dòng)sentinel-dashboard,然后使用5個(gè)簡單步驟即可使用sentinel限流。7ip28資訊網(wǎng)——每日最新資訊28at.com

在應(yīng)用server的IP地址頻繁變動(dòng)的場景下,建議使用代碼方式限流。7ip28資訊網(wǎng)——每日最新資訊28at.com

流控的方式較多,你需要根據(jù)自身的業(yè)務(wù)需求做選擇,我一般情況下選擇單機(jī)流控和系統(tǒng)保護(hù)。7ip28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-10408-0.html五小步快速集成使用sentinel限流

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 微服務(wù)是個(gè)壞主意嗎?

下一篇: TCP與UDP協(xié)議:網(wǎng)絡(luò)通信中的兩大重要角色

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 官方承諾:K60至尊版將會(huì)首批升級(jí)MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會(huì)搭載天璣9200+處理器和獨(dú)顯芯片X7的同時(shí),Redmi給出了官方承諾,K60至尊重大更新首批升級(jí),會(huì)首批推送MIUI 15。也就是說雖然
  • 7月安卓手機(jī)性能榜:紅魔8S Pro再奪榜首

    7月份的手機(jī)市場風(fēng)平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領(lǐng)先版處理器的新機(jī)之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機(jī)廠商修整的時(shí)間,進(jìn)入8月份之
  • 5月安卓手機(jī)好評(píng)榜:魅族20 Pro奪冠

    性能榜和性價(jià)比榜之后,我們來看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來源安兔兔評(píng)測,收集時(shí)間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評(píng)率:97.50%不得不感慨魅族老品牌還
  • SpringBoot中使用Cache提升接口性能詳解

    環(huán)境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對(duì) Spring 應(yīng)用程序提供了透明式添加緩存的支持。和事務(wù)支持一樣,抽象緩存允許一致地使用各
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們?cè)谌粘9ぷ骱蜆I(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個(gè)大新聞是Meta AI推出了新的開源授權(quán)的大型語言模型Llama 2。這是一項(xiàng)非常重要的進(jìn)展:Llama 2可免費(fèi)用于研究和商業(yè)用途。(幾小時(shí)前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • 小米公益基金會(huì)捐贈(zèng)2500萬元馳援北京、河北暴雨救災(zāi)

    8月2日消息,今日小米科技創(chuàng)始人雷軍在其微博上發(fā)布消息稱,小米公益基金會(huì)宣布捐贈(zèng)2500萬元馳援北京、河北暴雨救災(zāi)。攜手抗災(zāi),京冀安康!以下為公告原文
  • 網(wǎng)傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網(wǎng)友@長三角行健者爆料稱,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前已經(jīng)開始了交付中心的篩選工作,要求候選場地至少有120個(gè)車位,建筑不能低
  • 消息稱小米汽車開始篩選交付中心:需至少120個(gè)車位

    IT之家 7 月 7 日消息,日前,有微博簡介為“汽車行業(yè)從業(yè)者、長三角一體化擁護(hù)者”的微博用戶 @長三角行健者 發(fā)文表示,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前
Top