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

微服務(wù)循環(huán)依賴調(diào)用引發(fā)的血案

開發(fā) 架構(gòu)
微服務(wù)之間的耦合性非常強(qiáng),這嚴(yán)重違反了微服務(wù)的初衷;這種情況往往是服務(wù)之間的調(diào)用沒有約束導(dǎo)致的,為了方便取到或更新數(shù)據(jù),服務(wù)之間可以隨意的調(diào)用,以”微服務(wù)“為設(shè)計(jì)目標(biāo)的系統(tǒng)會逐漸演變成一個(gè)分布式大單體?。

最近的迭代轉(zhuǎn)測后遇到了一個(gè)比較有意思的問題。在測試環(huán)境整體運(yùn)行還算平穩(wěn),但是過一段時(shí)間之后,就開始有接口超時(shí)了,日志中出現(xiàn)非常多的 “java.net.SocketTimeoutException: Read timed out”。試了幾次重啟大法,每次都是只能堅(jiān)持一會之后,再次出現(xiàn) SocketTimeoutException。

注意:在測試環(huán)境于遇到問題重啟服務(wù),并不是一個(gè)好的實(shí)踐,因?yàn)橹貑⒖赡軙尣蝗菀壮霈F(xiàn)的問題現(xiàn)場被破壞。如果問題在測試環(huán)境不能再重新,卻在發(fā)版后出現(xiàn)在生產(chǎn)環(huán)境的話,那不僅會造成生產(chǎn)運(yùn)維事件,還要在巨大的壓力下去解決問題。

初步分析

順著測試匯報(bào)的出現(xiàn)問題的場景,跟蹤調(diào)用鏈上相關(guān)服務(wù)的日志,發(fā)現(xiàn)出現(xiàn)了微服務(wù)之間循依賴調(diào)用。大致情況可以抽象如下所示(圖中所有調(diào)用都是 http 協(xié)議):

圖片

  • Client 調(diào)用服務(wù) Foo.hello()
  • Foo.hello() 邏輯中會調(diào)用服務(wù) Boo.boo()
  • Boo.boo() 又調(diào)用回服務(wù) Foo 的另外一個(gè)方法 another()

當(dāng)然真實(shí)的場景要比較這個(gè)復(fù)雜,調(diào)用鏈更長,不過最終形成了環(huán)形依賴調(diào)用。至于這個(gè)環(huán)形依賴為什么回導(dǎo)致超時(shí),當(dāng)時(shí)想了多種可能,比如數(shù)據(jù)庫慢查詢、數(shù)據(jù)庫鎖、分布式鎖等等。但是整個(gè)調(diào)用鏈上都是查詢請求,而且查詢相關(guān)的數(shù)據(jù)量也非常小,不會有鎖存在。發(fā)生問題的時(shí)候也沒有與查詢數(shù)據(jù)相關(guān)的數(shù)據(jù)庫寫請求。

鑒于這個(gè)環(huán)形依賴調(diào)用確實(shí)是這個(gè)迭代版本中引入的變更,以及雖然沒有理清其中的因果關(guān)系原理,但是這個(gè)環(huán)性依賴調(diào)用還是很可疑的,而且是不必要的環(huán)形調(diào)用。就抱著將環(huán)形依賴調(diào)用去掉試試看的態(tài)度,做了修復(fù)。修復(fù)完后,SocketTimeoutException 不再出現(xiàn)了。問題解決了。

探尋原因

問題雖然不再出現(xiàn),但是憑運(yùn)氣解決的問題,通常有可能不是真的的解決。只有弄清楚背后的原理,我們才能真正的確認(rèn)問題是不是這個(gè)原因?qū)е碌模@樣的修復(fù)是不是真的把問題解決了。

通過假設(shè)環(huán)形調(diào)用就是導(dǎo)致調(diào)用超時(shí)的直接原因。我們看看能不能推出因果關(guān)系。通過把Foo 服務(wù)容器畫的更詳細(xì)一點(diǎn),如下圖:

圖片

通過這個(gè)圖示,我們可以發(fā)現(xiàn),如果容器中接收請求的線程池如果都在等待服務(wù)Boo.boo() 的響應(yīng),而 Boo 又需要調(diào)用回服務(wù) Foo.another()。這個(gè)時(shí)候,如果所有的線程都處于這樣的狀態(tài),我們就會發(fā)現(xiàn)服務(wù) Foo 容器中以及沒有線程來處理 Boo 的請求了。關(guān)注公眾號:碼猿技術(shù)專欄,回復(fù)關(guān)鍵詞:1111 獲取阿里內(nèi)部的Java性能調(diào)優(yōu)手冊!某種程度上來說就是死鎖了。到這里,我們就可以很確定了,這個(gè)環(huán)形依賴調(diào)用就是導(dǎo)致出現(xiàn)調(diào)用超時(shí)的罪魁禍?zhǔn)住.?dāng) client 發(fā)起的請求速度大于這個(gè)環(huán)形調(diào)用鏈的處理速度的時(shí)候,慢慢的就會導(dǎo)致服務(wù) Foo 的所有線程都進(jìn)入這種死鎖狀態(tài)。

驗(yàn)證

這里只列出關(guān)鍵的代碼,具體的代碼可以參考 gitee 工程:https://gitee.com/donghbcn/CircularDependency

Eureka 服務(wù)器

建個(gè)簡單工程將Eureka server啟動起來。

服務(wù) Foo

創(chuàng)建 SpringBoot 工程實(shí)現(xiàn) Foo 服務(wù)。Foo 通過 FeignClient 調(diào)用 Boo 服務(wù)。設(shè)置缺省的容器 Tomcat 的最大線程數(shù)為 16,Tomcat 默認(rèn)配置最大線程數(shù) 200,對于驗(yàn)證這個(gè)場景有點(diǎn)了大了,要看到效果需要等的時(shí)間有點(diǎn)長。

application.properties

spring.application.name=demo-foo
server.port=8000
eureka.client.serviceUrl.defaultZnotallow=http://localhost:8080/eureka
server.tomcat.threads.max=16
package com.cd.demofoo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class FooController {
@Autowired
BooFeignClient booFeignClient;
@RequestMapping("/hello")
public String hello(){
long start = System.currentTimeMillis();
System.out.println("[" + Thread.currentThread() +
"] foo:hello called, call boo:boo now");
booFeignClient.boo();
System.out.println("[" + Thread.currentThread() +
"] foo:hello called, call boo:boo, total cost:" +
(System.currentTimeMillis() - start));
return "hello world";
}

@RequestMapping("/another")
public String another(){
long start = System.currentTimeMillis();
try {
//通過 slepp 模擬一個(gè)耗時(shí)調(diào)用
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("foo:another called, total cost:" + (System.currentTimeMillis() - start));
return "another";
}
}

服務(wù) Boo

創(chuàng)建 SpringBoot 工程實(shí)現(xiàn) Boo 服務(wù)。Boo 通過 FeignClient 調(diào)用 Foo 服務(wù)。

package com.cd.demoboo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BooController {

@Autowired
FooFeignClient fooFeignClient;

@RequestMapping("/boo")
public String boo(){
long start = System.currentTimeMillis();

fooFeignClient.another();
System.out.println("boo:boo called, call foo:another, total cost:" +
(System.currentTimeMillis() - start));
return "boo";
}
}

Jmeter

采用 Jmeter 來模擬并發(fā) Client 調(diào)用。配置了30 個(gè) 線程,無限循環(huán)。

圖片

很快服務(wù) Foo 日志就卡死了。過一會 Boo 的日志開始出現(xiàn) SocketTimeoutException,如下圖:

圖片

jstack

通過 jstack 我們可以看到 Foo 進(jìn)程的所有線程都卡在 hello() 調(diào)用上了。

圖片

總結(jié)

微服務(wù)之間的環(huán)形依賴類似于類之間的循環(huán)依賴,當(dāng)依賴關(guān)系形成了環(huán),會造成比較嚴(yán)重的問題:

  • 微服務(wù)直接不能形成環(huán)形調(diào)用,否則非常容易出現(xiàn)死鎖狀態(tài)。
  • 微服務(wù)之間的耦合性非常強(qiáng),這嚴(yán)重違反了微服務(wù)的初衷;這種情況往往是服務(wù)之間的調(diào)用沒有約束導(dǎo)致的,為了方便取到或更新數(shù)據(jù),服務(wù)之間可以隨意的調(diào)用,以”微服務(wù)“為設(shè)計(jì)目標(biāo)的系統(tǒng)會逐漸演變成一個(gè)分布式大單體?。
責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2024-07-12 08:52:50

2025-10-10 08:23:56

2022-04-12 08:43:04

生產(chǎn)故障Dubbo調(diào)用

2021-01-11 05:30:04

Boot 單機(jī)片

2022-01-26 10:29:24

微服務(wù)循環(huán)依賴代碼

2011-02-28 09:31:30

HashtableHashMap

2015-02-04 14:36:07

格式串漏洞Ghost漏洞安全漏洞

2017-03-20 19:40:29

AndroidSwipeRefres下拉刷新

2021-07-27 07:12:11

Getter接口Setter

2011-05-20 12:34:05

大話IT云服務(wù)中斷亞馬遜

2021-12-01 06:59:27

架構(gòu)

2019-09-09 08:30:57

MYSQL代碼數(shù)據(jù)庫

2012-02-13 09:42:41

備份服務(wù)器數(shù)據(jù)中心

2018-11-22 15:50:27

MySQL數(shù)據(jù)庫雙引號

2021-01-25 08:08:22

APP機(jī)器人KOB

2020-01-06 09:43:14

賠償TSB遷移

2017-05-22 08:35:07

MySQL雙引號錯(cuò)位

2021-02-01 10:42:47

MySQL雙引號數(shù)據(jù)庫

2013-08-26 10:19:24

納斯達(dá)克數(shù)據(jù)專線交易暫停

2016-12-01 09:30:03

運(yùn)維網(wǎng)絡(luò)網(wǎng)線
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日韩精品国产一区二区| 少妇高清精品毛片在线视频| 亚洲AV无码一区二区三区少妇| 午夜精彩国产免费不卡不顿大片| 日韩激情片免费| 日韩欧美国产片| 123区在线| 国产拍欧美日韩视频二区| 51午夜精品| 亚洲av无码精品一区二区| 欧美国产激情| 亚洲剧情一区二区| 日韩精品――色哟哟| 欧美xxx视频| 亚洲综合色婷婷| 偷拍视频一区二区| 手机在线观看免费av| 免费观看30秒视频久久| 1769国产精品| 青娱乐在线视频免费观看| 欧美色图在线播放| 日韩成人中文电影| 免费高清视频在线观看| 成人看片在线观看| 精品国产电影一区| 91免费版看片| 麻豆传媒在线免费看| 久久综合久色欧美综合狠狠| 国产精品国产精品| 国产三级第一页| 美女mm1313爽爽久久久蜜臀| 日韩美女在线观看| 日本高清不卡码| 国产欧美日本| 性欧美xxxx| 国产亚洲精品av| 亚洲色图网站| 色偷偷偷亚洲综合网另类| 国精品无码人妻一区二区三区| 看亚洲a级一级毛片| 欧美日韩免费观看一区二区三区| 日本在线观看a| 97超碰在线免费| 亚洲风情在线资源站| 97av中文字幕| 主播国产精品| 一区二区三区影院| 天天操天天干天天玩| 欧美黄色激情| 亚洲免费在线视频| 免费看av软件| 国产黄网站在线观看| 成人免费在线观看入口| 中文字幕精品—区二区日日骚| 国产免费永久在线观看| 国产日韩欧美高清| 亚洲精品欧洲精品| 在线视频1区2区| 国产精品私人自拍| 二级片在线观看| 中文字幕有码在线观看| 亚洲精品成人天堂一二三| 国产911在线观看| 欧美性猛片xxxxx免费中国| 亚洲国产综合人成综合网站| 久操网在线观看| 亚洲最大网站| 欧美午夜电影一区| 国产精欧美一区二区三区白种人| 成人在线视频www| 日韩亚洲欧美一区| 老司机午夜免费福利| 欧美理论电影在线精品| 亚洲免费视频在线观看| jizz18女人高潮| 1024精品久久久久久久久| 欧美刺激性大交免费视频| 亚洲精品在线观看av| 国产精品一级| 国产欧美一区二区三区视频| 精品久久人妻av中文字幕| 成人av资源在线观看| 欧美日韩精品综合| 久操视频在线观看| 亚洲18女电影在线观看| 黄色一级二级三级| 精品国产亚洲一区二区三区| 盗摄牛牛av影视一区二区| 午夜在线视频一区二区区别| 国产精品www网站| 国产麻豆免费视频| 99精品视频中文字幕| 亚洲mv在线看| 国产桃色电影在线播放| 色欧美片视频在线观看| 小早川怜子一区二区三区| 欧美综合自拍| 久久精品国产亚洲| 精品人妻一区二区三区免费看| 久久成人久久爱| 精品伦精品一区二区三区视频| 18免费在线视频| 亚洲aaa精品| av免费一区二区| 全国精品免费看| 久久精品中文字幕免费mv| 欧美一级特黄视频| 国产最新精品免费| 日韩欧美亚洲日产国| 日本精品600av| 欧美亚日韩国产aⅴ精品中极品| 师生出轨h灌满了1v1| 成人在线免费视频观看| 91国产在线精品| 99热这里精品| 亚洲国产精品t66y| 欧美 日韩 国产在线观看| 91视频亚洲| 最近2019中文字幕第三页视频 | 国产一区二区三区网| 欧美日韩第一页| 911美女片黄在线观看游戏| 99久精品国产| av在线免费观看国产| 少妇精品视频在线观看| 国产亚洲精品成人av久久ww| 日本三级黄色大片| 豆国产96在线|亚洲| 一本—道久久a久久精品蜜桃| 日韩精品专区| 日韩av中文字幕在线| 国产性70yerg老太| 国产成人在线视频播放| 天天爱天天做天天操| 国产亚洲人成a在线v网站| 亚洲性线免费观看视频成熟| 成人毛片18女人毛片| 不卡一区二区在线| 男人天堂手机在线视频| 日韩中文在线| 欧美大学生性色视频| av小说天堂网| 亚洲精品国产a久久久久久| 手机av在线免费| 97偷自拍亚洲综合二区| 国产在线高清精品| 蜜芽在线免费观看| 欧美日韩黄视频| 中文字幕乱码av| 国产一区二区三区免费| 黄色网址在线免费看| 日韩一区二区三区在线看| 欧美刺激性大交免费视频| av中文字幕第一页| 亚洲精品第一国产综合野| 成人三级做爰av| 亚洲天堂久久| 97av自拍| 午夜久久中文| 亚洲香蕉成人av网站在线观看 | 日韩av电影免费在线| 日韩影片中文字幕| 中文字幕欧美专区| 国产乱淫a∨片免费观看| 亚洲激情图片小说视频| 手机免费看av片| 国产日韩专区| 亚洲图色在线| 136导航精品福利| 97视频在线观看播放| 精品欧美不卡一区二区在线观看| 在线免费观看一区| 国产一区二区精彩视频| 国产69精品久久久久777| 国产av麻豆mag剧集| 国产精品三级| 亚洲一区二区三区毛片| 高清电影在线免费观看| 亚洲男人的天堂在线播放| 在线观看色网站| 亚洲激情第一区| 国产精品一区二区入口九绯色| 免费人成网站在线观看欧美高清| 国内精品国产三级国产99| 欧美美女在线直播| 国产美女扒开尿口久久久| 性欧美1819sex性高清大胸| 亚洲男人天天操| 国产精品区在线观看| 午夜电影网一区| 欧美日韩生活片| 成人激情黄色小说| 波多野结衣xxxx| 亚洲美洲欧洲综合国产一区| 神马影院我不卡| 国产精品久久久久av蜜臀| 国产精品欧美日韩| sm在线播放| 俺去亚洲欧洲欧美日韩| 三级理论午夜在线观看| 欧美一区日韩一区| 成人免费视频国产免费| 亚洲国产精品自拍| 欧美美女性生活视频| www国产亚洲精品久久麻豆| 91精品国产三级| 久久激情久久| 国产精品久久久久久久乖乖| 天天射天天综合网| 欧美高清性xxxxhd| 精品在线网站观看| 亚洲综合最新在线| 激情中国色综合| 人妖精品videosex性欧美| 亚洲丝袜精品| 日韩中文字幕精品| 国产三级在线观看| 亚洲精品美女久久久| 精品国产黄色片| 欧美日韩一区三区| 黄色片视频免费| 欧美午夜影院在线视频| 久久久久久蜜桃| 亚洲欧美日韩国产手机在线| 国产精品密蕾丝袜| 91麻豆免费在线观看| 欧美图片自拍偷拍| 国产精品一色哟哟哟| 九九九九九伊人| 蜜桃av噜噜一区| 欧美亚洲日本在线观看| 午夜影院日韩| 欧美色图色综合| 亚洲欧洲日本mm| 日韩伦理在线免费观看| 一区在线免费| 国产成人永久免费视频| 狠色狠色综合久久| 国产aaa免费视频| 国模 一区 二区 三区| 国产精品三级一区二区| 欧美欧美全黄| 青青青在线观看视频| 亚洲午夜精品久久久久久app| 日韩国产小视频| 欧美日韩影院| 精品国产av无码一区二区三区| 欧美午夜a级限制福利片| 国产精品日韩三级| 国产主播一区| 精品国产一二三四区| 国产亚洲综合精品| 别急慢慢来1978如如2| 日本欧美一区二区| 不卡的在线视频| 国产精品白丝jk黑袜喷水| 国产免费无码一区二区| 97精品国产露脸对白| 91精品人妻一区二区三区蜜桃欧美 | 91丝袜在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 右手影院亚洲欧美| 中文字幕 久热精品 视频在线| 国产视频三区四区| 亚洲视频一区二区免费在线观看| 激情四射综合网| 精品福利免费观看| www.久久网| 91精品国产91热久久久做人人| www日本视频| 亚洲精品网址在线观看| a天堂中文在线88| 欧美成人自拍视频| 三级在线观看视频| 国产精自产拍久久久久久蜜| 国产亚洲字幕| 久热这里只精品99re8久| 成人婷婷网色偷偷亚洲男人的天堂| 人人妻人人澡人人爽精品欧美一区| 伊人成人在线| 日本熟妇人妻中出| 国产精品 欧美精品| 免费在线观看成年人视频| 国产精品视频第一区| 久草资源在线视频| 色视频一区二区| a级片在线视频| 亚洲欧美日韩国产中文专区| 欧美69xxxx| 日本精品免费观看| 日本精品视频| 日韩欧美99| 亚洲一级高清| 一区二区免费av| av欧美精品.com| 久久福利免费视频| 日本精品视频一区二区| 性做久久久久久久久久| 一本色道久久88综合亚洲精品ⅰ| 国语对白在线刺激| 国产九九精品视频| 欧美日韩大片免费观看| 91成人在线视频观看| 日韩精品三区四区| 六十路息与子猛烈交尾| 亚洲乱码一区二区三区在线观看| 久久久久99精品成人片我成大片 | 午夜电影网亚洲视频| 91国偷自产中文字幕久久| 国产丝袜高跟一区| 黄网站在线观| 91视频免费在线| av亚洲免费| 91免费视频网站在线观看| 成人美女视频在线观看18| 美女视频久久久| 欧美日韩一区二区三区不卡| 丝袜+亚洲+另类+欧美+变态| 欧美成人午夜视频| 久久69成人| 亚洲国产欧美一区二区三区不卡| 小嫩嫩精品导航| 亚洲天堂2024| 亚洲国产成人porn| 懂色av成人一区二区三区| 欧美精品亚州精品| 亚洲综合视频| 一区二区三区四区免费视频| 日韩av在线播放中文字幕| 国产真实乱人偷精品人妻| 欧美视频免费在线| 五月婷婷综合久久| 97超级碰碰碰久久久| 精品国产导航| 人妻少妇精品久久| av资源网一区| 国产福利拍拍拍| 亚洲精品久久久久久下一站| av影院在线| 国内精品一区二区| 亚洲欧美不卡| 少妇大叫太粗太大爽一区二区| 欧美午夜精品久久久久久久| 日本一区二区三区在线观看视频| 91高清视频免费观看| 亚洲精品3区| 爱情岛论坛成人| 18欧美亚洲精品| 国产ts变态重口人妖hd| 欧美日韩xxxxx| 动漫av一区| 久久久噜噜噜www成人网| 久久久精品免费观看| 中文字幕乱码中文字幕| 日韩中文字幕欧美| 一区二区三区在线免费看| 成人黄色av片| 久久久久久久久久久黄色| 国产成人av免费| 久久久国产精彩视频美女艺术照福利| 日韩欧美另类中文字幕| r级无码视频在线观看| 久久综合国产精品| 在线观看国产精品入口男同| 久久视频在线视频| 丁香一区二区| 中文字幕在线观看第三页| 国产精品视频一二三| 国产偷拍一区二区| 性色av一区二区咪爱| 精品国产一区二区三区四区| 热久久久久久久久| 亚洲国产美女搞黄色| 国产鲁鲁视频在线观看免费| 成人激情av在线| 中文欧美日韩| 欧美性猛交xxxx乱大交少妇| 欧美v日韩v国产v| 欧美黑人粗大| 日韩视频 中文字幕| 久久一区二区视频| 97人妻精品一区二区三区软件| 久久久久国产精品一区| 综合国产视频| 韩国三级与黑人| 一本色道**综合亚洲精品蜜桃冫| 米奇精品一区二区三区| 精品不卡一区二区三区| 久久精品国产久精国产爱| 日本特黄一级片| 中文字幕日本欧美| 日韩电影不卡一区| 日本精品一区在线| 色一情一乱一乱一91av| 亚洲丝袜精品| 一区二区精品视频| 91视视频在线直接观看在线看网页在线看 | 国产精品日韩一区二区 | 日本美女视频网站| 欧美日韩一区不卡|