国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Sentinel限流中間件

這篇具有很好參考價值的文章主要介紹了Sentinel限流中間件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

介紹

Sentinel 的特征

Sentinel 的組成

實戰(zhàn)使用

簡單實例

配置本地控制臺

使用可視化ui配置簡單流控

配置異步任務限流

使用注解定義限流資源

SpringCloud整合Sentinel

簡單整合

?并發(fā)線程流控

關聯(lián)模式?

整合openFeign使用


介紹

隨著微服務的流行,服務和服務之間的穩(wěn)定性變得越來越重要。Sentinel 以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務的穩(wěn)定性。

Sentinel 的特征

豐富的應用場景: Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景,例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷(對于突然到來的大量請求,您可以配置流控規(guī)則,以穩(wěn)定的速度逐步處理這些請求,從而避免流量突刺造成系統(tǒng)負載過高)、集群流量控制、實時熔斷下游不可用應用等
完備的實時監(jiān)控: Sentinel 同時提供實時的監(jiān)控功能。您可以在控制臺中看到接入應用的單臺機器秒級數(shù)據(jù),甚至 500 臺以下規(guī)模的集群的匯總運行情況
廣泛的開源生態(tài): Sentinel 提供開箱即用的與其它開源框架 / 庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相應的依賴并進行簡單的配置即可快速地接入 Sentinel
完善的 SPI 擴展點: Sentinel 提供簡單易用、完善的 SPI 擴展接口。您可以通過實現(xiàn)擴展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等

Sentinel 的組成

核心庫(Java 客戶端): 不依賴任何框架 / 庫,能夠運行于所有 Java 運行時環(huán)境,同時對 Dubbo / Spring Cloud 等框架也有較好的支持
控制臺(Dashboard): 基于 Spring Boot 開發(fā),打包后可以直接運行,不需要額外的 Tomcat 等應用容器

實戰(zhàn)使用

簡單實例

準備一個springboot項目.這里不再演示如何創(chuàng)建一個新的springboot項目

添加sentinle必備依賴

<!--        sentinel核心依賴-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-core</artifactId>
            <version>1.8.6</version>
        </dependency>

書寫接口限流測試

import com.alibaba.csp.sentinel.Entry;
import com.alibaba.csp.sentinel.SphU;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.RuleConstant;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
import jakarta.annotation.PostConstruct;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
public class TestController {


    @GetMapping("hello")
    public String hello(){
        //使用限流規(guī)則
        try (Entry entry = SphU.entry("Hello")){ //限流入口
            System.out.println("你好");
            return "你好 sentinel"; //被保護的資源
        }catch (BlockException e){
            e.printStackTrace();
            return "系統(tǒng)繁忙,請稍后"; //被限流或者被降級的操作處理
        }
    }

    /**
     * 定義限流規(guī)則
     * @PostConstruct  當前類的構造函數(shù)執(zhí)行之后執(zhí)行
     */
    @PostConstruct
    public void initFlowRule(){
        //創(chuàng)建存放限流規(guī)則的集合
        List<FlowRule> ruleList = new ArrayList<>();
        //創(chuàng)建限流規(guī)則
        FlowRule rule = new FlowRule();
        //定義資源 表示Sentinel會對哪個資源生效 相當于做一個標記
        rule.setResource("Hello");
        //定義限流規(guī)則類型 RuleConstant.Flow_GRADE_QPS: QPS限流類型
        rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
        //定義QPS每秒能通過的請求個數(shù)
        rule.setCount(2);
        //將限流規(guī)則存放到集合中
        ruleList.add(rule);
        //加載限流規(guī)則
        FlowRuleManager.loadRules(ruleList);
    }
}

這里配置限流規(guī)則為1秒中最多可以通過2次,啟動測試:

Sentinel限流中間件,springboot,sentinel,中間件

?可以看到請求過快的話會直接返回接口中配置限流規(guī)則后的異常信息,說明sentinel已經(jīng)初步使用成功

配置本地控制臺

sentinel可以通過配置本地控制臺ui來進行接口限流的可視化管理,首先需要下載官網(wǎng)提供的可視化jar包

Releases · alibaba/Sentinel · GitHub

當然有下載比較慢的問題,所以也可以在本博主提供的鏈接里進行下載

sentinel1.8.6-jar阿里云下載

下載后在cmd窗口中運行啟動

java -Dserver.port=9000 -jar sentinel-dashboard-1.8.6.jar

?Sentinel限流中間件,springboot,sentinel,中間件

瀏覽器地址欄輸入localhost:9000進行訪問,賬號密碼默認都是sentinel

?Sentinel限流中間件,springboot,sentinel,中間件

?此時登錄后會發(fā)現(xiàn)沒有被監(jiān)控的服務,因為該控制臺還沒有和本地項目進行關聯(lián)

關聯(lián)本地項目需要添加控制臺所需依賴

<!--        本地sentinel控制臺依賴-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-transport-simple-http</artifactId>
            <version>1.8.6</version>
        </dependency>

然后在idea啟動配置中添加啟動配置

-Dcsp.sentinel.dashboard.server=localhost:9000 ? Sentinel控制臺的地址和端口號
-Dproject.name=SentinelQuickStart?? ??? ??? ??? ?本地應用在控制臺中的名稱

這里博主使用的是idea新版ui,和舊版ui可能有些許不同

Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

命令配置以空格隔開即可

啟動項目后發(fā)現(xiàn)sentinel中可能還是沒有檢測到服務,這里需要重新調(diào)用下之前配置的限流規(guī)則接口,也就是前面的hello接口,調(diào)用后再刷新sentinel頁面就可以看到監(jiān)聽的本地服務了

Sentinel限流中間件,springboot,sentinel,中間件

使用可視化ui配置簡單流控

前面的流控是在底層書寫代碼進行限流控制的,還可以使用可視化ui來配置接口的限流策略

首先注釋掉之前書寫的限流規(guī)則

Sentinel限流中間件,springboot,sentinel,中間件

重啟項目再測試接口

?Sentinel限流中間件,springboot,sentinel,中間件

可以看到此時手寫的限流規(guī)則已失效,切換到sentinel控制臺

Sentinel限流中間件,springboot,sentinel,中間件

Sentinel限流中間件,springboot,sentinel,中間件?Sentinel限流中間件,springboot,sentinel,中間件

?注意此處的資源名要和后臺接口中配置的資源名一致

點擊保存

Sentinel限流中間件,springboot,sentinel,中間件

再測試接口

Sentinel限流中間件,springboot,sentinel,中間件

可以看到和之前的手動書寫的限流規(guī)則一樣都起到了接口限流的作用,而且在控制臺中也可以看到接口的監(jiān)控情況

配置異步任務限流

在主啟動類中開啟允許異步任務

Sentinel限流中間件,springboot,sentinel,中間件

?新建書寫一個服務層,并書寫異步方法

Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

在sentinel中新增流控規(guī)則:

Sentinel限流中間件,springboot,sentinel,中間件

啟動測試:

Sentinel限流中間件,springboot,sentinel,中間件

?可以看到異步任務的限流也成功監(jiān)控

使用注解定義限流資源

?前面都是使用的代碼方式來進行接口資源的定義,下面使用注解的形式來進行資源定義

首先導入所需依賴

        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-annotation-aspectj</artifactId>
            <version>1.8.6</version>
        </dependency>

書寫sentinel注解定義配置類

Sentinel限流中間件,springboot,sentinel,中間件

?書寫接口

Sentinel限流中間件,springboot,sentinel,中間件

Sentinel限流中間件,springboot,sentinel,中間件

?測試:

Sentinel限流中間件,springboot,sentinel,中間件

?可以看到基于注解定義的流控資源也已生效

SpringCloud整合Sentinel

簡單整合

新建一個springboot項目,引入依賴:

 <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-sentinel</artifactId>
       <version>2.2.0.RELEASE</version>
 </dependency>

書寫配置:

server.port=8083
# 設置本地應用名稱
spring.application.name=SentinelSpringCloud
# 設置sentinel控制臺的地址和端口
spring.cloud.sentinel.transport.dashboard=localhost:9000
#Spring表達你允許循環(huán)依賴存在,并且希望Spring能夠自動解決這些循環(huán)依賴關系。啟用此配置后,
# Spring會嘗試自動解決循環(huán)依賴,以支持相關Bean之間的相互引用。
spring.main.allow-circular-references=true

Sentinel限流中間件,springboot,sentinel,中間件

?書寫接口:?

Sentinel限流中間件,springboot,sentinel,中間件

啟動項目

Sentinel限流中間件,springboot,sentinel,中間件

輸入之前的 命令啟動下載的可視化jar包

java -Dserver.port=9000 -jar sentinel-dashboard-1.8.6.jar

在控制臺中添加限流策略資源

?Sentinel限流中間件,springboot,sentinel,中間件

調(diào)用接口測試

Sentinel限流中間件,springboot,sentinel,中間件

?并發(fā)線程流控

并發(fā)線程數(shù)
并發(fā)數(shù)控制用于保業(yè)務線程池不被慢調(diào)用耗盡,例如,當應用所依賴的下游應用由于某種原因?qū)е路詹环€(wěn)定、響應延增加對于調(diào)用者來說,意味著否叫量下降和更多的線程教占用,極端值下其至導致線程池耗盡,為應對大多線程占用的情況,業(yè)內(nèi)有使用隔離的方案,比通過不同業(yè)務邏使用不同線程池來隔富業(yè)務自身之間的資源爭搶線程池離),這種屬富方案雖然爆宮性比較好,但是代價就是線程數(shù)目大多,線程上下文切換的 ovehead 比大,特別是對低延的調(diào)用有比較的影響,Sein 并發(fā)控制不負責創(chuàng)建和管理池,而是簡單統(tǒng)計當前請求上下文的線數(shù)目(正在執(zhí)行的調(diào)用數(shù)目),如果超出聞值,新的請求會被立即拒絕,效果類似于信號量隔離。并發(fā)數(shù)控制涌常在調(diào)用端進行配置

調(diào)整接口

Sentinel限流中間件,springboot,sentinel,中間件

新增流控規(guī)則時選擇并發(fā)線程數(shù)

Sentinel限流中間件,springboot,sentinel,中間件

?啟動測試:

Sentinel限流中間件,springboot,sentinel,中間件

關聯(lián)模式?

關聯(lián)當兩個資源之間具有資源爭搶或者依賴關系的時候,這兩個資源便具有了關聯(lián)。比如對數(shù)一個字段的讀和寫操作存在爭搶,讀的速度過高會影響寫得速度,寫的違度過高會影響讀的速度如果放任讀寫操作爭搶資源,則爭搶本身帶來的開銷會降低整體的否量,可使用關聯(lián)限流來避免具有關聯(lián)關系的資源之間過度的爭搶,舉例來說,tead h 和 mite h 這兩個資源分別代表數(shù)車讀寫,我們同以給 read ?設置限流規(guī)達到優(yōu)先的目的:設置 strate 為 1etatSIRTECT L時設置 eert 為 te這當/于時教據(jù)的會被限流

舉例 生成訂單和查詢訂單,當生成訂單接口訪問過高時,被關聯(lián)的查詢訂單接口被限流

書寫接口:

Sentinel限流中間件,springboot,sentinel,中間件

控制臺中創(chuàng)建限流規(guī)則

?Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

正常測試:

?Sentinel限流中間件,springboot,sentinel,中間件

這里手動點擊很難看到限流作用,所以使用一些壓測工具進行測試.可以使用傳統(tǒng)壓測工具jemter進行壓測,這里使用apipost進行壓測

?Sentinel限流中間件,springboot,sentinel,中間件

對生成訂單進行接口壓測,然后查看查詢訂單接口是否服務降級?

Sentinel限流中間件,springboot,sentinel,中間件

?可以看到對生成訂單進行壓測,關聯(lián)的查詢訂單卻受到了流控服務降級

整合openFeign使用

首先準備一個最少有兩個服務的微服務項目并將服務注冊到nacos中,這樣可以進行服務之間的遠程調(diào)用,從而使用openFeign再整合sentinel 這里不再從頭演示,具體使用openFeign可以查看博主之前文章

這里準備一個生產(chǎn)者服務,一個消費者服務

在生產(chǎn)者中新建接口

Sentinel限流中間件,springboot,sentinel,中間件

在消費者中創(chuàng)建fen接口進行遠程調(diào)用生產(chǎn)者接口

Sentinel限流中間件,springboot,sentinel,中間件

控制層書寫接口調(diào)用

Sentinel限流中間件,springboot,sentinel,中間件?啟動測試:

Sentinel限流中間件,springboot,sentinel,中間件

調(diào)用消費者接口,消費者通過openFeign調(diào)用生產(chǎn)者的接口,說明此時接口已經(jīng)調(diào)通

更改接口,手動添加錯誤異常,從而模擬服務降級場景,從而使用sentinel進行整合服務降級

?Sentinel限流中間件,springboot,sentinel,中間件

重啟調(diào)用接口查看異常效果:

Sentinel限流中間件,springboot,sentinel,中間件

?Sentinel限流中間件,springboot,sentinel,中間件

?整合sentinel進行服務降級

配置中開啟fen對sentinel使用

Sentinel限流中間件,springboot,sentinel,中間件

創(chuàng)建服務降級服務實現(xiàn)fen服務

Sentinel限流中間件,springboot,sentinel,中間件?

?設置服務降級服務接口

Sentinel限流中間件,springboot,sentinel,中間件

啟動測試:

Sentinel限流中間件,springboot,sentinel,中間件?文章來源地址http://www.zghlxwxcb.cn/news/detail-609082.html

到了這里,關于Sentinel限流中間件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ASP.NET Core 的 Web Api 實現(xiàn)限流 中間件

    ASP.NET Core 的 Web Api 實現(xiàn)限流 中間件

    Microsoft.AspNetCore.RateLimiting ?中間件提供速率限制(限流)中間件。 它是.NET 7 以上版本才支持的中間件,剛看了一下,確實挺好用,下面給大家簡單介紹一下: RateLimiterOptionsExtensions?類提供下列用于限制速率的擴展方法:????? 固定窗口限制器 滑動窗口限制器 令牌桶限

    2024年01月17日
    瀏覽(18)
  • 后端 .net7 Minimal API 限流中間件(微信小程序無師自通十)

    ????????我的微信小程序使用.net7 Minimal API 作為后端,當服務器擺上公網(wǎng)后,可以觀察到很多的攻擊行為和暴力訪問。所以,我需要使用微軟的限流中間件部署相應的功能在服務器上 : AddFixedWindowLimiter using Microsoft.AspNetCore.RateLimiting; using System.Threading.RateLimiting; 后端

    2024年02月12日
    瀏覽(27)
  • Springboot整合RabbitMQ消息中間件

    spring-boot-rabbitmq–消息中間件整合 前言:RabbitMQ的各種交換機說明 1、直連交換機 生產(chǎn)者發(fā)布消息時必須帶著routing-key,隊列綁定到交換機時必須指定binding-key ,且routing-key和binding-key必須完全相同,如此才能將消息路由到隊列中 直連交換機通常用來循環(huán)分發(fā)任務給多個workers,

    2024年02月11日
    瀏覽(33)
  • SpringBoot中間件—ORM(Mybatis)框架實現(xiàn)

    SpringBoot中間件—ORM(Mybatis)框架實現(xiàn)

    目錄 定義 需求背景 方案設計 代碼展示 UML圖 ?實現(xiàn)細節(jié) 測試驗證 ?總結 源碼地址(已開源) :https://gitee.com/sizhaohe/mini-mybatis.git? 跟著源碼及下述UML圖來理解上手會更快, 拒絕浮躁,沉下心來搞 ? ? ? ? ORM:Object Relational Mapping? --? 對象關系映射,是一種程序設計技術,

    2024年02月16日
    瀏覽(20)
  • SpringBoot中間件使用之EventBus、Metric、CommandLineRunner

    SpringBoot中間件使用之EventBus、Metric、CommandLineRunner

    1、EventBus 使用EventBus 事件總線的方式可以實現(xiàn)消息的 發(fā)布/訂閱 功能,EventBus是一個輕量級的消息服務組件,適用于Android和Java。 // 1.注冊事件通過 EventBus.getDefault().register(); // 2.發(fā)布事件 EventBus.getDefault().post(“事件內(nèi)容”); // 3.監(jiān)聽事件,通過在方法上添加注解 @Subscribe實現(xiàn)

    2024年02月13日
    瀏覽(26)
  • SpringBoot整合消息中間件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

    SpringBoot整合消息中間件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

    消息的發(fā)送方:生產(chǎn)者 消息的接收方:消費者 同步消息:發(fā)送方發(fā)送消息到接收方,接收方有所回應后才能夠進行下一次的消息發(fā)送 異步消息:不需要接收方回應就可以進行下一步的發(fā)送 什么是消息隊列? 當此時有很多個用戶同時訪問服務器,需要服務器進行操作,但此

    2024年04月27日
    瀏覽(53)
  • Springboot整合activiti5,達夢數(shù)據(jù)庫,mybatis中間件

    由于工作流引擎不支持達夢數(shù)據(jù)庫以及國產(chǎn)中間件,所以我們引入的時候會報錯,這個時候就需要去改造代碼和配置文件。各種文檔和資料查找一天,現(xiàn)在對這個問題進行解決了。 1.查看網(wǎng)上的各類教程,手動將源碼復制粘貼出來,進行修改。這方面可以自行去查找對應文檔

    2024年02月14日
    瀏覽(25)
  • SpringBoot--中間件技術-3:整合mongodb,整合ElasticSearch,附案例含代碼(簡單易懂)

    實現(xiàn)步驟: pom文件導坐標 yaml配置文件配置mongodb: 隨便建一個pojo 測試: 裝配MongoTemplate模板類,調(diào)用方法 整合MongoDB總結: 導坐標 寫配置文件 核心類MongoTemplate調(diào)用 前提準備:數(shù)據(jù)庫+ES 數(shù)據(jù)庫建表語句: 實現(xiàn)步驟: pom文件到坐標 yaml配置文件 創(chuàng)建實體類: 對應數(shù)據(jù)庫表

    2024年02月04日
    瀏覽(19)
  • 【Sentinel】Sentinel與gateway的限流算法

    【Sentinel】Sentinel與gateway的限流算法

    線程隔離有兩種方式實現(xiàn): 線程池隔離(Hystrix默認采用) 信號量隔離(Sentinel默認采用) 服務I需要遠程調(diào)用服務A、服務B,則創(chuàng)建兩個線程池,分別用來處理服務I–服務A,和服務I–服務B的請求。和線程池隔離不同的是,信號量隔離比較輕量級,就維護一個計數(shù)器就好,不

    2024年02月09日
    瀏覽(33)
  • Sentinel dashboard的使用;Nacos保存Sentinel限流規(guī)則

    Sentinel dashboard的使用;Nacos保存Sentinel限流規(guī)則

    Nacos環(huán)境搭建 Nacos注冊中心的使用 Nacos配置中心的使用 Sentinel 容災中心的使用 Sentinel · alibaba/spring-cloud-alibaba Wiki · GitHub github地址:Sentinel/sentinel-dashboard at master · alibaba/Sentinel · GitHub 創(chuàng)建sentinel-dashboard的啟動腳本,并添加如下信息: 目錄: 注意:sentinel-dashboard默認會在87

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包