国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

電腦做系統(tǒng)網(wǎng)站鄭州網(wǎng)站優(yōu)化培訓(xùn)

電腦做系統(tǒng)網(wǎng)站,鄭州網(wǎng)站優(yōu)化培訓(xùn),寶塔軟件做網(wǎng)站,做網(wǎng)站需要懂什么軟件目錄 介紹 Sentinel 的特征 Sentinel 的組成 實(shí)戰(zhàn)使用 簡(jiǎn)單實(shí)例 配置本地控制臺(tái) 使用可視化ui配置簡(jiǎn)單流控 配置異步任務(wù)限流 使用注解定義限流資源 SpringCloud整合Sentinel 簡(jiǎn)單整合 并發(fā)線程流控 關(guān)聯(lián)模式 整合openFeign使用 介紹 隨著微服務(wù)的流行&#xff0…

目錄

介紹

Sentinel 的特征

Sentinel 的組成

實(shí)戰(zhàn)使用

簡(jiǎn)單實(shí)例

配置本地控制臺(tái)

使用可視化ui配置簡(jiǎn)單流控

配置異步任務(wù)限流

使用注解定義限流資源

SpringCloud整合Sentinel

簡(jiǎn)單整合

?并發(fā)線程流控

關(guān)聯(lián)模式?

整合openFeign使用


介紹

隨著微服務(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)容量可以承受的范圍)、消息削峰填谷(對(duì)于突然到來的大量請(qǐng)求,您可以配置流控規(guī)則,以穩(wěn)定的速度逐步處理這些請(qǐng)求,從而避免流量突刺造成系統(tǒng)負(fù)載過高)、集群流量控制、實(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 提供開箱即用的與其它開源框架 / 庫(kù)的整合模塊,例如與 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 的組成

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

實(shí)戰(zhàn)使用

簡(jiǎn)單實(shí)例

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

添加sentinle必備依賴

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

書寫接口限流測(cè)試

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"; //被保護(hù)的資源}catch (BlockException e){e.printStackTrace();return "系統(tǒng)繁忙,請(qǐng)稍后"; //被限流或者被降級(jí)的操作處理}}/*** 定義限流規(guī)則* @PostConstruct  當(dāng)前類的構(gòu)造函數(shù)執(zhí)行之后執(zhí)行*/@PostConstructpublic void initFlowRule(){//創(chuàng)建存放限流規(guī)則的集合List<FlowRule> ruleList = new ArrayList<>();//創(chuàng)建限流規(guī)則FlowRule rule = new FlowRule();//定義資源 表示Sentinel會(huì)對(duì)哪個(gè)資源生效 相當(dāng)于做一個(gè)標(biāo)記rule.setResource("Hello");//定義限流規(guī)則類型 RuleConstant.Flow_GRADE_QPS: QPS限流類型rule.setGrade(RuleConstant.FLOW_GRADE_QPS);//定義QPS每秒能通過的請(qǐng)求個(gè)數(shù)rule.setCount(2);//將限流規(guī)則存放到集合中ruleList.add(rule);//加載限流規(guī)則FlowRuleManager.loadRules(ruleList);}
}

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

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

配置本地控制臺(tái)

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

Releases · alibaba/Sentinel · GitHub

當(dāng)然有下載比較慢的問題,所以也可以在本博主提供的鏈接里進(jìn)行下載

sentinel1.8.6-jar阿里云下載

下載后在cmd窗口中運(yùn)行啟動(dòng)

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

?

瀏覽器地址欄輸入localhost:9000進(jìn)行訪問,賬號(hào)密碼默認(rèn)都是sentinel

?

?此時(shí)登錄后會(huì)發(fā)現(xiàn)沒有被監(jiān)控的服務(wù),因?yàn)樵摽刂婆_(tái)還沒有和本地項(xiàng)目進(jìn)行關(guān)聯(lián)

關(guān)聯(lián)本地項(xiàng)目需要添加控制臺(tái)所需依賴

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

然后在idea啟動(dòng)配置中添加啟動(dòng)配置

-Dcsp.sentinel.dashboard.server=localhost:9000 ? Sentinel控制臺(tái)的地址和端口號(hào)
-Dproject.name=SentinelQuickStart?? ??? ??? ??? ?本地應(yīng)用在控制臺(tái)中的名稱

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

?

?

?

?

命令配置以空格隔開即可

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

使用可視化ui配置簡(jiǎn)單流控

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

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

重啟項(xiàng)目再測(cè)試接口

?

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

?

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

點(diǎn)擊保存

再測(cè)試接口

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

配置異步任務(wù)限流

在主啟動(dòng)類中開啟允許異步任務(wù)

?新建書寫一個(gè)服務(wù)層,并書寫異步方法

?

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

啟動(dòng)測(cè)試:

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

使用注解定義限流資源

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

首先導(dǎo)入所需依賴

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

書寫sentinel注解定義配置類

?書寫接口

?測(cè)試:

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

SpringCloud整合Sentinel

簡(jiǎn)單整合

新建一個(gè)springboot項(xiàng)目,引入依賴:

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

書寫配置:

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

?書寫接口:?

啟動(dòng)項(xiàng)目

輸入之前的 命令啟動(dòng)下載的可視化jar包

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

在控制臺(tái)中添加限流策略資源

?

調(diào)用接口測(cè)試

?并發(fā)線程流控

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

調(diào)整接口

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

?啟動(dòng)測(cè)試:

關(guān)聯(lián)模式?

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

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

書寫接口:

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

?

?

正常測(cè)試:

?

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

?

對(duì)生成訂單進(jìn)行接口壓測(cè),然后查看查詢訂單接口是否服務(wù)降級(jí)?

?可以看到對(duì)生成訂單進(jìn)行壓測(cè),關(guān)聯(lián)的查詢訂單卻受到了流控服務(wù)降級(jí)

整合openFeign使用

首先準(zhǔn)備一個(gè)最少有兩個(gè)服務(wù)的微服務(wù)項(xiàng)目并將服務(wù)注冊(cè)到nacos中,這樣可以進(jìn)行服務(wù)之間的遠(yuǎn)程調(diào)用,從而使用openFeign再整合sentinel 這里不再?gòu)念^演示,具體使用openFeign可以查看博主之前文章

這里準(zhǔn)備一個(gè)生產(chǎn)者服務(wù),一個(gè)消費(fèi)者服務(wù)

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

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

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

?啟動(dòng)測(cè)試:

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

更改接口,手動(dòng)添加錯(cuò)誤異常,從而模擬服務(wù)降級(jí)場(chǎng)景,從而使用sentinel進(jìn)行整合服務(wù)降級(jí)

?

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

?

?整合sentinel進(jìn)行服務(wù)降級(jí)

配置中開啟fen對(duì)sentinel使用

創(chuàng)建服務(wù)降級(jí)服務(wù)實(shí)現(xiàn)fen服務(wù)

?

?設(shè)置服務(wù)降級(jí)服務(wù)接口

啟動(dòng)測(cè)試:

?

http://aloenet.com.cn/news/32804.html

相關(guān)文章:

  • 軟件工程師是程序員嗎電腦優(yōu)化工具
  • 建設(shè)一個(gè)大型網(wǎng)站大概費(fèi)用磁力王
  • 主流門戶網(wǎng)站百度關(guān)鍵詞搜索推廣
  • 怎樣設(shè)計(jì)網(wǎng)頁教程關(guān)鍵詞優(yōu)化外包
  • 鄭州電力高等??茖W(xué)校哪個(gè)專業(yè)好重慶seo和網(wǎng)絡(luò)推廣
  • 可視化網(wǎng)站制作軟件站長(zhǎng)之家ppt素材
  • 深圳html5網(wǎng)站建設(shè)搜索引擎營(yíng)銷sem
  • 遼寧網(wǎng)站推廣的目的網(wǎng)絡(luò)運(yùn)營(yíng)是做什么的工作
  • 做外國(guó)網(wǎng)站買域名推廣賺錢一個(gè)2元
  • 網(wǎng)站建設(shè)后期維護(hù)小魔仙網(wǎng)絡(luò)廣告宣傳平臺(tái)
  • 企業(yè)網(wǎng)絡(luò)營(yíng)銷策劃方案范文免費(fèi)seo教程資源
  • wordpress 添加搜索引擎北京網(wǎng)絡(luò)seo
  • 三合一網(wǎng)站建設(shè)方案深圳市網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)公司
  • b2b網(wǎng)站建設(shè)開發(fā)china東莞seo
  • 網(wǎng)站的服務(wù)有哪些seo外鏈工具有用嗎
  • 南陽網(wǎng)站建設(shè)大旗電商電商網(wǎng)站訂煙
  • wordpress投訴功能qq群怎么優(yōu)化排名靠前
  • 多媒體網(wǎng)站開發(fā)實(shí)驗(yàn)報(bào)告做企業(yè)網(wǎng)站建設(shè)的公司
  • 網(wǎng)頁搜索工具新站seo優(yōu)化快速上排名
  • wordpress推廣升級(jí)vipseo做什么網(wǎng)站賺錢
  • 學(xué)網(wǎng)站建設(shè)怎么樣tool站長(zhǎng)工具
  • 網(wǎng)站的懲罰期要怎么做廣告安裝接單app
  • 國(guó)外設(shè)計(jì)網(wǎng)站dooor企業(yè)營(yíng)銷策劃書模板
  • 網(wǎng)站中qq跳轉(zhuǎn)怎么做的推廣公司經(jīng)營(yíng)范圍
  • 網(wǎng)站文化建設(shè)石家莊百度seo代理
  • 設(shè)計(jì)師論壇seo包年優(yōu)化
  • 做網(wǎng)站運(yùn)營(yíng)買什么電腦揚(yáng)州seo推廣
  • 銅仁建設(shè)集團(tuán)招聘信息網(wǎng)站seo快速優(yōu)化軟件網(wǎng)站
  • 做網(wǎng)站接項(xiàng)目seo網(wǎng)站是什么意思
  • 個(gè)人作品展示網(wǎng)站模板營(yíng)銷型網(wǎng)站策劃書