本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,尤其涉及一種服務(wù)調(diào)用方法及裝置。
背景技術(shù):
目前,互聯(lián)網(wǎng)公司的系統(tǒng)通常由大量提供不同功能的子系統(tǒng)采用微服務(wù)的架構(gòu)組成。微服務(wù)是指開(kāi)發(fā)多個(gè)獨(dú)立小型、但有完整業(yè)務(wù)功能的服務(wù),每個(gè)服務(wù)都有自己的處理和通訊機(jī)制,可以部署在單個(gè)或多個(gè)服務(wù)器上。
微服務(wù)架構(gòu)中存在大量的微服務(wù),而且,微服務(wù)之間存在復(fù)雜的調(diào)用關(guān)系,因此,開(kāi)發(fā)者很難搞清楚整個(gè)系統(tǒng)所包含的各個(gè)微服務(wù)之間的調(diào)用關(guān)系,而且,當(dāng)整個(gè)調(diào)用鏈出現(xiàn)性能瓶頸時(shí),很難定位出現(xiàn)問(wèn)題的服務(wù)組件。
針對(duì)上述問(wèn)題,傳統(tǒng)的解決方案是:在每個(gè)微服務(wù)的客戶(hù)端和服務(wù)端分別進(jìn)行埋點(diǎn)采樣,最后綜合所有的采樣數(shù)據(jù)分析得出系統(tǒng)的服務(wù)調(diào)用鏈路,但這樣的方式會(huì)給每個(gè)微服務(wù)的客戶(hù)端和服務(wù)端帶來(lái)開(kāi)發(fā)和部署壓力,并且不同的微服務(wù)提供方難以協(xié)調(diào)出統(tǒng)一的埋點(diǎn)采樣方案。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種服務(wù)調(diào)用方法及裝置,以解決傳統(tǒng)解決方案存在的微服務(wù)的客戶(hù)端和服務(wù)端開(kāi)發(fā)和部署難,以及,不同的服務(wù)提供方難以統(tǒng)一埋點(diǎn)采樣的技術(shù)問(wèn)題。本發(fā)明的技術(shù)方案如下:
第一方面,本申請(qǐng)?zhí)峁┮环N服務(wù)調(diào)用方法,應(yīng)用于服務(wù)網(wǎng)關(guān)中,該方法包括:
接收服務(wù)調(diào)用請(qǐng)求,所述服務(wù)調(diào)用請(qǐng)求包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),所述調(diào)用標(biāo)識(shí)用于唯一標(biāo)示所述服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的服務(wù)調(diào)用鏈路;
根據(jù)所述服務(wù)名稱(chēng)將所述服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端;
接收所述服務(wù)提供端返回的調(diào)用結(jié)果,并將所述調(diào)用結(jié)果發(fā)送給服務(wù)調(diào)用端;
獲取所述服務(wù)調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用信息,以使調(diào)用分析端分析所述調(diào)用信息中的服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)和所述調(diào)用標(biāo)識(shí)獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
可選地,所述調(diào)用信息還包括調(diào)用時(shí)間信息,所述調(diào)用時(shí)間信息包括調(diào)用耗時(shí);獲取所述調(diào)用耗時(shí)的過(guò)程包括:
記錄接收到所述服務(wù)調(diào)用請(qǐng)求的第一時(shí)間戳,以及,記錄接收到所述調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用結(jié)果的第二時(shí)間戳;
計(jì)算所述第二時(shí)間戳與所述第一時(shí)間戳的時(shí)間差,得到每個(gè)服務(wù)的調(diào)用耗時(shí)。
可選地,所述接收服務(wù)調(diào)用請(qǐng)求包括:
接收客戶(hù)端發(fā)送的所述服務(wù)調(diào)用請(qǐng)求;
或者,
接收第一服務(wù)提供端發(fā)送的調(diào)用第二服務(wù)提供端的服務(wù)調(diào)用請(qǐng)求。
第二方面,本申請(qǐng)還提供另一種服務(wù)調(diào)用方法,應(yīng)用于服務(wù)提供端,該方法包括:
第一服務(wù)提供端接收服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)的第一調(diào)用請(qǐng)求,所述第一調(diào)用請(qǐng)求包括第一服務(wù)調(diào)用端標(biāo)識(shí)、第一服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),所述調(diào)用標(biāo)識(shí)用于唯一標(biāo)示所述服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的服務(wù)調(diào)用鏈路;
所述第一服務(wù)提供端解析所述第一調(diào)用請(qǐng)求得到所述第一調(diào)用請(qǐng)求所需調(diào)用的第二服務(wù)名稱(chēng),以及所述調(diào)用標(biāo)識(shí);
所述第一服務(wù)提供端根據(jù)所述第二服務(wù)名稱(chēng)生成第二調(diào)用請(qǐng)求,所述第二調(diào)用請(qǐng)求包括第二服務(wù)調(diào)用端標(biāo)識(shí)、第二服務(wù)名稱(chēng)和所述調(diào)用標(biāo)識(shí);
所述第一服務(wù)提供端將所述第二調(diào)用請(qǐng)求發(fā)送給所述服務(wù)網(wǎng)關(guān),以使所述服務(wù)網(wǎng)關(guān)將所述第二調(diào)用請(qǐng)求轉(zhuǎn)發(fā)給第二服務(wù)提供端,所述第二服務(wù)提供端提供所述第二服務(wù)名稱(chēng)對(duì)應(yīng)的服務(wù);以及,使所述服務(wù)網(wǎng)關(guān)獲得調(diào)用信息,并由調(diào)用分析端根據(jù)所述調(diào)用信息獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
可選地,所述方法還包括:
所述第一服務(wù)提供端通過(guò)所述服務(wù)網(wǎng)關(guān)接收所述第二服務(wù)提供端返回的第二調(diào)用結(jié)果,所述第二調(diào)用結(jié)果由所述第二服務(wù)提供端響應(yīng)所述第二調(diào)用請(qǐng)求得到;
所述第一服務(wù)提供端根據(jù)所述第二調(diào)用結(jié)果響應(yīng)所述第一調(diào)用請(qǐng)求,生成第一調(diào)用結(jié)果,并將所述第一調(diào)用結(jié)果通過(guò)所述服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)給發(fā)起所述第一調(diào)用請(qǐng)求的第一服務(wù)調(diào)用端。
第三方面,本申請(qǐng)?zhí)峁┮环N服務(wù)調(diào)用裝置,應(yīng)用于服務(wù)網(wǎng)關(guān)中,所述裝置包括:
第一接收單元,用于接收服務(wù)調(diào)用請(qǐng)求,所述服務(wù)調(diào)用請(qǐng)求包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),所述調(diào)用標(biāo)識(shí)用于唯一標(biāo)示所述服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的服務(wù)調(diào)用鏈路;
第一發(fā)送單元,用于根據(jù)所述服務(wù)名稱(chēng)將所述服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端;
第二接收單元,用于接收所述服務(wù)提供端返回的調(diào)用結(jié)果;
第二發(fā)送單元,用于將所述調(diào)用結(jié)果發(fā)送給服務(wù)調(diào)用端;
獲取單元,用于獲取所述服務(wù)調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用信息,以使調(diào)用分析端分析所述調(diào)用信息中的服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)和所述調(diào)用標(biāo)識(shí)獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
可選地,所述調(diào)用信息還包括調(diào)用時(shí)間信息,所述調(diào)用時(shí)間信息包括調(diào)用耗時(shí),所述獲取單元包括:
第一記錄子單元,用于記錄接收到所述服務(wù)調(diào)用請(qǐng)求的第一時(shí)間戳;
第二記錄子單元,用于記錄接收到所述調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用結(jié)果的第二時(shí)間戳;
計(jì)算子單元,用于計(jì)算所述第二時(shí)間戳與所述第一時(shí)間戳的時(shí)間差,得到每個(gè)服務(wù)對(duì)應(yīng)的調(diào)用耗時(shí)。
可選地,所述第一接收單元具體用于:
接收客戶(hù)端發(fā)送的所述服務(wù)調(diào)用請(qǐng)求;
或者,
接收第一服務(wù)提供端發(fā)送的調(diào)用第二服務(wù)提供端的服務(wù)調(diào)用請(qǐng)求。
第四方面,本申請(qǐng)?zhí)峁┮环N服務(wù)調(diào)用裝置,應(yīng)用于服務(wù)提供端,該裝置包括:
第一接收單元,用于使第一服務(wù)提供端接收服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)的第一調(diào)用請(qǐng)求,所述第一調(diào)用請(qǐng)求包括第一服務(wù)調(diào)用端標(biāo)識(shí)、第一服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),所述調(diào)用標(biāo)識(shí)用于唯一標(biāo)示所述服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的服務(wù)調(diào)用鏈路;
第一解析單元,用于使所述第一服務(wù)提供端解析所述第一調(diào)用請(qǐng)求得到所述第一調(diào)用請(qǐng)求所需調(diào)用的第二服務(wù)名稱(chēng),以及所述調(diào)用標(biāo)識(shí);
請(qǐng)求生成單元,用于使所述第一服務(wù)提供端根據(jù)所述第二服務(wù)名稱(chēng)生成第二調(diào)用請(qǐng)求,所述第二調(diào)用請(qǐng)求包括第二服務(wù)調(diào)用端標(biāo)識(shí)、第二服務(wù)名稱(chēng)和所述調(diào)用標(biāo)識(shí);
第一發(fā)送單元,用于使所述第一服務(wù)提供端將所述第二調(diào)用請(qǐng)求發(fā)送給所述服務(wù)網(wǎng)關(guān),以使所述服務(wù)網(wǎng)關(guān)將所述第二調(diào)用請(qǐng)求轉(zhuǎn)發(fā)給第二服務(wù)提供端,所述第二服務(wù)提供端提供所述第二服務(wù)名稱(chēng)對(duì)應(yīng)的服務(wù);以及,使所述服務(wù)網(wǎng)關(guān)獲得調(diào)用信息,并由調(diào)用分析端根據(jù)所述調(diào)用信息獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
可選地,所述裝置還包括:
第二接收單元,用于使所述第一服務(wù)提供端通過(guò)所述服務(wù)網(wǎng)關(guān)接收所述第二服務(wù)提供端返回的第二調(diào)用結(jié)果,所述第二調(diào)用結(jié)果由所述第二服務(wù)提供端響應(yīng)所述第二調(diào)用請(qǐng)求得到;
響應(yīng)單元,用于使所述第一服務(wù)提供端根據(jù)所述第二調(diào)用結(jié)果響應(yīng)所述第一調(diào)用請(qǐng)求,生成第一調(diào)用結(jié)果,并將所述第一調(diào)用結(jié)果通過(guò)所述服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)給發(fā)起所述第一調(diào)用請(qǐng)求的第一服務(wù)調(diào)用端。
本實(shí)施例提供的服務(wù)調(diào)用方法,服務(wù)網(wǎng)關(guān)接收服務(wù)調(diào)用請(qǐng)求,服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)名稱(chēng)將該服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端,服務(wù)調(diào)用請(qǐng)求中包含唯一標(biāo)示當(dāng)前調(diào)用鏈路的調(diào)用標(biāo)識(shí),且該調(diào)用標(biāo)識(shí)在整個(gè)調(diào)用鏈路中的各個(gè)服務(wù)提供端間傳遞;每個(gè)服務(wù)調(diào)用請(qǐng)求和調(diào)用結(jié)果都需要經(jīng)過(guò)網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā),因此,服務(wù)網(wǎng)關(guān)能夠獲取所有服務(wù)調(diào)用對(duì)應(yīng)的調(diào)用信息。調(diào)用信息包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息,因此,從該調(diào)用信息中查找該調(diào)用標(biāo)識(shí)所對(duì)應(yīng)的服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)能夠獲得該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。該方法只需要在服務(wù)網(wǎng)關(guān)上設(shè)置埋點(diǎn)進(jìn)行采樣即可,不需要在客戶(hù)端和服務(wù)端都設(shè)置埋點(diǎn),因此,大大降低了每個(gè)服務(wù)的客戶(hù)端和服務(wù)端的開(kāi)發(fā)、部署成本。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出了一種典型的微服務(wù)架構(gòu)的示意圖;
圖2示出了本發(fā)明實(shí)施例一種服務(wù)調(diào)用系統(tǒng)的示意圖;
圖3示出了本發(fā)明實(shí)施例一種服務(wù)調(diào)用方法的流程圖;
圖4示出了本發(fā)明實(shí)施例另一種服務(wù)調(diào)用方法的流程圖;
圖5示出了本申請(qǐng)實(shí)施例一種服務(wù)調(diào)用裝置的框圖;
圖6示出了本申請(qǐng)實(shí)施例一種獲取單元的框圖;
圖7示出了本申請(qǐng)實(shí)施例另一種服務(wù)調(diào)用裝置的框圖。
具體實(shí)施方式
在詳細(xì)介紹本發(fā)明的技術(shù)方案之前,首先介紹下微服務(wù)構(gòu)架:
微服務(wù)是指開(kāi)發(fā)多個(gè)獨(dú)立小型但有完整業(yè)務(wù)功能的服務(wù),每個(gè)服務(wù)都有自己的處理和通訊機(jī)制,可以部署在單個(gè)或多個(gè)服務(wù)器上。微服務(wù)架構(gòu)的思想和理念如下:把系統(tǒng)解耦成更小的單元;每個(gè)單元都有自己的職責(zé);每個(gè)單元通過(guò)應(yīng)用程序編程接口(applicationprogramminginterface,api)暴露,外界不需要關(guān)心它的具體實(shí)現(xiàn);所有的單元都是獨(dú)立的,可以獨(dú)立的進(jìn)行開(kāi)發(fā)、部署、擴(kuò)展以及監(jiān)控;各個(gè)單元之間可以通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議(remoteprocedurecallprotocol,rpc)請(qǐng)示進(jìn)行交互。
在微服務(wù)架構(gòu)中客戶(hù)端與服務(wù)端需要服務(wù)網(wǎng)關(guān)裝置進(jìn)行交互,服務(wù)網(wǎng)關(guān)作為系統(tǒng)的入口,它會(huì)負(fù)責(zé)服務(wù)請(qǐng)求路由、組合及協(xié)議轉(zhuǎn)換等。另外,還需要對(duì)接入客戶(hù)端的身份認(rèn)證、防報(bào)文重放與防數(shù)據(jù)篡改、功能調(diào)用的業(yè)務(wù)鑒權(quán)、響應(yīng)數(shù)據(jù)的脫敏、流量與并發(fā)控制,甚至基于api調(diào)用的計(jì)量或計(jì)費(fèi)。
如圖1所示,示出了一種典型的微服務(wù)架構(gòu),該微服務(wù)系統(tǒng)包括六個(gè)微服務(wù)分別是:a、b、c、d、e和f。例如,該微服務(wù)系統(tǒng)中包含3個(gè)微服務(wù)路由:新用戶(hù)注冊(cè)由微服務(wù)a,b,c和e實(shí)現(xiàn),其中,微服務(wù)之間的調(diào)用關(guān)系是a調(diào)用b,b調(diào)用c,c調(diào)用e;下訂單由微服務(wù)a,b,c和d實(shí)現(xiàn);支付由微服務(wù)a,b,c,d和f實(shí)現(xiàn)。
在微服務(wù)架構(gòu)中,微服務(wù)之間存在著復(fù)雜的調(diào)用關(guān)系,導(dǎo)致系統(tǒng)的開(kāi)發(fā)者都很難搞清楚整個(gè)微服務(wù)系統(tǒng)中微服務(wù)之間的調(diào)用關(guān)系,當(dāng)整個(gè)調(diào)用鏈路出現(xiàn)性能瓶頸時(shí),很難定位出問(wèn)題出在哪個(gè)節(jié)點(diǎn)上。本申請(qǐng)?zhí)峁┑姆?wù)調(diào)用方法,在服務(wù)網(wǎng)關(guān)中設(shè)置埋點(diǎn)采樣,服務(wù)網(wǎng)關(guān)負(fù)責(zé)服務(wù)請(qǐng)求路由,每一次服務(wù)調(diào)用都需要經(jīng)過(guò)服務(wù)網(wǎng)關(guān),因此,服務(wù)網(wǎng)關(guān)能夠采樣到每個(gè)服務(wù)調(diào)用的調(diào)用信息,例如,調(diào)用關(guān)系、調(diào)用耗時(shí)等。然后,分析服務(wù)網(wǎng)關(guān)采集到的調(diào)用信息。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參見(jiàn)圖2,示出了本發(fā)明實(shí)施例一種服務(wù)調(diào)用系統(tǒng)的示意圖,如圖2所示,該系統(tǒng)包括服務(wù)調(diào)用端1、服務(wù)網(wǎng)關(guān)2、服務(wù)提供端3、日志收集器4和調(diào)用分析端5。
服務(wù)調(diào)用端1,用于向服務(wù)網(wǎng)關(guān)發(fā)送服務(wù)調(diào)用請(qǐng)求,并且每次服務(wù)調(diào)用請(qǐng)求中都包含用于唯一標(biāo)示當(dāng)前調(diào)用鏈路的調(diào)用標(biāo)識(shí)。
服務(wù)網(wǎng)關(guān)2,用于將服務(wù)調(diào)用路由到正確的服務(wù)提供端,并記錄本次調(diào)用的調(diào)用信息,其中,調(diào)用信息包括調(diào)用標(biāo)識(shí)、服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)。
服務(wù)提供端3,用于接收并處理第一服務(wù)調(diào)用請(qǐng)求,如果服務(wù)提供端需要再次發(fā)起服務(wù)調(diào)用,則產(chǎn)生第二服務(wù)調(diào)用請(qǐng)求,且該第二服務(wù)調(diào)用請(qǐng)求中攜帶第一服務(wù)調(diào)用請(qǐng)求中所包含的調(diào)用標(biāo)識(shí),調(diào)用標(biāo)識(shí)依次傳遞下去,直到本次調(diào)用的最后一個(gè)服務(wù)提供端。
日志收集器4,用于收集服務(wù)網(wǎng)關(guān)采樣得到的調(diào)用信息,并將調(diào)用信息發(fā)送給調(diào)用分析端5。
在本發(fā)明的一種可能的實(shí)現(xiàn)方式中,日志收集器4可以部署在服務(wù)網(wǎng)關(guān)所在的設(shè)備中;
在本發(fā)明的另一種可能的實(shí)現(xiàn)方式中,日志收集器4可以部署在除服務(wù)網(wǎng)關(guān)之外的設(shè)備中,此種應(yīng)用場(chǎng)景中,日志收集器4需要知道服務(wù)網(wǎng)關(guān)的地址,并從服務(wù)網(wǎng)關(guān)中獲得調(diào)用信息。
調(diào)用分析端5,分析日志收集器收集到的調(diào)用信息,確定包含同一調(diào)用標(biāo)識(shí)的所有調(diào)用請(qǐng)求屬于同一調(diào)用鏈路,根據(jù)各個(gè)不同的調(diào)用鏈路得到該服務(wù)系統(tǒng)的服務(wù)拓?fù)?。以及,獲得各個(gè)調(diào)用請(qǐng)求對(duì)應(yīng)調(diào)用耗時(shí),根據(jù)調(diào)用耗時(shí)確定服務(wù)系統(tǒng)的性能瓶頸。其中,調(diào)用耗時(shí)是指從發(fā)起服務(wù)調(diào)用到得到所述服務(wù)的響應(yīng)所需的時(shí)間。
請(qǐng)參見(jiàn)圖3,示出了本發(fā)明實(shí)施例一種服務(wù)調(diào)用方法的流程圖,該方法應(yīng)用于服務(wù)網(wǎng)關(guān)中,如圖3所示,該方法可以包括:
s110,服務(wù)網(wǎng)關(guān)接收服務(wù)調(diào)用請(qǐng)求。
服務(wù)網(wǎng)關(guān)接收服務(wù)調(diào)用端發(fā)送的服務(wù)調(diào)用請(qǐng)求,該服務(wù)調(diào)用請(qǐng)求包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),該調(diào)用標(biāo)識(shí)用于唯一標(biāo)示服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的調(diào)用鏈路。
服務(wù)調(diào)用端是發(fā)起該服務(wù)調(diào)用請(qǐng)求的一方,服務(wù)調(diào)用端標(biāo)識(shí)可以是能夠唯一標(biāo)識(shí)該服務(wù)調(diào)用端的標(biāo)識(shí)信息,例如,媒體訪(fǎng)問(wèn)控制(mediumaccesscontrol,mac)地址。
在本發(fā)明一種可能的實(shí)現(xiàn)方式中,服務(wù)調(diào)用端可以是客戶(hù)端,即,客戶(hù)端向服務(wù)網(wǎng)關(guān)發(fā)起服務(wù)調(diào)用請(qǐng)求的應(yīng)用場(chǎng)景;
在本發(fā)明另一種可能的實(shí)現(xiàn)方式中,服務(wù)調(diào)用端可以是服務(wù)提供端,即,該服務(wù)提供端實(shí)現(xiàn)某個(gè)服務(wù)時(shí),需要調(diào)用其它的服務(wù),因此,需要向其它的服務(wù)提供端發(fā)送服務(wù)調(diào)用請(qǐng)求。
延用圖1所示微服務(wù)構(gòu)架的實(shí)例,當(dāng)客戶(hù)端發(fā)起新用戶(hù)注冊(cè)請(qǐng)求時(shí),由客戶(hù)端向服務(wù)網(wǎng)關(guān)發(fā)送“新用戶(hù)注冊(cè)”的服務(wù)調(diào)用請(qǐng)求,此種應(yīng)用場(chǎng)景下,服務(wù)調(diào)用者(即,發(fā)送服務(wù)調(diào)用請(qǐng)求的一方)就是客戶(hù)端;例如,新用戶(hù)注冊(cè)服務(wù)由a-b-c-e四個(gè)微服務(wù)實(shí)現(xiàn),微服務(wù)a調(diào)用微服務(wù)b時(shí),服務(wù)調(diào)用端就是微服務(wù)a的服務(wù)提供者。
調(diào)用標(biāo)識(shí)用于唯一標(biāo)示當(dāng)前調(diào)用鏈路的標(biāo)識(shí),該調(diào)用標(biāo)識(shí)由發(fā)起該服務(wù)調(diào)用的客戶(hù)端產(chǎn)生,在實(shí)現(xiàn)該服務(wù)的服務(wù)調(diào)用鏈路中被不間斷地傳遞下去。
s120,服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)名稱(chēng)將服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端。
服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)調(diào)用請(qǐng)求中包含的服務(wù)名稱(chēng),找到提供該服務(wù)名稱(chēng)對(duì)應(yīng)服務(wù)的服務(wù)提供端,并將該服務(wù)調(diào)用請(qǐng)求發(fā)送給該服務(wù)提供端。
s130,服務(wù)網(wǎng)關(guān)接收服務(wù)提供端返回的調(diào)用結(jié)果,并將調(diào)用結(jié)果發(fā)送給服務(wù)調(diào)用端。
服務(wù)提供端接收到服務(wù)調(diào)用請(qǐng)求后,如果不需要再調(diào)用其它服務(wù),則響應(yīng)該服務(wù)調(diào)用請(qǐng)求生成調(diào)用結(jié)果,并將調(diào)用結(jié)果返回給服務(wù)網(wǎng)關(guān),服務(wù)網(wǎng)關(guān)再將接收到的調(diào)用結(jié)果返回給服務(wù)調(diào)用端。
s140,服務(wù)網(wǎng)關(guān)獲取所述服務(wù)調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用信息,以使調(diào)用分析端根據(jù)所述調(diào)用信息獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路,所述調(diào)用信息包括所述服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、所述調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息。
服務(wù)網(wǎng)關(guān)內(nèi)設(shè)置埋點(diǎn)對(duì)整個(gè)服務(wù)調(diào)用過(guò)程進(jìn)行采樣,得到調(diào)用信息,該調(diào)用信息包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息。
調(diào)用分析端分析服務(wù)網(wǎng)關(guān)獲得的調(diào)用信息得到與該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的調(diào)用數(shù)據(jù),并最終得到本次服務(wù)調(diào)用的整個(gè)服務(wù)調(diào)用鏈路。
可選地,根據(jù)調(diào)用信息所包含的調(diào)用時(shí)間信息能夠獲得當(dāng)前調(diào)用的調(diào)用耗時(shí),獲取所述調(diào)用耗時(shí)的過(guò)程包括:
服務(wù)網(wǎng)關(guān)記錄接收到調(diào)用請(qǐng)求的第一時(shí)間戳,以及,記錄接收到該調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用結(jié)果的第二時(shí)間戳,計(jì)算第二時(shí)間戳與所述第一時(shí)間戳的時(shí)間差,得到每個(gè)服務(wù)調(diào)用的調(diào)用耗時(shí)。
根據(jù)當(dāng)前調(diào)用鏈路中各個(gè)調(diào)用所對(duì)應(yīng)的調(diào)用耗時(shí),計(jì)算得到整個(gè)調(diào)用鏈路的調(diào)用耗時(shí),根據(jù)調(diào)用耗時(shí)能夠分析得到服務(wù)系統(tǒng)的性能瓶頸。
本實(shí)施例提供的服務(wù)跟蹤方法,服務(wù)網(wǎng)關(guān)接收服務(wù)調(diào)用請(qǐng)求,服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)名稱(chēng)將該服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端,服務(wù)調(diào)用請(qǐng)求中包含唯一標(biāo)示當(dāng)前調(diào)用鏈路的調(diào)用標(biāo)識(shí),且該調(diào)用標(biāo)識(shí)在整個(gè)調(diào)用鏈路中的各個(gè)服務(wù)提供端間傳遞;每個(gè)服務(wù)調(diào)用請(qǐng)求和調(diào)用結(jié)果都需要經(jīng)過(guò)網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā),因此,服務(wù)網(wǎng)關(guān)能夠獲取所有服務(wù)調(diào)用對(duì)應(yīng)的調(diào)用信息。調(diào)用信息包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息,因此,從該調(diào)用信息中查找該調(diào)用標(biāo)識(shí)所對(duì)應(yīng)的服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)能夠獲得該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。由上述內(nèi)容可知,該方法由服務(wù)網(wǎng)關(guān)采樣獲得調(diào)用信息,最終實(shí)現(xiàn)調(diào)用鏈路追蹤,這樣,只需要在服務(wù)網(wǎng)關(guān)上設(shè)置埋點(diǎn)進(jìn)行采樣即可,不需要在客戶(hù)端和服務(wù)端都設(shè)置埋點(diǎn),因此,大大降低了每個(gè)服務(wù)的客戶(hù)端和服務(wù)端的開(kāi)發(fā)、部署成本。
請(qǐng)參見(jiàn)圖4,示出了本發(fā)明實(shí)施例另一種服務(wù)調(diào)用方法的流程圖,該方法應(yīng)用于圖2所示的系統(tǒng)中,如圖4所示,該方法包括以下步驟:
s210,客戶(hù)端向服務(wù)網(wǎng)關(guān)發(fā)送第一服務(wù)調(diào)用請(qǐng)求。
該第一服務(wù)調(diào)用請(qǐng)求中包含客戶(hù)端標(biāo)識(shí)、第一服務(wù)名稱(chēng)信息、調(diào)用標(biāo)識(shí),其中,調(diào)用標(biāo)識(shí)用于唯一標(biāo)示當(dāng)前調(diào)用鏈路。
s220,服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)名稱(chēng)信息確定相應(yīng)的第一服務(wù)提供端,并將該第一服務(wù)調(diào)用請(qǐng)求轉(zhuǎn)發(fā)給第一服務(wù)提供端,以及,記錄第一服務(wù)調(diào)用請(qǐng)求的調(diào)用相關(guān)信息。
在本申請(qǐng)的一個(gè)實(shí)施例中,所述調(diào)用相關(guān)信息可以包括:服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息,例如,調(diào)用請(qǐng)求接收時(shí)間及相應(yīng)的調(diào)用結(jié)果接收時(shí)間。
s230,第一服務(wù)提供端接收第一服務(wù)調(diào)用請(qǐng)求,并確定是否需要調(diào)用其它服務(wù);如果是,則執(zhí)行s240~s280;如果否,則執(zhí)行s290。
第一服務(wù)提供端接收到第一服務(wù)調(diào)用請(qǐng)求后,解析該第一服務(wù)調(diào)用請(qǐng)求,并確定響應(yīng)該第一服務(wù)調(diào)用請(qǐng)求是否需要再調(diào)用其它服務(wù)。
如果不需要調(diào)用其它服務(wù),則直接響應(yīng)該第一服務(wù)調(diào)用請(qǐng)求;如果需要調(diào)用其它服務(wù),則繼續(xù)調(diào)用其它服務(wù)。
s240,第一服務(wù)提供端生成第二服務(wù)調(diào)用請(qǐng)求并發(fā)送給服務(wù)網(wǎng)關(guān)。
該第二服務(wù)調(diào)用請(qǐng)求攜帶第一服務(wù)調(diào)用請(qǐng)求所包含的調(diào)用標(biāo)識(shí),以及,包括第一服務(wù)提供端的信息和第二服務(wù)名稱(chēng)信息。
如果第一服務(wù)提供端響應(yīng)第一服務(wù)調(diào)用請(qǐng)求時(shí),需要調(diào)用其它服務(wù),則生成調(diào)用所述其它服務(wù)的第二服務(wù)調(diào)用請(qǐng)求,生成第二服務(wù)調(diào)用請(qǐng)求時(shí),將第一服務(wù)調(diào)用請(qǐng)求所包含的調(diào)用標(biāo)識(shí)寫(xiě)入第二服務(wù)調(diào)用請(qǐng)求中。即,調(diào)用標(biāo)識(shí)在服務(wù)調(diào)用鏈路中一直傳遞下去。
s250,服務(wù)網(wǎng)關(guān)接收第二服務(wù)調(diào)用請(qǐng)求,并確定與第二服務(wù)名稱(chēng)信息相對(duì)應(yīng)的第二服務(wù)提供端,并將第二服務(wù)調(diào)用請(qǐng)求發(fā)送給第二服務(wù)提供端,以及記錄第二服務(wù)調(diào)用請(qǐng)求的調(diào)用相關(guān)信息。
s260,第二服務(wù)提供端響應(yīng)第二服務(wù)調(diào)用請(qǐng)求,得到第二調(diào)用結(jié)果,并將第二調(diào)用結(jié)果發(fā)送給服務(wù)網(wǎng)關(guān)。
s270,服務(wù)網(wǎng)關(guān)將第二調(diào)用結(jié)果返回給第一服務(wù)提供端,并記錄第二調(diào)用結(jié)果的調(diào)用相關(guān)信息。
s280,第一服務(wù)提供端根據(jù)第二調(diào)用結(jié)果得到第一調(diào)用結(jié)果,并將第一調(diào)用結(jié)果發(fā)送給服務(wù)網(wǎng)關(guān)。
執(zhí)行完s240~s280之后,依次執(zhí)行s2100~s2120。
s290,第一服務(wù)提供端響應(yīng)第一服務(wù)調(diào)用請(qǐng)求,生成第一調(diào)用結(jié)果并發(fā)送給服務(wù)網(wǎng)關(guān)。
執(zhí)行完s290之后,依次執(zhí)行s2100~s2120;
s2100,服務(wù)網(wǎng)關(guān)將第一調(diào)用結(jié)果返回給客戶(hù)端,并記錄第一調(diào)用結(jié)果的調(diào)用相關(guān)信息。
s2110,日志收集器從服務(wù)網(wǎng)關(guān)中收集記錄的調(diào)用相關(guān)信息。
s2120,調(diào)用分析端分析日志收集器中的數(shù)據(jù),獲得與調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
調(diào)用分析端處理日志收集器中的數(shù)據(jù),得到包含同一個(gè)調(diào)用標(biāo)識(shí)調(diào)用請(qǐng)求,并根據(jù)服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)確定調(diào)用關(guān)系,從而得到該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。利用該方法可以得到各個(gè)不同的服務(wù)調(diào)用鏈路,從而獲得整個(gè)微服務(wù)結(jié)構(gòu)的服務(wù)拓?fù)浣Y(jié)構(gòu)。
在獲得調(diào)用關(guān)系的同時(shí),調(diào)用分析端根據(jù)日志收集器收集到的調(diào)用時(shí)間信息,確定各個(gè)服務(wù)之間的調(diào)用耗時(shí),即服務(wù)網(wǎng)關(guān)接收某調(diào)用請(qǐng)求的時(shí)間與接收該調(diào)用請(qǐng)求所對(duì)應(yīng)的調(diào)用結(jié)果的時(shí)間之間的差值。
利用服務(wù)拓?fù)浣Y(jié)構(gòu)和各個(gè)服務(wù)間的調(diào)用耗時(shí),能夠分析出整個(gè)微服務(wù)架構(gòu)中的性能瓶頸。
調(diào)用分析端可以基于文本檢索系統(tǒng)實(shí)現(xiàn),通過(guò)輸入篩選條件所要查看的調(diào)用鏈路詳情,例如,可以輸入時(shí)間段來(lái)篩選所要查看的調(diào)用發(fā)生的時(shí)間段,從日志收集器的日志數(shù)據(jù)中檢索出所有該時(shí)間段內(nèi)的服務(wù)調(diào)用的相關(guān)信息,例如,服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)和調(diào)用延遲等。
本實(shí)施例提供的服務(wù)調(diào)用方法,在服務(wù)網(wǎng)關(guān)中設(shè)置埋點(diǎn)對(duì)微服務(wù)架構(gòu)中的每一次調(diào)用都進(jìn)行采樣記錄,其中,服務(wù)調(diào)用請(qǐng)求中包含當(dāng)前調(diào)用鏈路的調(diào)用標(biāo)識(shí),且該調(diào)用標(biāo)識(shí)在整個(gè)調(diào)用鏈路中一直傳遞。日志收集器可以收集服務(wù)網(wǎng)關(guān)所采集的調(diào)用相關(guān)信息并提供給調(diào)用分析端,由調(diào)用分析端分析這些調(diào)用相關(guān)信息查找該調(diào)用標(biāo)識(shí)所對(duì)應(yīng)的服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)能夠獲得該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。該方法由服務(wù)網(wǎng)關(guān)采樣獲得調(diào)用信息,最終實(shí)現(xiàn)調(diào)用鏈路追蹤,這樣,只需要在服務(wù)網(wǎng)關(guān)上設(shè)置埋點(diǎn)進(jìn)行采樣即可,不需要在客戶(hù)端和服務(wù)端都設(shè)置埋點(diǎn),因此,大大降低了每個(gè)服務(wù)的客戶(hù)端和服務(wù)端的開(kāi)發(fā)、部署成本。
對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
相應(yīng)于上述的服務(wù)調(diào)用方法實(shí)施例,本申請(qǐng)還提供了服務(wù)調(diào)用裝置實(shí)施例。
請(qǐng)參見(jiàn)圖5,示出了本申請(qǐng)實(shí)施例一種服務(wù)調(diào)用裝置的框圖,該裝置應(yīng)用于服務(wù)網(wǎng)關(guān)中。該裝置包括:第一接收單元110、第一發(fā)送單元120、第二接收單元130、第二發(fā)送單元140和獲取單元150;
第一接收單元110,用于接收服務(wù)調(diào)用請(qǐng)求,所述服務(wù)調(diào)用請(qǐng)求包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),所述調(diào)用標(biāo)識(shí)用于唯一標(biāo)示所述服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
服務(wù)調(diào)用端是發(fā)起該服務(wù)調(diào)用請(qǐng)求的一方,服務(wù)調(diào)用端標(biāo)識(shí)可以是能夠唯一標(biāo)識(shí)該服務(wù)調(diào)用端的標(biāo)識(shí)信息,例如,mac地址。
在本發(fā)明一種可能的實(shí)現(xiàn)方式中,服務(wù)調(diào)用端可以是客戶(hù)端,即,客戶(hù)端向服務(wù)網(wǎng)關(guān)發(fā)起服務(wù)調(diào)用請(qǐng)求的應(yīng)用場(chǎng)景;
在本發(fā)明另一種可能的實(shí)現(xiàn)方式中,服務(wù)調(diào)用端可以是服務(wù)提供端,即,該服務(wù)提供端實(shí)現(xiàn)某個(gè)服務(wù)時(shí),需要調(diào)用其它的服務(wù),因此,需要向其它的服務(wù)提供端發(fā)送服務(wù)調(diào)用請(qǐng)求。
第一發(fā)送單元120,用于根據(jù)所述服務(wù)名稱(chēng)將所述服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端。
服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)調(diào)用請(qǐng)求中包含的服務(wù)名稱(chēng),找到提供該服務(wù)名稱(chēng)對(duì)應(yīng)服務(wù)的服務(wù)提供端,并經(jīng)由第一發(fā)送單元將該服務(wù)調(diào)用請(qǐng)求發(fā)送給該服務(wù)提供端。
第二接收單元130,用于接收所述服務(wù)提供端返回的調(diào)用結(jié)果。
服務(wù)提供端接收到服務(wù)調(diào)用請(qǐng)求后,如果不需要再調(diào)用其它服務(wù),則響應(yīng)該服務(wù)調(diào)用請(qǐng)求生成調(diào)用結(jié)果,并將調(diào)用結(jié)果返回給服務(wù)網(wǎng)關(guān),服務(wù)網(wǎng)關(guān)經(jīng)由第二接收單元接收該調(diào)用結(jié)果。
第二發(fā)送單元140,用于將所述調(diào)用結(jié)果發(fā)送給服務(wù)調(diào)用端。
獲取單元150,用于獲取所述服務(wù)調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用信息,以使調(diào)用分析端分析所述調(diào)用信息獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
服務(wù)網(wǎng)關(guān)內(nèi)設(shè)置埋點(diǎn)對(duì)整個(gè)服務(wù)調(diào)用過(guò)程進(jìn)行采樣,得到調(diào)用信息,該調(diào)用信息包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息。
分析服務(wù)網(wǎng)關(guān)獲得的調(diào)用信息得到與該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的調(diào)用數(shù)據(jù),并最終得到本次服務(wù)調(diào)用的整個(gè)服務(wù)調(diào)用鏈路。
可選地,還可以根據(jù)調(diào)用耗時(shí)確定服務(wù)系統(tǒng)的性能瓶頸,其中,調(diào)用耗時(shí)是指從發(fā)起服務(wù)調(diào)用到得到所述服務(wù)響應(yīng)所經(jīng)歷的時(shí)間。
如圖6所示,獲取單元150包括第一記錄子單元151、第二記錄子單元152和計(jì)算子單元153。
第一記錄子單元151,用于記錄接收到所述服務(wù)調(diào)用請(qǐng)求的第一時(shí)間戳。
第二記錄子單元152,用于記錄接收到所述調(diào)用請(qǐng)求對(duì)應(yīng)的調(diào)用結(jié)果的第二時(shí)間戳。
計(jì)算子單元153,用于計(jì)算所述第二時(shí)間戳與所述第一時(shí)間戳的時(shí)間差,得到每個(gè)服務(wù)對(duì)應(yīng)的調(diào)用耗時(shí)。
本實(shí)施例提供的服務(wù)調(diào)用裝置,服務(wù)網(wǎng)關(guān)接收服務(wù)調(diào)用請(qǐng)求,服務(wù)網(wǎng)關(guān)根據(jù)服務(wù)名稱(chēng)將該服務(wù)調(diào)用請(qǐng)求發(fā)送給相應(yīng)的服務(wù)提供端,服務(wù)調(diào)用請(qǐng)求中包含唯一標(biāo)示當(dāng)前調(diào)用鏈路的調(diào)用標(biāo)識(shí),且該調(diào)用標(biāo)識(shí)在整個(gè)調(diào)用鏈路中的各個(gè)服務(wù)提供端間傳遞;每個(gè)服務(wù)調(diào)用請(qǐng)求和調(diào)用結(jié)果都需要經(jīng)過(guò)網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā),因此,服務(wù)網(wǎng)關(guān)能夠獲取所有服務(wù)調(diào)用對(duì)應(yīng)的調(diào)用信息。調(diào)用信息包括服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)、調(diào)用標(biāo)識(shí)和調(diào)用時(shí)間信息,因此,從該調(diào)用信息中查找該調(diào)用標(biāo)識(shí)所對(duì)應(yīng)的服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)能夠獲得該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。該裝置只需要在服務(wù)網(wǎng)關(guān)上設(shè)置埋點(diǎn)進(jìn)行采樣即可,不需要在客戶(hù)端和服務(wù)端都設(shè)置埋點(diǎn),因此,大大降低了每個(gè)服務(wù)的客戶(hù)端和服務(wù)端的開(kāi)發(fā)、部署成本。
請(qǐng)參見(jiàn)圖7,示出了本申請(qǐng)實(shí)施例另一種服務(wù)調(diào)用裝置的框圖,該裝置應(yīng)用于服務(wù)提供端中,如圖7所示,該裝置可以包括:第一接收單元210、第一解析單元220、請(qǐng)求生成單元230、第一發(fā)送單元240、第二接收單元250和響應(yīng)單元260。
第一接收單元210,用于使第一服務(wù)提供端接收服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)的第一調(diào)用請(qǐng)求。
所述第一調(diào)用請(qǐng)求包括第一服務(wù)調(diào)用端標(biāo)識(shí)、第一服務(wù)名稱(chēng)和調(diào)用標(biāo)識(shí),所述調(diào)用標(biāo)識(shí)用于唯一標(biāo)示所述服務(wù)調(diào)用請(qǐng)求所對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
第一解析單元220,用于使所述第一服務(wù)提供端解析所述第一調(diào)用請(qǐng)求得到所述第一調(diào)用請(qǐng)求所需調(diào)用的第二服務(wù)名稱(chēng),以及所述調(diào)用標(biāo)識(shí)。
第一服務(wù)提供端接收到第一服務(wù)調(diào)用請(qǐng)求后,解析該第一服務(wù)調(diào)用請(qǐng)求,并確定響應(yīng)該第一服務(wù)調(diào)用請(qǐng)求需要調(diào)用的第二服務(wù)名稱(chēng)。
請(qǐng)求生成單元230,用于使所述第一服務(wù)提供端根據(jù)所述第二服務(wù)名稱(chēng)生成第二調(diào)用請(qǐng)求,所述第二調(diào)用請(qǐng)求包括第二服務(wù)調(diào)用端標(biāo)識(shí)、第二服務(wù)名稱(chēng)和所述調(diào)用標(biāo)識(shí)。
第一服務(wù)調(diào)用端生成的第二調(diào)用請(qǐng)求所包含的調(diào)用標(biāo)識(shí)與第一調(diào)用請(qǐng)求中的調(diào)用標(biāo)識(shí)相同。
第一發(fā)送單元240,用于使所述第一服務(wù)提供端將所述第二調(diào)用請(qǐng)求發(fā)送給所述服務(wù)網(wǎng)關(guān);
所述服務(wù)網(wǎng)關(guān)將第二調(diào)用請(qǐng)求轉(zhuǎn)發(fā)給第二服務(wù)提供端,所述第二服務(wù)提供端提供第二服務(wù)名稱(chēng)對(duì)應(yīng)的服務(wù);以及,使所述服務(wù)網(wǎng)關(guān)獲得調(diào)用信息,并由調(diào)用分析端根據(jù)所述調(diào)用信息獲得與所述調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。
第二接收單元250,用于使所述第一服務(wù)提供端通過(guò)所述服務(wù)網(wǎng)關(guān)接收所述第二服務(wù)提供端返回的第二調(diào)用結(jié)果,所述第二調(diào)用結(jié)果由所述第二服務(wù)提供端響應(yīng)所述第二調(diào)用請(qǐng)求得到。
響應(yīng)單元260,用于使所述第一服務(wù)提供端根據(jù)所述第二調(diào)用結(jié)果響應(yīng)所述第一調(diào)用請(qǐng)求,生成第一調(diào)用結(jié)果,并將所述第一調(diào)用結(jié)果通過(guò)所述服務(wù)網(wǎng)關(guān)轉(zhuǎn)發(fā)給發(fā)起所述第一調(diào)用請(qǐng)求的第一服務(wù)調(diào)用端。
調(diào)用分析端處理日志收集器中的數(shù)據(jù),得到包含同一個(gè)調(diào)用標(biāo)識(shí)的調(diào)用請(qǐng)求,并根據(jù)每條調(diào)用請(qǐng)求中包含的服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)確定調(diào)用關(guān)系,從而得到該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。利用該方法可以得到各個(gè)不同的服務(wù)調(diào)用鏈路,從而獲得整個(gè)微服務(wù)結(jié)構(gòu)的服務(wù)拓?fù)浣Y(jié)構(gòu)。
在獲得調(diào)用關(guān)系的同時(shí),調(diào)用分析端根據(jù)日志收集器收集到的調(diào)用時(shí)間信息,確定各個(gè)服務(wù)之間的調(diào)用耗時(shí),即服務(wù)網(wǎng)關(guān)接收某調(diào)用請(qǐng)求的時(shí)間與接收該調(diào)用請(qǐng)求所對(duì)應(yīng)的調(diào)用結(jié)果的時(shí)間之間的差值。
利用服務(wù)拓?fù)浣Y(jié)構(gòu)和各個(gè)服務(wù)間的調(diào)用耗時(shí),能夠分析出整個(gè)微服務(wù)架構(gòu)中的性能瓶頸。
調(diào)用分析端可以基于文本檢索系統(tǒng)實(shí)現(xiàn),通過(guò)輸入篩選條件所要查看的調(diào)用鏈路詳情,例如,可以輸入時(shí)間段來(lái)篩選所要查看的調(diào)用發(fā)生的時(shí)間段,從日志收集器的日志數(shù)據(jù)中檢索出所有該時(shí)間段內(nèi)的服務(wù)調(diào)用的相關(guān)信息,例如,服務(wù)調(diào)用端標(biāo)識(shí)、服務(wù)提供端標(biāo)識(shí)和調(diào)用延遲等。
本實(shí)施例提供的服務(wù)調(diào)用裝置,在服務(wù)網(wǎng)關(guān)中設(shè)置埋點(diǎn)對(duì)微服務(wù)架構(gòu)中的每一次調(diào)用都進(jìn)行采樣記錄,其中,服務(wù)調(diào)用請(qǐng)求中包含當(dāng)前調(diào)用鏈路的調(diào)用標(biāo)識(shí),且該調(diào)用標(biāo)識(shí)在整個(gè)調(diào)用鏈路中一直傳遞。因此,從服務(wù)網(wǎng)關(guān)調(diào)用信息中查找該調(diào)用標(biāo)識(shí)所對(duì)應(yīng)的服務(wù)調(diào)用端標(biāo)識(shí)和服務(wù)提供端標(biāo)識(shí)能夠獲得該調(diào)用標(biāo)識(shí)對(duì)應(yīng)的服務(wù)調(diào)用鏈路。該裝置只需要在服務(wù)網(wǎng)關(guān)上設(shè)置埋點(diǎn)進(jìn)行采樣即可,不需要在客戶(hù)端和服務(wù)端都設(shè)置埋點(diǎn),因此,大大降低了每個(gè)服務(wù)的客戶(hù)端和服務(wù)端的開(kāi)發(fā)、部署成本。
需要說(shuō)明的是,本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置類(lèi)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。