最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot2.0+阿里巴巴Sentinel動(dòng)態(tài)限流實(shí)戰(zhàn)(附源碼)

 更新時(shí)間:2020年11月13日 14:43:49   作者:Java架構(gòu)俱樂部  
這篇文章主要介紹了SpringBoot2.0+阿里巴巴Sentinel動(dòng)態(tài)限流實(shí)戰(zhàn)(附源碼),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Sentinel 是什么?

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

Sentinel 具有以下特征:

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

Sentinel 的主要特性:

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

Sentinel 的開源生態(tài):

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

Sentinel 分為兩個(gè)部分:

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

控制臺(tái)配置

Sentinel 控制臺(tái)最少應(yīng)該包含如下功能:

  • 查看機(jī)器列表以及健康情況:收集 Sentinel 客戶端發(fā)送的心跳包,用于判斷機(jī)器是否在線。
  • 監(jiān)控 (單機(jī)和集群聚合):通過 Sentinel 客戶端暴露的監(jiān)控 API,定期拉取并且聚合應(yīng)用監(jiān)控信息,最終可以實(shí)現(xiàn)秒級(jí)的實(shí)時(shí)監(jiān)控。
  • 規(guī)則管理和推送:統(tǒng)一管理推送規(guī)則。
  • 鑒權(quán):生產(chǎn)環(huán)境中鑒權(quán)非常重要。這里每個(gè)開發(fā)者需要根據(jù)自己的實(shí)際情況進(jìn)行定制。

可以直接從[ release 頁面](https://github.com/alibaba/Sentinel/releases " release 頁面") 下載最新版本的控制臺(tái) jar 包,啟動(dòng) Sentinel 控制臺(tái)需要 JDK 版本為 1.8 及以上版本。。

啟動(dòng)腳本 sentinel.sh:

#!/bin/bash
java -Dsentinel.dashboard.auth.username=admin \
-Dsentinel.dashboard.auth.password=admin \
-Dserver.port=8084 -Dcsp.sentinel.dashboard.server=localhost:8084 \
-Dproject.name=sentinel-dashboard \
-jar sentinel-dashboard-1.6.3.jar &

用戶可以通過如下參數(shù)進(jìn)行配置:

  • -Dsentinel.dashboard.auth.username=admin 用于指定控制臺(tái)的登錄用戶名為 admin;
  • -Dsentinel.dashboard.auth.password=admin 用于指定控制臺(tái)的登錄密碼為 admin;如果省略這兩個(gè)參數(shù),默認(rèn)用戶和密碼均為 sentinel;
  • -Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服務(wù)端 session 的過期時(shí)間,如 7200 表示 7200 秒;60m 表示 60 分鐘,默認(rèn)為 30 分鐘;

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

客戶端配置

pom.xml 引入以下依賴:

 <!-- https://blog.52itstyle.vip -->
<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.1.5.RELEASE</version>
 <relativePath/>
</parent>
<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
 </dependency>
</dependencies>
<dependencyManagement>
 <!--注意跟 SpringBoot 保持一致 2.1.x for Spring Boot 2.1.x-->
 <dependencies>
 <dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
 <version>2.1.0.RELEASE</version>
 <type>pom</type>
 <scope>import</scope>
 </dependency>
 </dependencies>
</dependencyManagement>

配置文件:

# 應(yīng)用名稱 https://blog.52itstyle.vip
spring.application.name=blog
spring.cloud.sentinel.transport.port=8720
# 測(cè)試請(qǐng)?zhí)鎿Q為自己的地址
spring.cloud.sentinel.transport.dashboard=116.190.247.112:8084

這里的 spring.cloud.sentinel.transport.port端口配置會(huì)在應(yīng)用對(duì)應(yīng)的機(jī)器上啟動(dòng)一個(gè) Http Server,該 Server 會(huì)與 Sentinel 控制臺(tái)做交互。比如 Sentinel 控制臺(tái)添加了1個(gè)限流規(guī)則,會(huì)把規(guī)則數(shù)據(jù) push 給這個(gè) Http Server 接收,Http Server 再將規(guī)則注冊(cè)到 Sentinel 中。

代碼配置:

/**
 * 博文 https://blog.52itstyle.vip
 */
@RequestMapping("{id}.shtml")
@SentinelResource("blogView")
public String page(@PathVariable("id") Long id, ModelMap model) {
 try{
 Blog blog = blogService.getById(id);
 String key = "blog_"+id;
 Long views = redisUtil.size(key);
 blog.setViews(views+blog.getViews());
 model.addAttribute("blog",blog);
 } catch (Throwable e) {
 return "error/404";
 }
 return "article";
}

@SentinelResource 注解用來標(biāo)識(shí)資源是否被限流、降級(jí)。上述例子上該注解的屬性 'blogView' 表示資源名。

默認(rèn)情況,Sentinel 會(huì)攔截所有的 Controller 請(qǐng)求,這里標(biāo)識(shí)資源名,是因?yàn)樗械奈恼露紩?huì)走這個(gè)請(qǐng)求,為了方便統(tǒng)計(jì)和流控,這里自定義資源標(biāo)識(shí)。

更多注解支持,請(qǐng)參考:Sentinel/wiki/注解支持。

訪問客戶端項(xiàng)目,隨便點(diǎn)擊幾個(gè)頁面,然后登錄 Sentinel 控制臺(tái),如果看到以下界面,說明配置成功。

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

配置限流,搜索我們剛才配置的資源名稱,選擇流控功能。

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

輸入閾值參數(shù),為了測(cè)試方便,這里直接輸入2,連續(xù)刷新瀏覽器,如果后臺(tái)出現(xiàn)以下錯(cuò)誤,并伴隨著前臺(tái)頁面無法正常顯示說明配置生效。

Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException: null

當(dāng)然,Sentinel 流程功能不僅僅這么簡(jiǎn)單,還支持集群模式,在終極版十萬博文中,我們可以為集群中的節(jié)點(diǎn),設(shè)置單機(jī)均分,也可以設(shè)置一個(gè)總體的閾值。

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

生產(chǎn)環(huán)境中使用

Sentinel 核心庫目前已可用于生產(chǎn)環(huán)境,目前除了阿里巴巴以外,也有多家企業(yè)在生產(chǎn)環(huán)境中使用它們。

規(guī)則管理及推送

原生版本的規(guī)則管理通過API 將規(guī)則推送至客戶端并直接更新到內(nèi)存中,并不能直接用于生產(chǎn)環(huán)境。

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

不過 Sentinel提供了擴(kuò)展讀數(shù)據(jù)源ReadableDataSource,規(guī)則中心統(tǒng)一推送,客戶端通過注冊(cè)監(jiān)聽器的方式時(shí)刻監(jiān)聽變化,比如使用 Nacos、Zookeeper 等配置中心。這種方式有更好的實(shí)時(shí)性和一致性保證。

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

監(jiān)控

Sentinel 會(huì)記錄資源訪問的秒級(jí)數(shù)據(jù)(若沒有訪問則不進(jìn)行記錄)并保存在本地日志中。Sentinel 控制臺(tái)可以通過 Sentinel 客戶端預(yù)留的 HTTP API 從秒級(jí)監(jiān)控日志中拉取監(jiān)控?cái)?shù)據(jù),并進(jìn)行聚合。

目前 Sentinel 控制臺(tái)中監(jiān)控?cái)?shù)據(jù)聚合后直接存在內(nèi)存中,未進(jìn)行持久化,且僅保留最近 5 分鐘的監(jiān)控?cái)?shù)據(jù)。若需要監(jiān)控?cái)?shù)據(jù)持久化的功能,可以自行擴(kuò)展實(shí)現(xiàn)。

SpringBoot 2.0 + 阿里巴巴 Sentinel 動(dòng)態(tài)限流實(shí)戰(zhàn)

注意事項(xiàng)

由于一開始沒有認(rèn)真讀文檔,把控制臺(tái)部署到了外網(wǎng),而客戶端在內(nèi)網(wǎng)啟動(dòng),導(dǎo)致客戶端無法被訪問到,實(shí)時(shí)鏈路和簇點(diǎn)鏈路數(shù)據(jù)無法正常顯示。

測(cè)試的小伙伴注意了,原始模式下,客戶端和控制臺(tái)必須相互被訪問到,客戶端會(huì)向控制臺(tái)定時(shí)發(fā)送心跳請(qǐng)求,控制臺(tái)會(huì)向客戶端推送規(guī)則、拉取流控?cái)?shù)據(jù)并聚合。

源碼

https://gitee.com/52itstyle/spring-boot-blog

到此這篇關(guān)于SpringBoot2.0+阿里巴巴Sentinel動(dòng)態(tài)限流實(shí)戰(zhàn)(附源碼)的文章就介紹到這了,更多相關(guān)SpringBoot2.0 Sentinel動(dòng)態(tài)限流內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot Shiro在Web應(yīng)用中的作用詳解

    Spring Boot Shiro在Web應(yīng)用中的作用詳解

    這篇文章主要為大家介紹了Spring Boot Shiro在Web應(yīng)用中的作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java實(shí)現(xiàn)控制小數(shù)精度的方法

    Java實(shí)現(xiàn)控制小數(shù)精度的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)控制小數(shù)精度的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解Java之路(五) 訪問權(quán)限控制

    詳解Java之路(五) 訪問權(quán)限控制

    本篇文章主要介紹了Java之路(五) 訪問權(quán)限控制 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。
    2016-12-12
  • Java中Spring Boot支付寶掃碼支付及支付回調(diào)的實(shí)現(xiàn)代碼

    Java中Spring Boot支付寶掃碼支付及支付回調(diào)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java中Spring Boot支付寶掃碼支付及支付回調(diào)的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • mybatis-plus update更新操作的三種方式(小結(jié))

    mybatis-plus update更新操作的三種方式(小結(jié))

    本文主要介紹了mybatis-plus update更新操作的三種方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java編程計(jì)算兔子生兔子的問題

    Java編程計(jì)算兔子生兔子的問題

    古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第四個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少
    2017-02-02
  • Spring Cloud Ribbon負(fù)載均衡器處理方法

    Spring Cloud Ribbon負(fù)載均衡器處理方法

    這篇文章主要介紹了Spring Cloud Ribbon負(fù)載均衡器處理方法,看看是如何獲取服務(wù)實(shí)例,獲取以后做了哪些處理,處理后又是如何選取服務(wù)實(shí)例的,需要的朋友可以參考下
    2018-02-02
  • 一篇文章帶你了解一些Java反射的學(xué)習(xí)記錄

    一篇文章帶你了解一些Java反射的學(xué)習(xí)記錄

    java反射機(jī)制是一個(gè)很好用的東西,用它可以解決很多死的東西,因?yàn)榉瓷錂C(jī)制的靈活行很大,有了他,我們就不要花太多的時(shí)間來寫操做數(shù)據(jù)庫的代碼了,這個(gè)可以很大的減少開發(fā)時(shí)間,而且代碼的可讀性好
    2021-09-09
  • SpringBoot3集成和使用Jasypt的代碼詳解

    SpringBoot3集成和使用Jasypt的代碼詳解

    隨著信息安全的日益受到重視,加密敏感數(shù)據(jù)在應(yīng)用程序中變得越來越重要,Jasypt作為一個(gè)簡(jiǎn)化Java應(yīng)用程序中數(shù)據(jù)加密的工具,為開發(fā)者提供了一種便捷而靈活的加密解決方案,本文將深入解析Jasypt的工作原理,需要的朋友可以參考下
    2024-01-01
  • java中將漢字轉(zhuǎn)換成拼音的實(shí)現(xiàn)代碼

    java中將漢字轉(zhuǎn)換成拼音的實(shí)現(xiàn)代碼

    java中將漢字轉(zhuǎn)換成拼音的實(shí)現(xiàn)代碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10

最新評(píng)論

泸定县| 雷州市| 墨竹工卡县| 密山市| 泰宁县| 泰来县| 滁州市| 大厂| 昌宁县| 商丘市| 阿坝| 晋宁县| 万荣县| 巴青县| 资兴市| 长子县| 汉川市| 宣威市| 怀安县| 德安县| 南康市| 衡东县| 湖北省| 武穴市| 新干县| 滨州市| 普安县| 营山县| 隆昌县| 拉萨市| 同仁县| 台江县| 兴山县| 启东市| 敖汉旗| 阜平县| 陆良县| 浦北县| 上栗县| 岳普湖县| 白银市|