精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

阿里二面:外部接口大量超時 ,把整個系統拖垮,引發雪崩!如何解決?

開發 架構
本著復雜的事情簡單化的原則,我們將一個大的系統拆分成若干個子系統,每個 子系統 職責單一,按 DDD 的設計理念,承載一個子域的業務建設。

大家好,我是Tom哥~

互聯網+ 時代,業務數字化已經蔓延到你能想到的各個行業。各種業務功能、營銷玩法越來越多,系統也越來越復雜。

面對不斷復雜的業務系統,腦子越來越不夠用了

于是 聰明的人們 提出了 微服務 的設計思想

本著 復雜的事情簡單化 的原則,我們將一個大的系統拆分成若干個子系統,每個 子系統 職責單一,按 DDD 的設計理念,承載一個子域的業務建設。

于是,人們可以將精力聚焦,專心完成某一個業務點的深度建設。

多個微服務系統之間通過 RPC 框架(如:dubbo、spring cloud、gRPC 等)完成了串聯,但隨著調用量越來越大,人們發現服務與服務之間的穩定性變得越來越重要

舉個例子:

  • Service D 掛了,響應很慢
  • Service G 和 Service F ,都依賴 Service D,也會受到牽連,對外響應也會變慢
  • 影響層層向上傳遞,Service A 和 Service B 也會被拖垮
  • 最后,引發雪崩效應,系統的故障影響面會越來越大

為了解決這種問題,我們需要引入 熔斷 機制。“當斷則斷,不受其亂。當斷不斷,必受其難”

什么是熔斷?

熔斷,其實是對調用鏈路中某個資源出現不穩定狀態時(如:調用超時或異常比例升高),對這個資源的調用進行限制,讓請求快速失敗,避免影響到其它的資源而導致級聯錯誤。

當資源被降級后,在接下來的降級時間窗口內,對該資源的調用都自動熔斷(默認是拋出 BlockException)

目前市面上的熔斷框架很多,如:Sentinel、Hystrix、Resilience4j 等,這些框架的設計理念都差不多。

本文重點講下 Sentinel 是如何在項目中使用的

Sentinel (分布式系統的流量防衛兵) 是阿里開源的一套用于服務容錯的綜合性解決方案。它以流量為切入點, 從流量控制、熔斷降級、系統負載保護等多個維度來保護服務的穩定性。

核心分為兩部分:

1、核心庫(Java 客戶端):能夠運行在所有 Java 環境,對 Dubbo 、Spring Cloud 等框架也有較好的支持。

2、控制臺(Dashboard):基于 Spring Boot 開發,打包后可以直接運行。

Sentinel 熔斷種類:

  • RT 響應時間
  • 異常數
  • 異常比例

Sentinel 安裝

首先,官網下載 sentinel 控制臺安裝包

下載地址:https://github.com/alibaba/Sentinel/releases

下載 Jar 包后,打開終端,運行命令

java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

登陸Sentinal控制臺:

默認用戶和密碼都是 sentinel ,登錄成功后的界面如下,先來個直觀感受

控制臺配置熔斷規則:

這里表示熔斷策略選擇 慢調用比例,響應時間超過200毫秒則標記為慢請求。如果在一個1000 ms的統計周期內(可自行調整),慢請求比例超過30%且數量超過3個,則對后續請求進行熔斷,熔斷時長為10秒鐘,10秒以后恢復正常。

注解式接入

接入非常簡單,只需要提前在控制臺配置好資源規則,然后在代碼中添加 @SentinelResource注解即可。

// 資源名稱為handle1 
@RequestMapping("/handle1")
@SentinelResource(value = "handle1", blockHandler = "blockHandlerTestHandler")
public String handle1(String params) {
// 業務邏輯處理
return "success";
}

// 接口方法 handle1 的 兜底方法
public String blockHandlerTestHandler(String params, BlockException blockException) {
return "兜底返回";
}

達到閾值后,系統的默認提示是一段英文,很不友好,我們可以自定義兜底方法。在@SentinelResource注解中進一步配置 blockHandler、fallback 屬性字段

  • blockHandler:主觀層面,如果被限流或熔斷,則調用該方法,進行兜底處理
  • fallback:對業務的異常兜底,比如,執行過程中拋了各種Exception,則調用該方法,進行兜底處理

通過上面兩層兜底,可以讓Sentinel 框架更加人性化,體驗更好。

注意:注解式開發,需要添加在方法上,作用域范圍相對固定。下面的項目實戰中,我們也可以采用 顯示 形式,可以靈活圈定代碼塊范圍。

項目實戰

我們這邊有個項目,考慮到客戶的部署成本,想做一個輕量級方案,需求如下:

  • 既想引入框架的熔斷功能,又不想部署控制臺
  • 攔截點相對收攏,類似與dubbo消費端遠程訪問一樣,在代理類的遠程通訊位置做攔截處理

概要方案--流程圖:

1、我們通過 Proxy.newProxyInstance 為所有的接口創建了代理子類

2、所有對代理子類的方法調用全部收攏到 InvocationHandler

3、我們講類名和方法名做一個拼接,然后去 熔斷規則表查詢,看是否配置了規則

4、如果沒有,那么走常規則遠程調用邏輯

5、如果有,將遠程調用邏輯納入 Sentinel 的監控管轄

6、如果觸發了 熔斷機制,則直接拋出 BlockException ,上層業務攔截異常,做特殊處理,比如:修飾下給用戶更合適的文案提示。

熔斷狀態機:

核心的代碼邏輯,繼續往下看

首先,引入 Sentinel 的依賴包:

<!-- 限流、熔斷框架 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.3</version>
</dependency>

熔斷規則表設計:

CREATE TABLE `degrade_rule` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`resource_name` varchar(256) NOT NULL COMMENT '資源名稱',
`count` double NOT NULL COMMENT '慢調用時長,單位 毫秒',
`slow_ratio_threshold` double NOT NULL COMMENT '慢調用比例閾值',
`min_request_amount` int NOT NULL COMMENT '熔斷觸發的最小請求數',
`stat_interval` int NOT NULL COMMENT '統計時長,單位 毫秒',
`time_window` int NOT NULL COMMENT '熔斷時長,單位為 s',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
`updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_resource_name` (`resource_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 COMMENT='熔斷規則表';

由于放棄了部署控制臺,我們只能自己管理熔斷規則的各個屬性值。可以按企業內部管理后臺風格,開發頁面管理這些規則。

當然,早期可以采用更簡單粗暴方式,在數據庫表手動初始化數據。如果要調整規則,走 SQL 訂正。

為了盡可能實時感知規則表數據變更,開發了定時任務,每 10 秒運行一次。

@Scheduled(cron = "0/10 * * * * ? ")
public void loadDegradeRule() {
List<DegradeRuleDO> degradeRuleDOList = degradeRuleDao.queryAllRule();
if (CollectionUtils.isEmpty(degradeRuleDOList)) {
return;
}
String newMd5Hex = DigestUtils.md5Hex(JSON.toJSONString(degradeRuleDOList));
if (StringUtils.isBlank(newMd5Hex) || StringUtils.equals(lastMd5Hex, newMd5Hex)) {
return;
}
List<DegradeRule> rules = null;
List<String> resourceNameList = new ArrayList<>();
rules = degradeRuleDOList.stream().map(degradeRuleDO -> {
//資源名,即規則的作用對象
DegradeRule rule = new DegradeRule(degradeRuleDO.getResourceName())
// 熔斷策略,支持慢調用比例/異常比例/異常數策略
.setGrade(CircuitBreakerStrategy.SLOW_REQUEST_RATIO.getType())
//慢調用比例模式下為慢調用臨界 RT(超出該值計為慢調用);異常比例/異常數模式下為對應的閾值
.setCount(degradeRuleDO.getCount())
// 熔斷時長,單位為 s
.setTimeWindow(degradeRuleDO.getTimeWindow())
// 慢調用比例閾值
.setSlowRatioThreshold(degradeRuleDO.getSlowRatioThreshold())
//熔斷觸發的最小請求數,請求數小于該值時即使異常比率超出閾值也不會熔斷
.setMinRequestAmount(degradeRuleDO.getMinRequestAmount())
//統計時長(單位為 ms)
.setStatIntervalMs(degradeRuleDO.getStatInterval());
resourceNameList.add(degradeRuleDO.getResourceName());
return rule;
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(rules)) {
DegradeRuleManager.loadRules(rules);
ConsumerProxyFactory.resourceNameList = resourceNameList;
lastMd5Hex = newMd5Hex;
}
log.error("[DegradeRuleConfig] 熔斷規則加載: " + rules);
}

考慮到規則變更頻率不會很高,沒有必要每次都DegradeRuleManager.loadRules重新加載規則。這里設計了個小竅門

DigestUtils.md5Hex(JSON.toJSONString(degradeRuleDOList));

對查詢的規則內容 JSON 序列化,然后計算其md5摘要,如果跟上一次的結果一致,說明這期間沒有變更,直接 return ,不做處理。

定義子類,實現了 InvocationHandler 接口。通過 Proxy.newProxyInstance 為目標接口創建一個代理子類。

這樣,每次調用接口方法,實際都是在調用 invoke 方法

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Class<?> clazz = proxy.getClass().getInterfaces()[0];
String urlCode = clazz.getName() + "#" + method.getName();
if (resourceNameList.contains(urlCode)) {
// 增加熔斷處理
Entry entry = null;
try {
entry = SphU.entry(urlCode);
// 遠程網絡調用,獲取結果
responseString = HttpClientUtil.postJsonRequest(url, header, body);
} catch (BlockException blockException) {
// 觸發熔斷
log.error("degrade trigger ! remote url :{} ", urlCode);
throw new DegradeBlockExcetion(urlCode);
} finally {
if (entry != null) {
entry.exit();
}
}
} else {
// 常規處理,不走熔斷判斷邏輯
// 省略
}
}

實驗數據:

責任編輯:姜華 來源: 微觀技術
相關推薦

2025-05-29 03:25:00

2021-07-12 09:09:54

Go 連接池緩存

2013-03-11 10:17:13

路由協議路由器設置網絡連接設置

2020-09-14 06:57:30

緩存穿透雪崩

2021-04-25 09:58:48

mmapJava面試

2021-03-17 15:54:32

IO零拷貝方式

2011-08-10 16:58:35

windowsXP黑屏

2024-09-30 08:43:33

HttpgolangTimeout

2025-05-28 02:25:00

高并發緩存穿透雪崩

2021-04-26 09:40:46

QPS數據庫Redis

2015-07-14 10:54:50

PHP數據循環內存耗盡

2018-12-13 12:43:07

Redis緩存穿透

2023-07-20 09:13:02

Jedis服務器

2021-12-28 14:53:47

Java編程語言

2024-10-24 16:51:08

2010-04-06 18:26:03

CentOS系統

2010-04-23 14:20:15

Aix操作系統

2021-12-26 18:24:51

MySQL InnoDB引擎

2024-03-28 08:32:10

美團關閉訂單輪訓

2012-09-05 11:09:15

SELinux操作系統
點贊
收藏

51CTO技術棧公眾號

色综合久久天天| 国产精品自拍毛片| 中日韩美女免费视频网站在线观看 | 欧美亚洲专区| 国产一区在线观看视频| 久久99国产精品自在自在app| 国产一级免费片| 成人天堂yy6080亚洲高清| 国产精品成人在线观看| 国产精品麻豆免费版| 波多野结衣不卡| 亚洲天天影视网| 日韩av网站在线| 在线黄色免费看| cao在线视频| 国产精品视频一二| 国产精品一区二区三区四区五区| 日本黄色一级视频| 欧美日本不卡| 亚洲人成网站在线播| 性生活一级大片| gogo亚洲高清大胆美女人体| 一个色在线综合| 四虎永久在线精品免费一区二区| 色噜噜噜噜噜噜| 91高潮在线观看| 久久影院午夜论| 91精品国产一区二区在线观看| 老司机深夜福利网站| 成人欧美在线视频| 亚洲成人手机在线| 秋霞蜜臀av久久电影网免费| 在线视频精品免费| 欧美精品一区二区三区在线看午夜| 黄色成人在线免费| 欧美日一区二区| p色视频免费在线观看| 日韩精选在线| 日韩欧美成人一区| 在线观看av网页| 大香伊人久久| 伊人色综合久久天天人手人婷| 日本精品一区二区三区视频| 婷婷视频在线观看| 岛国精品在线播放| 亚洲一区二区三区sesese| 波多野结衣高清视频| 亚洲一区日本| 7m精品福利视频导航| 国产污视频在线看| 国产精品mm| 久久亚洲国产精品成人av秋霞| 在线观看免费黄色网址| 国产一区二区三区四区大秀| 日韩精品有码在线观看| 大地资源二中文在线影视观看| 亚州一区二区| 精品粉嫩aⅴ一区二区三区四区| 国产又粗又长又爽又黄的视频| 91嫩草国产线观看亚洲一区二区| 欧美日韩久久久一区| 色播五月综合网| 欧美一级做一级爱a做片性| 欧美日韩专区在线| 91制片厂毛片| 亚洲男女网站| 3d动漫精品啪啪一区二区竹菊 | 四季av一区二区三区| 久久精品97| 欧美精品自拍偷拍动漫精品| 蜜桃福利午夜精品一区| 蜜桃在线一区| 欧美mv日韩mv国产| 精品中文字幕在线播放| 香蕉人人精品| 中文字幕精品在线| 91视频青青草| 精品69视频一区二区三区Q| 久久久免费观看| √资源天堂中文在线| 日本网站在线观看一区二区三区| 国产日韩欧美成人| www.成人免费视频| 99视频精品全部免费在线| 欧美高清视频一区| 欧美一区二区三区在线观看免费| 国产精品亲子伦对白| 永久免费看av| 欧美aa在线| 欧美丝袜丝nylons| 黄色片子免费看| 亚洲黄页网站| 久久精品免费播放| 国偷自拍第113页| 青青青伊人色综合久久| 波多野结衣一区二区三区在线观看| 欧美特黄一级视频| 欧美国产精品v| 激情五月六月婷婷| 欧美极品影院| 日韩一区二区影院| www色com| 欧美日韩免费| 国产精品久久久久久av福利软件 | 日韩影院在线| 欧美丰满嫩嫩电影| 日本一区二区三区网站| 91精品秘密在线观看| 欧美一区二三区| 国产三级在线观看视频| 久久婷婷色综合| 中文字幕在线乱| 成人欧美一区二区三区的电影| 欧美一区二区精品久久911| 亚洲蜜桃精久久久久久久久久久久| 日韩免费久久| 欧美亚洲日本黄色| 亚洲黄色在线观看视频| 国产精品色哟哟| 免费国产a级片| 日韩成人在线看| 中文字幕日韩av综合精品| 看片网址国产福利av中文字幕| 国产一区二区网址| 图片区小说区区亚洲五月| 美女露胸视频在线观看| 欧美tickling网站挠脚心| 欧美特级黄色录像| 亚洲影视在线| 国产精品一区二区不卡视频| 高潮毛片在线观看| 欧美剧在线免费观看网站| 91视频免费观看网站| 中日韩视频在线观看| 波多野结衣久草一区| 最新日本在线观看| 91精品国产综合久久久蜜臀图片| 日本不卡一区视频| 日本美女一区二区| 日韩久久久久久久久久久久久| 密臀av在线播放| 精品国产伦理网| a级片在线观看免费| 精品一区二区三区欧美| 日韩欧美一区二区在线观看| 深夜成人影院| 亚洲另类欧美自拍| 日韩人妻精品中文字幕| 久久女同互慰一区二区三区| 99爱视频在线| 欧美sss在线视频| 97激碰免费视频| 天天操天天操天天| 偷拍日韩校园综合在线| 日本japanese极品少妇| 亚洲影音一区| 日韩高清av电影| jizz亚洲女人高潮大叫| 色偷偷888欧美精品久久久| 中文在线观看av| 国产精品久久久久久久久免费桃花| 中文字幕亚洲乱码| 一区二区影院| 国产成人成网站在线播放青青| 欧美人体视频xxxxx| 欧美白人最猛性xxxxx69交| 国产一级片免费观看| caoporen国产精品视频| 国产在线观看福利| 欧美三级三级| 91网站免费看| 狂野欧美性猛交xxxxx视频| 亚洲精品一区二区三区蜜桃下载| 日韩免费一级片| 久久综合久久鬼色| 国产又大又黄又猛| 久久久久久久久国产一区| 成人动漫视频在线观看完整版| av女在线播放| 一本一道久久a久久精品逆3p| 中文字幕福利视频| 亚洲精选在线视频| 国产激情视频网站| 欧美aⅴ一区二区三区视频| japanese在线视频| 国产福利资源一区| 国产精品久久久久久久一区探花| 免费成人黄色| 亚洲精品福利视频| 中文字幕人妻一区二区在线视频| 亚洲女同女同女同女同女同69| 中国xxxx性xxxx产国| 日韩国产成人精品| av一区二区三区免费观看| 免费成人网www| 91美女片黄在线观| 亚洲天堂资源| 久久成人这里只有精品| 欧美日韩影视| 欧美一区二区视频在线观看| 一级黄色免费网站| 最新黄网在线观看| 中文字幕欧美激情一区| 人妻精品久久久久中文字幕69| 国产模特精品视频久久久久| 宅男在线精品国产免费观看| 精品少妇3p| 国产精品亚洲片夜色在线| 男女羞羞视频在线观看| 中文国产成人精品| 神马午夜在线观看| 91精品国产综合久久福利软件| 可以免费看的av毛片| 亚洲欧洲色图综合| 国产呦小j女精品视频| 国产一区欧美一区| 精品国产成人av在线免| 亚洲午夜av| 精品国产无码在线| 精品国精品国产自在久国产应用| 古典武侠综合av第一页| 国产一区二区三区免费观看在线 | 久久久久久久极品内射| 欧美激情在线一区二区| gogogo高清免费观看在线视频| 校园春色综合网| 人妻激情另类乱人伦人妻| 五月精品视频| 亚洲不卡中文字幕| 免费成人网www| 狠狠干一区二区| 97青娱国产盛宴精品视频| 91精品国产综合久久久久久久久| 性欧美1819sex性高清| 午夜精品一区二区三区av| 制服丝袜在线播放| 久久精品国产99国产精品澳门| 成人免费黄色网页| 亚洲欧美色图片| 亚洲三区在线观看无套内射| 亚洲第一国产精品| 国内爆初菊对白视频| 日韩欧美在线123| 99国产揄拍国产精品| 欧美日韩国产电影| 亚洲熟女乱色一区二区三区久久久| 日本精品免费观看高清观看| 久久久久久久久黄色| 欧美日韩中文字幕在线视频| 五月婷婷中文字幕| 狠狠躁夜夜躁人人爽超碰91| 日本高清www免费视频| 午夜激情一区二区| 在线观看黄网站| 色综合天天狠狠| 日日骚av一区二区| 欧美性猛交xxxx乱大交退制版| 日韩精选在线观看| 欧美日韩精品欧美日韩精品| 一级片免费观看视频| 337p亚洲精品色噜噜噜| jizz国产视频| 日韩欧美视频一区| 免费观看黄色av| 日韩av影视综合网| 免费人成黄页在线观看忧物| 亚洲久久久久久久久久久| 国产小视频在线观看| 国产一区二区成人| 好吊日视频在线观看| 欧美高清视频免费观看| 免费在线看电影| 91国产中文字幕| 欧美日韩视频免费观看| 国产精品一区二区三区久久久 | 国产日韩精品一区观看| 在线一级成人| 亚洲一区二区精品在线| 午夜精品婷婷| 男人揉女人奶房视频60分| 日韩电影免费在线观看网站| 自拍偷拍21p| 国产99久久久国产精品潘金| 久久精品老司机| 国产精品乱码人人做人人爱 | 一区二区免费av| 成人少妇影院yyyy| 精品少妇人妻一区二区黑料社区| 国产精品免费av| 久久久久国产精品夜夜夜夜夜| 好吊成人免视频| 国产又粗又大又黄| 亚洲精品福利在线观看| av大片在线播放| 午夜精品国产精品大乳美女| 粉嫩av一区二区三区四区五区 | 妖精视频一区二区三区免费观看| 五月婷婷一区| 在线观看不卡| 欧美一级特黄a| 成人深夜在线观看| 日本免费www| 精品国产91乱高清在线观看| 亚洲一级特黄毛片| 精品亚洲一区二区| 在线中文字幕第一页| 国产成人精品免费久久久久| 亚洲3区在线| 亚洲资源视频| 亚洲专区欧美专区| 亚洲欧洲日韩综合| 国产精品美女久久久久aⅴ国产馆| 国产精品99无码一区二区| 欧美日韩亚洲综合| 九一国产在线| 国语自产精品视频在免费| 成人噜噜噜噜| 天天综合狠狠精品| 国产精品色网| av漫画在线观看| 《视频一区视频二区| 亚洲av无码精品一区二区| 精品国产91久久久久久久妲己| 欧美日韩xx| 国产精品入口免费视| 台湾色综合娱乐中文网| 农民人伦一区二区三区| 国产麻豆午夜三级精品| 久久久国产一级片| 91国产成人在线| 三级无遮挡在线观看| 欧美精品久久久久| 久久精品九色| 久久av秘一区二区三区| 美女免费视频一区二区| 精品人妻一区二区三区蜜桃视频| 五月天一区二区| 丰满人妻一区二区| 欧美日韩电影在线观看| 爱情电影网av一区二区| 致1999电视剧免费观看策驰影院| 日本欧美一区二区| 亚洲欧美va天堂人熟伦| 色伊人久久综合中文字幕| 熟妇人妻一区二区三区四区 | 国产探花在线播放| 8x福利精品第一导航| 国产美女av在线| 91视频国产高清| 欧美va亚洲va日韩∨a综合色| 亚洲一级片av| 一区二区三区精品视频| www.蜜桃av.com| 欧美激情久久久久| 国产欧美自拍一区| 日韩中文字幕在线视频观看 | 欧美日韩亚洲综合在线| 久久久久久久久免费视频| 91夜夜揉人人捏人人添红杏| 在线精品国产| 性活交片大全免费看| 午夜久久久久久电影| 午夜视频福利在线| 国产成人高潮免费观看精品| 久久高清免费| 色噜噜狠狠一区二区三区狼国成人| 亚洲欧美日韩电影| 乱精品一区字幕二区| 91成人精品网站| 精品国内自产拍在线观看视频 | 高清av一区| 这里只有精品66| 高清国产一区二区三区| 久久国产视频精品| 中文字幕在线精品| 亚洲精品国产九九九| 免费在线观看亚洲视频| 欧美高清在线精品一区| 国产乱码一区二区| 性色av一区二区三区免费| 国产欧美日韩精品一区二区免费| 激情五月俺来也| 亚洲精品乱码久久久久| 凸凹人妻人人澡人人添| 国产精品久久久久久久久久久新郎 | 日本人亚洲人jjzzjjz| 在线综合视频播放| 国产伦子伦对白在线播放观看| 日韩在线导航| 国产激情视频一区二区三区欧美| 欧美特黄aaaaaa| 久久天天躁狠狠躁夜夜躁| 精品成人自拍视频| 亚洲视频一二三四| 日韩高清影视在线观看| 成人网中文字幕| 亚洲一区视频| 青草影院在线观看| 亚洲精品日韩欧美| 4438五月综合|