本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及信息交互技術(shù)領(lǐng)域,尤其涉及服務(wù)接口調(diào)用請(qǐng)求的處理方法和裝置。
背景技術(shù):
目前,不同系統(tǒng)之間的信息交互通常是通過調(diào)用服務(wù)接口來實(shí)現(xiàn)。現(xiàn)有技術(shù)在調(diào)用服務(wù)接口時(shí),通常是首先從連接池中獲取連接,然后通過獲取到的連接向服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待服務(wù)接口的提供端返回服務(wù)接口的響應(yīng)結(jié)果。
然而,在請(qǐng)求調(diào)用的服務(wù)接口出現(xiàn)異常情況時(shí),如果采用現(xiàn)有技術(shù),用于請(qǐng)求調(diào)用服務(wù)接口的線程會(huì)長(zhǎng)期占用連接池中的連接,只有在等到預(yù)定的超時(shí)時(shí)間才能將該連接返回連接池中。從而較易導(dǎo)致連接池中的連接消耗殆盡,使得大量其他線程處于等待狀態(tài),以至出現(xiàn)系統(tǒng)假死現(xiàn)象。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的在于提出一種服務(wù)接口調(diào)用請(qǐng)求的處理方法和裝置,來解決以上背景技術(shù)部分提到的技術(shù)問題。
第一方面,本申請(qǐng)?zhí)峁┝艘环N服務(wù)接口調(diào)用請(qǐng)求的處理方法,所述方法包括:在接收到服務(wù)接口調(diào)用指示時(shí)獲取所述服務(wù)接口的狀態(tài);如果所述狀態(tài)為正常,則通過連接池向所述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待執(zhí)行結(jié)果,其中,所述執(zhí)行結(jié)果包括所述服務(wù)接口的提供端發(fā)送的所述服務(wù)接口調(diào)用請(qǐng)求的響應(yīng)結(jié)果;在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值;如果更新后的失敗計(jì)數(shù)值大于預(yù)定的閾值,則將所述服務(wù)接口的狀態(tài)設(shè)為異常。
在一些實(shí)施例中,所述通過連接池向所述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,包括:在所述連接池中獲取連接;如果在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)獲取到連接,則通過所述連接向所述服務(wù)接口提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求。
在一些實(shí)施例中,所述執(zhí)行結(jié)果還包括在所述連接池獲取到的連接;以及所述在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值,包括:如果在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到連接,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值;或者如果在第二預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到所述服務(wù)接口的提供端發(fā)送的所述響應(yīng)結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值。
在一些實(shí)施例中,所述方法還包括:在獲取需調(diào)用的服務(wù)接口的狀態(tài)之后,如果所述狀態(tài)為異常,則發(fā)送異常消息。
在一些實(shí)施例中,所述在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值,還包括:在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則發(fā)送異常消息。
在一些實(shí)施例中,所述方法還包括:每隔預(yù)定的時(shí)間間隔,將所述服務(wù)接口的失敗計(jì)數(shù)值清零,并將所述服務(wù)接口的狀態(tài)初始化為正常。
第二方面,本申請(qǐng)?zhí)峁┝艘环N服務(wù)接口調(diào)用請(qǐng)求的處理裝置,所述裝置包括:狀態(tài)獲取單元,用于在接收到服務(wù)接口調(diào)用指示時(shí)獲取所述服務(wù)接口的狀態(tài);服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元,用于在所述狀態(tài)為正常時(shí),通過連接池向所述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待執(zhí)行結(jié)果,其中,所述執(zhí)行結(jié)果包括所述服務(wù)接口的提供端發(fā)送的所述服務(wù)接口調(diào)用請(qǐng)求的響應(yīng)結(jié)果;失敗計(jì)數(shù)值更新單元,用于在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值;狀態(tài)更新單元,用于在更新后的失敗計(jì)數(shù)值大于預(yù)定的閾值時(shí),將所述服務(wù)接口的狀態(tài)設(shè)為異常。
在一些實(shí)施例中,所述服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元,包括:連接獲取子單元,用于在所述連接池中獲取連接;服務(wù)接口調(diào)用請(qǐng)求發(fā)送子單元,用于在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)獲取到連接時(shí),通過所述連接向 所述服務(wù)接口提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求。
在一些實(shí)施例中,所述執(zhí)行結(jié)果還包括在所述連接池獲取到的連接;以及所述失敗計(jì)數(shù)值更新單元包括:第一失敗計(jì)數(shù)值更新子單元,用于在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到連接時(shí),更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值;第二失敗計(jì)數(shù)值更新子單元,用于在第二預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到所述服務(wù)接口的提供端發(fā)送的所述響應(yīng)結(jié)果時(shí),更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值。
在一些實(shí)施例中,所述裝置還包括:異常消息發(fā)送單元,用于在獲取需調(diào)用的服務(wù)接口的狀態(tài)之后,如果所述狀態(tài)為異常,則發(fā)送異常消息。
在一些實(shí)施例中,所述失敗計(jì)數(shù)值更新單元還用于在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則發(fā)送異常消息。
在一些實(shí)施例中,所述裝置還包括:初始化單元,用于每隔預(yù)定的時(shí)間間隔,將所述服務(wù)接口的失敗計(jì)數(shù)值清零,并將所述服務(wù)接口的狀態(tài)初始化為正常。
本申請(qǐng)?zhí)峁┑姆?wù)接口調(diào)用請(qǐng)求的處理方法和裝置,通過在發(fā)送服務(wù)接口調(diào)用請(qǐng)求后,如果在等待的預(yù)定時(shí)間長(zhǎng)度后沒有獲得所述執(zhí)行結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值,并根據(jù)更新后的失敗計(jì)數(shù)值是否大于預(yù)定的閾值,來更新服務(wù)接口的狀態(tài),實(shí)現(xiàn)了對(duì)服務(wù)接口狀態(tài)的實(shí)時(shí)準(zhǔn)確更新。同時(shí),通過在接收到服務(wù)接口調(diào)用指示時(shí)先獲取所述服務(wù)接口的狀態(tài),如果所述狀態(tài)為正常,才通過連接池向所述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,從而避免了在服務(wù)接口異常時(shí),用于請(qǐng)求調(diào)用服務(wù)接口的線程長(zhǎng)期占用連接池中的連接,進(jìn)而避免出現(xiàn)系統(tǒng)假死現(xiàn)象。
附圖說明
通過閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1是本申請(qǐng)可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是根據(jù)本申請(qǐng)的服務(wù)接口調(diào)用請(qǐng)求的處理方法的一個(gè)實(shí)施例 的流程圖;
圖3是根據(jù)本申請(qǐng)的服務(wù)接口調(diào)用請(qǐng)求的處理方法的另一個(gè)實(shí)施例的流程圖;
圖4是根據(jù)本申請(qǐng)的服務(wù)接口調(diào)用請(qǐng)求的處理裝置的一個(gè)實(shí)施例的流程圖;
圖5是適于用來實(shí)現(xiàn)本申請(qǐng)實(shí)施例的服務(wù)接口請(qǐng)求端的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本申請(qǐng)作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對(duì)該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請(qǐng)。
圖1示出了可以應(yīng)用本申請(qǐng)的服務(wù)接口調(diào)用請(qǐng)求的處理方法或服務(wù)接口調(diào)用請(qǐng)求的處理裝置的實(shí)施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括終端設(shè)備101、102、103,網(wǎng)絡(luò)104和服務(wù)器105。網(wǎng)絡(luò)104用以在終端設(shè)備101、102、103和服務(wù)器105之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
用戶可以使用終端設(shè)備101、102、103通過網(wǎng)絡(luò)104與服務(wù)器105交互,以接收或發(fā)送消息等。終端設(shè)備101、102、103上可以安裝有各種客戶端應(yīng)用,例如瀏覽器應(yīng)用、閱讀類應(yīng)用、音樂類應(yīng)用等。
終端設(shè)備101、102、103可以是支持信息通信的各種電子設(shè)備,包括但不限于智能手機(jī)、平板電腦、筆記本電腦和臺(tái)式計(jì)算機(jī)等等。
服務(wù)器105可以是提供各種服務(wù)的服務(wù)器,例如在終端設(shè)備101、102、103上的瀏覽器應(yīng)用、閱讀類應(yīng)用等發(fā)出服務(wù)接口調(diào)用請(qǐng)求時(shí),對(duì)上述應(yīng)用提供服務(wù)接口的數(shù)據(jù)庫(kù)服務(wù)器或云服務(wù)器。服務(wù)器可以根 據(jù)接收到的服務(wù)接口調(diào)用請(qǐng)求執(zhí)行服務(wù)接口中的方法,以進(jìn)行存儲(chǔ)、分析等處理,并將處理結(jié)果反饋給終端設(shè)備。
需要說明的是,本申請(qǐng)實(shí)施例所提供的服務(wù)接口調(diào)用請(qǐng)求的處理方法可以由終端設(shè)備101、102、103執(zhí)行。相應(yīng)地,服務(wù)接口調(diào)用請(qǐng)求的處理裝置可以設(shè)置于終端設(shè)備101、102、103中。
應(yīng)該理解,圖1中的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器的數(shù)目?jī)H僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的終端設(shè)備、網(wǎng)絡(luò)和服務(wù)器。
繼續(xù)參考圖2,圖2示出了根據(jù)本申請(qǐng)的服務(wù)接口調(diào)用請(qǐng)求的處理方法的一個(gè)實(shí)施例的流程200。
如圖2所示,本實(shí)施例的服務(wù)接口調(diào)用請(qǐng)求的處理方法包括以下步驟:
步驟201,在接收到服務(wù)接口調(diào)用指示時(shí)獲取上述服務(wù)接口的狀態(tài)。
在本實(shí)施例中,服務(wù)接口調(diào)用請(qǐng)求的處理方法運(yùn)行于其上的服務(wù)接口請(qǐng)求端(例如圖1所示的終端設(shè)備)可以通過從計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)(例如內(nèi)存)中讀取用于表示上述服務(wù)接口的狀態(tài)的標(biāo)志來獲取上述服務(wù)接口的狀態(tài)。其中,服務(wù)接口是一個(gè)系統(tǒng)與另一個(gè)系統(tǒng)或人之間的共享邊界,其通過使用一系列的標(biāo)準(zhǔn)規(guī)范,為互聯(lián)網(wǎng)上的不同應(yīng)用提供了語法互操作性支持。利用服務(wù)接口進(jìn)行交互的系統(tǒng)只需遵從相應(yīng)的服務(wù)接口,而不需考慮各自的內(nèi)部實(shí)現(xiàn),從而極大地降低了交互系統(tǒng)之間的耦合度,增加了企業(yè)應(yīng)用的靈活性。服務(wù)接口例如可以為http(hypertexttransferprotocol,超文本傳輸協(xié)議)接口等。
步驟202,如果上述狀態(tài)為正常,則通過連接池向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待執(zhí)行結(jié)果。
其中,上述執(zhí)行結(jié)果包括上述服務(wù)接口的提供端發(fā)送的上述服務(wù)接口調(diào)用請(qǐng)求的響應(yīng)結(jié)果。在本實(shí)施例中,服務(wù)接口請(qǐng)求端可以首先在上述連接池中獲取連接,然后通過獲取到的連接向上述服務(wù)接口提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,然后等待執(zhí)行結(jié)果。其中,連接池是創(chuàng)建和管理連接的緩沖池的技術(shù),連接池中的連接準(zhǔn)備好被任何需要它們的線程使用。當(dāng)一個(gè)線程需要發(fā)送服務(wù)接口請(qǐng)求并接收響應(yīng)結(jié)果時(shí), 它會(huì)從連接池中請(qǐng)求一個(gè)連接,當(dāng)這個(gè)線程使用完了這個(gè)連接(例如接收到響應(yīng)結(jié)果),就會(huì)將該連接返回到連接池中,這樣該連接就可以被其它需要使用它的線程使用。
步驟203,在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得上述執(zhí)行結(jié)果,則更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值。
在本實(shí)施例中,服務(wù)接口請(qǐng)求端在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得上述執(zhí)行結(jié)果,就可以通過從預(yù)定的計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)(例如內(nèi)存)中讀取上述服務(wù)接口的原失敗計(jì)數(shù)值,然后將原失敗計(jì)數(shù)值加1,之后將加1后的失敗計(jì)數(shù)值寫入上述存儲(chǔ)介質(zhì)中。
步驟204,如果更新后的失敗計(jì)數(shù)值大于預(yù)定的閾值,則將上述服務(wù)接口的狀態(tài)設(shè)為異常。
在本實(shí)施例中,服務(wù)接口請(qǐng)求端可以首先判斷更新后的失敗計(jì)數(shù)值是否大于預(yù)定的閾值,如果是,則將上述存儲(chǔ)狀態(tài)標(biāo)志的存儲(chǔ)介質(zhì)中的狀態(tài)標(biāo)志更改為異常。以使后續(xù)需調(diào)用上述服務(wù)接口時(shí),通過步驟201可以獲取到上述服務(wù)接口的異常狀態(tài)信息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,本實(shí)施例的服務(wù)接口調(diào)用請(qǐng)求的處理方法還可以包括:在步驟201之后,如果上述狀態(tài)為異常,則發(fā)送異常消息(例如拋異常)。從而使服務(wù)接口調(diào)用指示方能夠獲取到服務(wù)接口異常的消息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,步驟204還可以包括:在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得上述執(zhí)行結(jié)果,則發(fā)送異常消息。從而使服務(wù)接口調(diào)用指示方能夠獲取到相應(yīng)的異常消息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,本實(shí)施例的服務(wù)接口調(diào)用請(qǐng)求的處理方法還可以包括:每隔預(yù)定的時(shí)間間隔,將上述服務(wù)接口的失敗計(jì)數(shù)值清零,并將上述服務(wù)接口的狀態(tài)初始化為正常。通過該實(shí)現(xiàn)方式,解決了由失敗計(jì)數(shù)值長(zhǎng)期累計(jì)而導(dǎo)致的狀態(tài)不準(zhǔn)確的問題,從而使獲取到的服務(wù)接口的狀態(tài)更加準(zhǔn)確。
本實(shí)施例提供的服務(wù)接口調(diào)用請(qǐng)求的處理方法,通過在發(fā)送服務(wù)接口調(diào)用請(qǐng)求后,如果在等待的預(yù)定時(shí)間長(zhǎng)度后沒有獲得上述執(zhí)行結(jié)果,則更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值,并根據(jù)更新后的失敗 計(jì)數(shù)值是否大于預(yù)定的閾值,來更新服務(wù)接口的狀態(tài),實(shí)現(xiàn)了對(duì)服務(wù)接口狀態(tài)的實(shí)時(shí)準(zhǔn)確更新。同時(shí),通過在接收到服務(wù)接口調(diào)用指示時(shí)先獲取上述服務(wù)接口的狀態(tài),如果上述狀態(tài)為正常,才通過連接池向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,從而避免了在服務(wù)接口異常時(shí),用于請(qǐng)求調(diào)用服務(wù)接口的線程長(zhǎng)期占用連接池中的連接,進(jìn)而避免出現(xiàn)系統(tǒng)假死現(xiàn)象。
進(jìn)一步參考圖3,圖3示出了根據(jù)本申請(qǐng)的服務(wù)接口調(diào)用請(qǐng)求的處理方法的另一個(gè)實(shí)施例的流程300。
如圖3所示,本實(shí)施例的服務(wù)接口調(diào)用請(qǐng)求的處理方法包括以下步驟:
步驟301,在接收到服務(wù)接口調(diào)用指示時(shí)獲取上述服務(wù)接口的狀態(tài)。
在本實(shí)施例中,步驟301的具體處理可參考圖2對(duì)應(yīng)實(shí)施例中步驟201的相關(guān)描述,在此不再贅述。
步驟302,如果上述狀態(tài)為正常,則在連接池中獲取連接,并等待在上述連接池獲取到的連接。
在本實(shí)施例中,服務(wù)接口請(qǐng)求端在連接池中獲取連接的具體處理可參考圖2對(duì)應(yīng)實(shí)施例中步驟202的相關(guān)部分的說明,在此不再贅述。
步驟303,判斷是否在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)獲取到連接。
在本實(shí)施例中,如果在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)獲取到連接,則執(zhí)行步驟304,否則執(zhí)行步驟306。
步驟304,通過上述連接向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待上述服務(wù)接口的提供端發(fā)送的上述服務(wù)接口調(diào)用請(qǐng)求的響應(yīng)結(jié)果。
在本實(shí)施例中,服務(wù)接口請(qǐng)求端通過上述連接向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求的具體處理可參考圖2對(duì)應(yīng)實(shí)施例中步驟202的相關(guān)部分的說明,在此不再贅述。在通過上述連接向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求之后,執(zhí)行步驟305。
步驟305,判斷是否在第二預(yù)定時(shí)間長(zhǎng)度內(nèi)獲取到上述服務(wù)接口的提供端發(fā)送的響應(yīng)結(jié)果。
在本實(shí)施例中,如果在第二預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到上述服務(wù)接口的提供端發(fā)送的上述響應(yīng)結(jié)果,則執(zhí)行步驟306。
步驟306,更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值,如果更新后的失敗計(jì)數(shù)值大于預(yù)定的閾值,則將上述服務(wù)接口的狀態(tài)設(shè)為異常。
在本實(shí)施例中,服務(wù)接口請(qǐng)求端可以首先通過從預(yù)定的計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)(例如內(nèi)存)中讀取上述服務(wù)接口的原失敗計(jì)數(shù)值,然后將原失敗計(jì)數(shù)值加1,之后將加1后的失敗計(jì)數(shù)值寫入上述存儲(chǔ)介質(zhì)中。如果加1后的失敗計(jì)數(shù)值大于預(yù)定的閾值,則將上述存儲(chǔ)狀態(tài)標(biāo)志的存儲(chǔ)介質(zhì)中的狀態(tài)標(biāo)志更改為異常。
從圖3中可以看出,與圖2對(duì)應(yīng)的實(shí)施例相比,本實(shí)施例中的服務(wù)接口調(diào)用請(qǐng)求的處理方法的流程300在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到連接時(shí),也更新服務(wù)接口的失敗計(jì)數(shù)值,并根據(jù)更新后的失敗計(jì)數(shù)值相應(yīng)設(shè)置服務(wù)接口的狀態(tài)。由此,本實(shí)施例描述的方案可以針對(duì)獲取不到連接和接收不到服務(wù)接口提供端的響應(yīng)結(jié)果分別設(shè)置不同的超時(shí)時(shí)間長(zhǎng)度,從而可以更加準(zhǔn)確地設(shè)置服務(wù)接口的狀態(tài)。
下面參考圖4,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N服務(wù)接口調(diào)用請(qǐng)求的處理裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于服務(wù)接口請(qǐng)求端中。
如圖4所示,本實(shí)施例提供的服務(wù)接口調(diào)用請(qǐng)求的處理裝置400包括:狀態(tài)獲取單元401、服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元402、失敗計(jì)數(shù)值更新單元403以及狀態(tài)更新單元404。其中,狀態(tài)獲取單元401用于在接收到服務(wù)接口調(diào)用指示時(shí)獲取上述服務(wù)接口的狀態(tài);服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元402用于在上述狀態(tài)為正常時(shí),通過連接池向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待執(zhí)行結(jié)果,其中,上述執(zhí)行結(jié)果包括上述服務(wù)接口的提供端發(fā)送的上述服務(wù)接口調(diào)用請(qǐng)求的響應(yīng)結(jié)果;失敗計(jì)數(shù)值更新單元403用于在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得上述執(zhí)行結(jié)果,則更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值;狀態(tài)更新單元404用于在更新后的失敗計(jì)數(shù)值大于預(yù)定的閾值時(shí),將上述服務(wù)接口的狀態(tài)設(shè)為異常。
在本實(shí)施例中,狀態(tài)獲取單元401、服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元402、失敗計(jì)數(shù)值更新單元403以及狀態(tài)更新單元404的具體處理可分別參考圖2對(duì)應(yīng)實(shí)施例中步驟201、步驟202、步驟203以及步驟204的相關(guān)說明,在此不再贅述。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元402可以包括:連接獲取子單元4021,用于在上述連接池中獲取連接;服務(wù)接口調(diào)用請(qǐng)求發(fā)送子單元4022,用于在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)獲取到連接時(shí),通過上述連接向上述服務(wù)接口提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述執(zhí)行結(jié)果還可以包括在上述連接池獲取到的連接。以及,上述失敗計(jì)數(shù)值更新單元203可以包括:第一失敗計(jì)數(shù)值更新子單元2031,用于在第一預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到連接時(shí),更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值;第二失敗計(jì)數(shù)值更新子單元2032,用于在第二預(yù)定時(shí)間長(zhǎng)度內(nèi)沒有獲取到上述服務(wù)接口的提供端發(fā)送的上述響應(yīng)結(jié)果時(shí),更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,本實(shí)施例的服務(wù)接口調(diào)用請(qǐng)求的處理裝置還可以包括:異常消息發(fā)送單元405,用于在獲取需調(diào)用的服務(wù)接口的狀態(tài)之后,如果上述狀態(tài)為異常,則發(fā)送異常消息。異常消息發(fā)送單元405的具體處理可參考圖2對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的相關(guān)說明,在此不再贅述。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,失敗計(jì)數(shù)值更新單元403還可以用于在等待預(yù)定時(shí)間長(zhǎng)度后,如果沒有獲得上述執(zhí)行結(jié)果,則發(fā)送異常消息。該實(shí)現(xiàn)方式的具體處理可參考圖2對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的相關(guān)說明,在此不再贅述。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,本實(shí)施例的服務(wù)接口調(diào)用請(qǐng)求的處理裝置還可以包括:初始化單元(圖中未示出),用于每隔預(yù)定的時(shí)間間隔,將上述服務(wù)接口的失敗計(jì)數(shù)值清零,并將上述服務(wù)接口的狀態(tài)初始化為正常。初始化單元406的具體處理可參考圖2對(duì)應(yīng)實(shí)施例中相應(yīng)實(shí)現(xiàn)方式的相關(guān)說明,在此不再贅述。
本實(shí)施例提供的服務(wù)接口調(diào)用請(qǐng)求的處理裝置,通過失敗計(jì)數(shù)值更新單元403在發(fā)送服務(wù)接口調(diào)用請(qǐng)求后,如果在等待的預(yù)定時(shí)間長(zhǎng)度后沒有獲得上述執(zhí)行結(jié)果,則更新預(yù)存的上述服務(wù)接口的失敗計(jì)數(shù)值,并通過狀態(tài)更新單元404根據(jù)更新后的失敗計(jì)數(shù)值是否大于預(yù)定的閾值,來更新服務(wù)接口的狀態(tài),實(shí)現(xiàn)了對(duì)服務(wù)接口狀態(tài)的實(shí)時(shí)準(zhǔn)確更新。同時(shí),通過狀態(tài)獲取單元401在接收到服務(wù)接口調(diào)用指示時(shí)先獲取上述服務(wù)接口的狀態(tài),并在上述狀態(tài)為正常時(shí),才通過服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元402通過連接池向上述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,從而避免了在服務(wù)接口異常時(shí),用于請(qǐng)求調(diào)用服務(wù)接口的線程長(zhǎng)期占用連接池中的連接,進(jìn)而避免出現(xiàn)系統(tǒng)假死現(xiàn)象。
下面參考圖5,其示出了適于用來實(shí)現(xiàn)本申請(qǐng)實(shí)施例的服務(wù)接口需求端的計(jì)算機(jī)系統(tǒng)500的結(jié)構(gòu)示意圖。
如圖5所示,計(jì)算機(jī)系統(tǒng)500包括中央處理單元(cpu)501,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(rom)502中的程序或者從存儲(chǔ)部分508加載到隨機(jī)訪問存儲(chǔ)器(ram)503中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在ram503中,還存儲(chǔ)有系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。cpu501、rom502以及ram503通過總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。
以下部件連接至i/o接口505:包括鍵盤、鼠標(biāo)等的輸入部分506;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚(yáng)聲器等的輸出部分507;包括硬盤等的存儲(chǔ)部分508;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分509。通信部分509經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器510也根據(jù)需要連接至i/o接口505??刹鹦督橘|(zhì)511,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器510上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分508。
特別地,根據(jù)本公開的實(shí)施例,上文參考流程圖描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,上述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施 例中,該計(jì)算機(jī)程序可以通過通信部分509從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)511被安裝。在該計(jì)算機(jī)程序被中央處理單元(cpu)501執(zhí)行時(shí),執(zhí)行本申請(qǐng)的方法中限定的上述功能。
附圖中的流程圖和框圖,圖示了按照本申請(qǐng)各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,上述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
描述于本申請(qǐng)實(shí)施例中所涉及到的單元可以通過軟件的方式實(shí)現(xiàn),也可以通過硬件的方式來實(shí)現(xiàn)。所描述的單元也可以設(shè)置在處理器中,例如,可以描述為:一種處理器包括狀態(tài)獲取單元、服務(wù)接口調(diào)用請(qǐng)求發(fā)送單元、失敗計(jì)數(shù)值更新單元以及狀態(tài)更新單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對(duì)該單元本身的限定,例如,狀態(tài)獲取單元還可以被描述為“在接收到服務(wù)接口調(diào)用指示時(shí)獲取上述服務(wù)接口的狀態(tài)的單元”。
作為另一方面,本申請(qǐng)還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),該非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是上述實(shí)施例中所述裝置中所包含的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。上述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,當(dāng)所述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得所述設(shè)備:在接收到服務(wù)接口調(diào)用指示時(shí)獲取所述服務(wù)接口的狀態(tài);如果所述狀態(tài)為正常,則通過連接池向所述服務(wù)接口的提供端發(fā)送服務(wù)接口調(diào)用請(qǐng)求,并等待執(zhí)行結(jié)果,其中,所述執(zhí)行結(jié)果包括所述服務(wù)接口的提供端發(fā)送的所述服務(wù)接口調(diào)用請(qǐng)求的響應(yīng)結(jié)果;在等待預(yù)定時(shí) 間長(zhǎng)度后,如果沒有獲得所述執(zhí)行結(jié)果,則更新預(yù)存的所述服務(wù)接口的失敗計(jì)數(shù)值;如果更新后的失敗計(jì)數(shù)值大于預(yù)定的閾值,則將所述服務(wù)接口的狀態(tài)設(shè)為異常。
以上描述僅為本申請(qǐng)的較佳實(shí)施例以及對(duì)所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請(qǐng)中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請(qǐng)中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。