精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产日韩精品一区二区三区| 日韩不卡免费视频| 亚洲国产日韩欧美综合久久| 人妻少妇被粗大爽9797pw| 成年人免费在线视频| 韩国欧美国产1区| 国色天香2019中文字幕在线观看| 乐播av一区二区三区| 精品久久国产一区| 精品久久久一区| 国产精品亚洲天堂| 五月婷婷开心中文字幕| 久久丁香综合五月国产三级网站| 欧美激情影音先锋| 国产一二三四视频| 久久97精品| 91精品国产综合久久婷婷香蕉| 2018国产在线| 麻豆传媒视频在线| 97久久超碰国产精品电影| 成人激情视频网| 久久久久久久久久成人| 国产精品av久久久久久麻豆网| 亚洲欧洲中文天堂| 亚洲免费观看在线| 青青国产精品| 色婷婷精品大在线视频| 日本高清视频免费在线观看| а√天堂中文在线资源bt在线| 成人av资源在线观看| 91九色国产社区在线观看| 久久国产视频一区| 伊人久久亚洲美女图片| 久久九九免费视频| 亚洲一级片在线播放| 欧美变态网站| 欧美zozo另类异族| 一级做a爱视频| 成人在线免费| 欧洲av一区二区嗯嗯嗯啊| 国产69精品久久久久999小说| 成人ww免费完整版在线观看| 中文乱码免费一区二区| 欧美黑人3p| 亚州视频一区二区三区| 成人午夜短视频| 97碰碰视频| 国产av无码专区亚洲a∨毛片| 美女看a上一区| 国产精品高潮呻吟久久av无限| 国产又大又黄又粗| 亚洲国产裸拍裸体视频在线观看乱了中文 | 免费日韩一区二区三区| 精品国产亚洲一区二区三区在线观看| 日本少妇激三级做爰在线| 精品久久久网| 这里是久久伊人| 手机免费av片| 91精品网站在线观看| 欧美日韩中文字幕一区| www.com黄色片| 国产精品久久久久久吹潮| 在线观看视频欧美| 中文av一区二区三区| 久久精品超碰| 91麻豆精品国产自产在线观看一区 | 久久免费精彩视频| 在线观看日韩av电影| 97国产精品久久| 亚洲黄色免费观看| 蜜桃视频一区二区三区| 91精品久久久久久久久久久| 国产精品高潮呻吟久久久| 国产自产2019最新不卡| av一区二区在线看| 天堂中文字幕av| 2021国产精品久久精品| 品久久久久久久久久96高清| av免费观看一区二区| 国产精品乱码人人做人人爱| 青青草影院在线观看| 日韩专区av| 狠狠综合久久av一区二区小说| 日本三区在线观看| 亚洲欧洲二区| 亚洲国内精品视频| 五月天精品在线| 欧美喷水视频| 日本成人免费在线| 99久久精品国产一区二区成人| 成人午夜私人影院| 五月天亚洲综合| 免费av不卡在线观看| 欧美性xxxxxx| 三日本三级少妇三级99| 欧美日日夜夜| 久久久精品一区二区| 日韩精品久久久久久久| 麻豆精品在线观看| 国产精品久久亚洲| 91ph在线| 欧美日韩国产色视频| 欧美成年人视频在线观看| 一区二区三区在线资源| 在线观看国产精品91| 久久一级黄色片| 日本va欧美va欧美va精品| 91在线免费看片| av中文在线| 亚州成人在线电影| 免费成年人高清视频| 日韩av不卡一区| 欧美xxxx综合视频| 伊人久久中文字幕| 99久久久精品| 日韩国产精品毛片| **在线精品| 精品国产一区二区国模嫣然| 天堂网中文在线观看| 香蕉久久久久久久av网站| 成人国产精品一区| yw视频在线观看| 日韩欧美成人免费视频| 韩国av中国字幕| 久久久9色精品国产一区二区三区| 91福利视频网| 成人午夜视频一区二区播放| 中文字幕中文乱码欧美一区二区| 日韩欧美一区三区| 成人性生交大片免费看中文视频| 久久久国产视频91| 中文字幕在线日亚洲9| 久久久久久影视| 国产69精品久久久久久久| 精品中文在线| 精品国产一区二区三区在线观看| 亚洲av无码精品一区二区| 99久久久免费精品国产一区二区 | 久操视频免费看| 日韩一级网站| 久久99精品久久久久久久青青日本| 羞羞电影在线观看www| 欧美高清视频不卡网| 久久久久久国产免费a片| 久久精品官网| 你懂的网址一区二区三区| 涩涩av在线| 亚洲国产高清高潮精品美女| 国产一级视频在线观看| 国产91丝袜在线观看| 成人短视频在线观看免费| 日韩精品免费视频一区二区三区 | 欧美日韩电影一区二区三区| 九九色在线视频| 日韩经典中文字幕| 五月婷婷中文字幕| 91麻豆高清视频| 超碰网在线观看| 精品美女视频| 国产精品一区二区三区成人| 91精彩视频在线观看| 欧美日韩国产首页| 国产大片免费看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 性感美女久久精品| 免费看毛片的网站| 免费国产自线拍一欧美视频| 日本精品一区二区| 欧美久久久网站| 久久中文字幕视频| 色屁屁草草影院ccyycom| 婷婷亚洲久悠悠色悠在线播放| 精品人妻一区二区三区日产乱码卜| 欧美在线综合| 亚洲三区四区| 亚洲精品视频一二三区| 97视频在线观看免费高清完整版在线观看| 亚洲aⅴ乱码精品成人区| 一本色道久久综合狠狠躁的推荐| 精品无码在线观看| 久久99精品一区二区三区三区| 2022中文字幕| 欧美**vk| 91久久久久久久久久久久久| 欧美hdxxx| 亚洲日韩第一页| 97人人爽人人爽人人爽| 午夜不卡在线视频| 亚洲AV成人无码网站天堂久久| 国产精品系列在线播放| 北条麻妃在线观看| 亚洲精品国产首次亮相| 激情伦成人综合小说| 粉嫩av一区二区三区四区五区| 精品中文字幕乱| 麻豆导航在线观看| 欧美成人一级视频| 黄色av一区二区| 亚洲综合在线五月| 俄罗斯毛片基地| www.日韩大片| 五月天婷婷在线观看视频| 一本色道久久综合亚洲精品不卡| 9999在线观看| 影视先锋久久| 国产精品久久国产精品| 成人免费av电影| 国内成人精品视频| 久操视频在线播放| 亚洲奶大毛多的老太婆| 午夜老司机福利| 欧美巨大另类极品videosbest| 草久视频在线观看| 亚洲精选一二三| 亚洲不卡的av| 久久免费美女视频| 美女久久久久久久久| 韩国女主播成人在线| 国产免费又粗又猛又爽| 99国产精品自拍| 天天做天天躁天天躁| 日本电影一区二区| 欧美一区二区三区精美影视 | 日韩电影大片中文字幕| 国产高清在线免费| 欧美日韩精品欧美日韩精品| 一级片免费在线播放| 性做久久久久久免费观看| 青青草国产在线观看| 国产精品不卡在线| 日韩欧美黄色网址| 久久夜色精品国产噜噜av| 日本一区二区免费视频| 国产精品一区二区三区乱码| 国模私拍视频在线观看| 男人的j进女人的j一区| 人人干人人视频| 久久国产精品毛片| 欧美极品欧美精品欧美图片| 在线综合亚洲| 一本大道熟女人妻中文字幕在线| 亚洲精品九九| av动漫在线看| 亚洲一区中文| 六月丁香婷婷激情| 另类亚洲自拍| 亚洲爆乳无码专区| 视频一区视频二区中文字幕| 国产精品人人妻人人爽人人牛| 亚洲免费中文| 久久精品99国产| 视频一区二区欧美| 青青青在线视频免费观看| 秋霞av亚洲一区二区三| 高清一区在线观看| 久久国产人妖系列| 午夜激情视频网| 国产成人高清视频| 久久性爱视频网站| 99在线热播精品免费| 国产精品成人一区二区三区电影毛片| 久久午夜色播影院免费高清| 99久久久无码国产精品性| 国产精品素人视频| 欧美另类videoxo高潮| 亚洲欧美电影院| 久久精品免费av| 日韩人体视频一二区| 久久国产香蕉视频| 欧美老肥妇做.爰bbww| 亚洲乱色熟女一区二区三区| 亚洲成人亚洲激情| 欧美日韩在线中文字幕| 色阁综合伊人av| 色屁屁www国产馆在线观看| 韩剧1988免费观看全集| 嫩草伊人久久精品少妇av杨幂| 国产欧美日韩91| 超碰在线亚洲| 欧美日韩一区二区三区在线视频 | 国产aⅴ爽av久久久久成人| 亚洲国产日韩一区| www.亚洲免费| 欧美日本在线视频中文字字幕| 蜜桃麻豆av在线| 国产精品三级美女白浆呻吟| 亚洲网址在线观看| 麻豆av一区二区三区久久| 国产精品91一区二区三区| 成人午夜视频在线观看免费| 日本美女视频一区二区| 中国特级黄色片| 国产色91在线| 国产在线综合网| 精品视频1区2区| 欧美 日韩 中文字幕| 原创国产精品91| caoporn-草棚在线视频最| 国产精品老女人精品视频| 大奶一区二区三区| 在线看视频不卡| 模特精品在线| 韩国黄色一级片| 国产精品伦理一区二区| 最新中文字幕一区| 日韩三级视频在线观看| 国产中文字幕在线看| 久久久久久香蕉网| 一区二区三区日本视频| 精品久久久久久亚洲| 亚洲91中文字幕无线码三区| 精品www久久久久奶水| 国产成人av电影在线| 日韩欧美视频免费观看| 欧美日韩在线另类| www.五月天激情| 日韩亚洲欧美成人| 欧美一区 二区 三区| 精品日韩美女| 影音先锋久久久| 无码国产精品一区二区高潮| 中文字幕巨乱亚洲| 麻豆成人免费视频| 亚洲韩国青草视频| 波多野结依一区| 超碰97网站| 欧美在线视屏| 日韩av片专区| 欧美激情一区二区三区在线| 成人精品在线看| 亚洲激情在线观看| 欧美家庭影院| 岛国视频一区| 欧美一区二区| 日韩不卡的av| 亚洲天天做日日做天天谢日日欢| 伊人网视频在线| 一区国产精品视频| 久久久成人av毛片免费观看| 久久久久免费网| 国产精品资源| 国产精品揄拍100视频| 懂色aⅴ精品一区二区三区蜜月| 四虎精品一区二区三区| 午夜精品福利视频| 色综合www| 精品久久久久久无码国产| 久久麻豆一区二区| 男操女视频网站| 色999日韩欧美国产| 高清欧美日韩| 伊人久久青草| 国产乱码字幕精品高清av| 日本一二三区在线观看| 日韩一区二区三区电影| 色呦呦呦在线观看| 国产精选一区二区| 亚洲综合二区| 色噜噜噜噜噜噜| 5858s免费视频成人| 日本天堂在线观看| 亚洲综合日韩中文字幕v在线| 亚洲天堂久久| 波多野结衣一本| 欧美视频一区二区三区四区| 午夜视频在线| 99re国产| 国产日韩一区| 纪美影视在线观看电视版使用方法| 精品视频123区在线观看| 91小视频xxxx网站在线| 国内一区在线| 欧美96一区二区免费视频| 麻豆视频在线免费看| 亚洲第一视频网| 亚洲天堂一区二区| 2021国产视频| av网站一区二区三区| 中文字幕 人妻熟女| 欧美精品在线播放| 色愁久久久久久| 在线免费看污网站| 亚洲成a人片综合在线| 国产永久免费高清在线观看视频| 国产在线精品自拍| 99riav1国产精品视频| 丁香花五月婷婷| 日韩免费高清av| 成人精品电影在线| www.18av.com| 国产日韩精品一区二区三区| 国产黄色一区二区| 青青a在线精品免费观看| 99久久综合| 精品人妻一区二区三区香蕉| 宅男在线国产精品| 日韩高清中文字幕一区二区| 人妻激情另类乱人伦人妻| 国产色综合一区| 色窝窝无码一区二区三区|