本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種業(yè)務(wù)監(jiān)控方法、裝置和計(jì)算機(jī)設(shè)備。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,越來(lái)越多的用戶通過(guò)互聯(lián)網(wǎng)來(lái)從事社會(huì)生活。隨著用戶群體的快速增加,互聯(lián)網(wǎng)中用戶請(qǐng)求量也在快速增加,互聯(lián)網(wǎng)系統(tǒng)需要對(duì)大量的用戶請(qǐng)求量進(jìn)行監(jiān)控,進(jìn)而了解系統(tǒng)的健康狀況并及時(shí)發(fā)現(xiàn)系統(tǒng)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種業(yè)務(wù)監(jiān)控方法、裝置和計(jì)算機(jī)設(shè)備,可以避免業(yè)務(wù)監(jiān)控中監(jiān)控?cái)?shù)據(jù)丟失的情況。
一種業(yè)務(wù)監(jiān)控方法,包括:
獲取用戶請(qǐng)求信息;
將所述用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù);
獲取與所述監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),并將所述監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與所述隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ);
獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),從所述分布式消息隊(duì)列集群中獲取與所述隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù);
將與所述隊(duì)列編號(hào)對(duì)應(yīng)的所述分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給所述線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。
一種業(yè)務(wù)監(jiān)控裝置,包括:
獲取模塊,用于獲取用戶請(qǐng)求信息;
封裝模塊,用于將所述用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù);
數(shù)據(jù)存儲(chǔ)模塊,用于獲取與所述監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),并將所述監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與所述隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ);
數(shù)據(jù)獲取模塊,用于獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),從所述分布式消息隊(duì)列集群中獲取與所述隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù);
分配模塊,用于將與所述隊(duì)列編號(hào)對(duì)應(yīng)的所述分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給所述線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。
一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器,處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)以下步驟:
獲取用戶請(qǐng)求信息;
將所述用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù);
獲取與所述監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),并將所述監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與所述隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ);
獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),從所述分布式消息隊(duì)列集群中獲取與所述隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù);
將與所述隊(duì)列編號(hào)對(duì)應(yīng)的所述分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給所述線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。
本發(fā)明實(shí)施例中的業(yè)務(wù)監(jiān)控方法、裝置和計(jì)算機(jī)設(shè)備,在獲取監(jiān)控?cái)?shù)據(jù)后,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給對(duì)應(yīng)編號(hào)的分布式消息隊(duì)列存儲(chǔ)。通過(guò)引入分布式消息隊(duì)列、將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于分布式消息隊(duì)列,實(shí)現(xiàn)監(jiān)控系統(tǒng)從分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行處理。通過(guò)將監(jiān)控系統(tǒng)與存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的本地隊(duì)列解耦,避免了在監(jiān)控系統(tǒng)不穩(wěn)定時(shí),本地隊(duì)列發(fā)送的監(jiān)控?cái)?shù)據(jù)丟失的情況。
附圖說(shuō)明
圖1為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控方法的應(yīng)用環(huán)境示意圖;
圖2為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;
圖3為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控方法的流程圖;
圖4為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控方法的系統(tǒng)架構(gòu)圖;
圖5為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控裝置的結(jié)構(gòu)框圖;
圖6為一個(gè)實(shí)施例中數(shù)據(jù)存儲(chǔ)模塊506的結(jié)構(gòu)框圖;
圖7為另一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控裝置的結(jié)構(gòu)框圖;
圖8為另一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控方法的應(yīng)用環(huán)境示意圖。如圖1所示,該應(yīng)用環(huán)境包括部署在服務(wù)器上的應(yīng)用網(wǎng)關(guān)、本地隊(duì)列、分布式消息隊(duì)列集群、監(jiān)控系統(tǒng)、數(shù)據(jù)庫(kù)和監(jiān)控后臺(tái)。其中,應(yīng)用網(wǎng)關(guān)上部署有監(jiān)控?cái)r截器,監(jiān)控?cái)r截器可攔截用戶請(qǐng)求并記錄用戶請(qǐng)求信息;本地隊(duì)列和分布式消息隊(duì)列集群可存儲(chǔ)監(jiān)控?cái)?shù)據(jù);監(jiān)控系統(tǒng)可處理監(jiān)控?cái)?shù)據(jù);數(shù)據(jù)庫(kù)可存儲(chǔ)監(jiān)控系統(tǒng)對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果;監(jiān)控后臺(tái)可讀取、展示數(shù)據(jù)庫(kù)中數(shù)據(jù)。本實(shí)施例中,監(jiān)控?cái)r截器可將記錄的用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù)發(fā)送給本地隊(duì)列進(jìn)行存儲(chǔ),再?gòu)谋镜仃?duì)列的消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),通過(guò)監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻和分布式消息隊(duì)列的隊(duì)列數(shù)可獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控?cái)r截器再將監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。監(jiān)控系統(tǒng)中包括可處理監(jiān)控?cái)?shù)據(jù)的線程,每個(gè)線程帶有線程標(biāo)識(shí)。根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,監(jiān)控系統(tǒng)可獲取與線程標(biāo)識(shí)相對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)所對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù),并將監(jiān)控?cái)?shù)據(jù)分配給對(duì)應(yīng)的線程處理。監(jiān)控系統(tǒng)還可獲取線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將上述處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中。監(jiān)控后臺(tái)可讀取數(shù)據(jù)庫(kù)存儲(chǔ)的對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將獲取的對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可視化展示。以上應(yīng)用網(wǎng)關(guān)、本地隊(duì)列、分布式消息隊(duì)列集群、監(jiān)控系統(tǒng)、數(shù)據(jù)庫(kù)和監(jiān)控后臺(tái)可部署在同一臺(tái)服務(wù)器上,也可部署在不同的服務(wù)器上。
圖2為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖。如圖2所示,該服務(wù)器包括通過(guò)系統(tǒng)總線連接的處理器、非易失性存儲(chǔ)介質(zhì)、內(nèi)存儲(chǔ)器和網(wǎng)絡(luò)接口。其中,該服務(wù)器的非易失性存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng)、數(shù)據(jù)庫(kù)和業(yè)務(wù)監(jiān)控裝置,數(shù)據(jù)庫(kù)中存儲(chǔ)有對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行分析獲取的統(tǒng)計(jì)數(shù)據(jù),該業(yè)務(wù)監(jiān)控裝置用于實(shí)現(xiàn)適用于服務(wù)器的一種業(yè)務(wù)監(jiān)控方法。該服務(wù)器的處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器的運(yùn)行。該服務(wù)器的內(nèi)存儲(chǔ)器為非易失性存儲(chǔ)介質(zhì)中的業(yè)務(wù)監(jiān)控裝置的運(yùn)行提供環(huán)境,該內(nèi)存儲(chǔ)器中可儲(chǔ)存有計(jì)算機(jī)可讀指令,該計(jì)算機(jī)可讀指令被所述處理器執(zhí)行時(shí),可使得所述處理器執(zhí)行一種業(yè)務(wù)監(jiān)控方法。該服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過(guò)網(wǎng)絡(luò)連接通信,比如攔截用戶請(qǐng)求等。服務(wù)器可以用獨(dú)立的服務(wù)器或者是多個(gè)服務(wù)器組成的服務(wù)器集群來(lái)實(shí)現(xiàn)。服務(wù)器也屬于計(jì)算機(jī)設(shè)備。本領(lǐng)域技術(shù)人員可以理解,圖2中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
圖3為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控方法的流程圖,如圖3所示,一種業(yè)務(wù)監(jiān)控的方法,包括:
S302,獲取用戶請(qǐng)求信息。
在一個(gè)實(shí)施例中,服務(wù)器中應(yīng)用網(wǎng)關(guān)上部署有監(jiān)控?cái)r截器,監(jiān)控?cái)r截器可攔截服務(wù)器接收的用戶請(qǐng)求和服務(wù)器對(duì)用戶請(qǐng)求的響應(yīng),并記錄用戶請(qǐng)求信息。其中用戶請(qǐng)求信息可包括服務(wù)器接收用戶請(qǐng)求的時(shí)刻,即用戶請(qǐng)求接收時(shí)刻;服務(wù)器對(duì)用戶請(qǐng)求作出響應(yīng)的時(shí)刻,即用戶請(qǐng)求響應(yīng)時(shí)刻;用戶請(qǐng)求調(diào)用的服務(wù)模塊,即服務(wù)器上用于處理用戶請(qǐng)求的模塊;用戶請(qǐng)求的服務(wù)節(jié)點(diǎn),即服務(wù)器上用于處理用戶請(qǐng)求的服務(wù)器地址;用戶請(qǐng)求方IP(Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議);用戶請(qǐng)求的URL(Uniform Resource Locator,統(tǒng)一資源定位符);被請(qǐng)求方名稱等。
S304,將用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,監(jiān)控?cái)r截器可將獲取的用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù),并將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于本地隊(duì)列的消息隊(duì)列中。例如,將用戶請(qǐng)求信息封裝成的監(jiān)控?cái)?shù)據(jù)為
{srvGroup='cdo-card',//用戶請(qǐng)求調(diào)用的服務(wù)模塊
srvNode='173.17.100.34:39814',//用戶請(qǐng)求的服務(wù)節(jié)點(diǎn)
url='PageCardService.queryPage',//用戶請(qǐng)求的URL
clientIp='173.17.153.176',//用戶請(qǐng)求方IP
consumer='store-app',//被請(qǐng)求方名稱
startTime=1481536600008,//用戶請(qǐng)求接收時(shí)刻
endTime=1481536615369,//用戶請(qǐng)求響應(yīng)時(shí)刻
status=0//狀態(tài)}
S306,獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。
在一個(gè)實(shí)施例中,監(jiān)控?cái)r截器可從本地隊(duì)列的消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻。通過(guò)將用戶接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,利用HashCode算法將時(shí)間戳轉(zhuǎn)換為哈希值,將哈希值與分布式消息隊(duì)列的隊(duì)列數(shù)進(jìn)行取模運(yùn)算,可得到與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。在獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)后,監(jiān)控?cái)r截器可將監(jiān)控?cái)?shù)據(jù)通過(guò)Http(Hyper Text Transfer Protocol,超文本傳輸協(xié)議)方式異步批量傳輸給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。
S308,獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)中有處理監(jiān)控?cái)?shù)據(jù)的線程,監(jiān)控系統(tǒng)獲取線程標(biāo)識(shí)后,根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。根據(jù)線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控系統(tǒng)可獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。其中,線程標(biāo)識(shí)是用于唯一標(biāo)識(shí)線程身份的字符串。該字符串可包括數(shù)字、字母、字符等至少一種。監(jiān)控系統(tǒng)中每個(gè)線程標(biāo)識(shí)都有對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控系統(tǒng)在獲取線程標(biāo)識(shí)后,獲取該線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
S310,將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)在獲取監(jiān)控?cái)?shù)據(jù)后,根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。其中,監(jiān)控系統(tǒng)中一個(gè)線程標(biāo)識(shí)可對(duì)應(yīng)多個(gè)分布式消息隊(duì)列的隊(duì)列編號(hào),各線程標(biāo)識(shí)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)不相同。即監(jiān)控系統(tǒng)中一個(gè)線程可處理多個(gè)分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù),每個(gè)線程所處理的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)不相同,一個(gè)分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)在一個(gè)固定的線程中處理。
上述業(yè)務(wù)監(jiān)控方法,在獲取監(jiān)控?cái)?shù)據(jù)后,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給對(duì)應(yīng)編號(hào)的分布式消息隊(duì)列存儲(chǔ)。通過(guò)引入分布式消息隊(duì)列、將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于分布式消息隊(duì)列,實(shí)現(xiàn)監(jiān)控系統(tǒng)從分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行處理。通過(guò)將監(jiān)控系統(tǒng)與存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的本地隊(duì)列解耦,避免了在監(jiān)控系統(tǒng)不穩(wěn)定時(shí),本地隊(duì)列發(fā)送的監(jiān)控?cái)?shù)據(jù)丟失的情況。
在一個(gè)實(shí)施例中,上述業(yè)務(wù)監(jiān)控方法還包括:獲取線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果;將線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù),以使監(jiān)控后臺(tái)可讀取并展示數(shù)據(jù)庫(kù)中數(shù)據(jù)。
在一個(gè)實(shí)施例中,線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可包括QPS(Query Per Second,每秒查詢率)、錯(cuò)誤數(shù)和響應(yīng)時(shí)間等。其中,QPS是指每秒用戶訪問(wèn)的次數(shù);錯(cuò)誤數(shù)是指每分鐘系統(tǒng)異常數(shù),系統(tǒng)異??砂ㄌ幚碛脩粽?qǐng)求異常、處理用戶請(qǐng)求超時(shí)等;響應(yīng)時(shí)間是指處理用戶請(qǐng)求的時(shí)間,響應(yīng)時(shí)間可通過(guò)用戶請(qǐng)求信息中用戶請(qǐng)求接收時(shí)刻與用戶請(qǐng)求響應(yīng)時(shí)刻計(jì)算獲取。監(jiān)控系統(tǒng)在獲取線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果后,可將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中。監(jiān)控后臺(tái)可讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可視化展示。
上述業(yè)務(wù)監(jiān)控方法,將線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中,使監(jiān)控后臺(tái)可讀取數(shù)據(jù)庫(kù)中監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可視化展示,有利于了解系統(tǒng)健康狀況和及時(shí)發(fā)現(xiàn)系統(tǒng)問(wèn)題,在出現(xiàn)系統(tǒng)問(wèn)題時(shí)實(shí)現(xiàn)秒級(jí)告警。
在一個(gè)實(shí)施例中,圖3中步驟S306獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)包括:獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻和分布式消息隊(duì)列集群中分布式消息隊(duì)列的隊(duì)列數(shù);將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳;根據(jù)時(shí)間戳和分布式消息隊(duì)列的隊(duì)列數(shù)獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。
在一個(gè)實(shí)施例中,監(jiān)控?cái)r截器可讀取分布式消息隊(duì)列集群中分布式消息隊(duì)列的隊(duì)列數(shù);監(jiān)控?cái)r截器還可從本地隊(duì)列的消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),從監(jiān)控?cái)?shù)據(jù)中讀取用戶請(qǐng)求接收時(shí)刻,將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,通過(guò)HashCode算法計(jì)算時(shí)間戳對(duì)應(yīng)的哈希值,將時(shí)間戳對(duì)應(yīng)的哈希值與分布式消息隊(duì)列的隊(duì)列數(shù)進(jìn)行取模運(yùn)算,可得到監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。即【監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)】=【HashCode(用戶請(qǐng)求接收時(shí)刻對(duì)應(yīng)的時(shí)間戳)】mod【分布式消息隊(duì)列的隊(duì)列數(shù)】。例如,監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻為2016年12月12日19時(shí)24分44秒,將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳為1481628284951,通過(guò)HashCode算法計(jì)算時(shí)間戳對(duì)應(yīng)的哈希值為125421857,分布式消息隊(duì)列集群中分布式消息隊(duì)列的隊(duì)列數(shù)為8,則將哈希值對(duì)分布式消息隊(duì)列的隊(duì)列數(shù)進(jìn)行取模運(yùn)算得到取模結(jié)果為1,即該監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)為1,監(jiān)控?cái)r截器可將該監(jiān)控?cái)?shù)據(jù)發(fā)送給隊(duì)列編號(hào)為1的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。其中,用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)相同,即用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于同一個(gè)分布式消息隊(duì)列中。
上述業(yè)務(wù)監(jiān)控方法,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻后,將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,通過(guò)時(shí)間戳和分布式消息隊(duì)列的隊(duì)列數(shù)來(lái)獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的編號(hào),可實(shí)現(xiàn)用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于同一個(gè)分布式消息隊(duì)列中,有利于實(shí)現(xiàn)用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)在同一臺(tái)計(jì)算機(jī)中處理,保證了數(shù)據(jù)處理的精度。
在一個(gè)實(shí)施例中,圖3中步驟S308從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)包括:根據(jù)預(yù)設(shè)的時(shí)間間隔從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)在獲取線程標(biāo)識(shí)后,根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。根據(jù)線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)和預(yù)設(shè)的時(shí)間間隔,監(jiān)控系統(tǒng)可定時(shí)從分布式消息隊(duì)列集群中獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,線程標(biāo)識(shí)對(duì)應(yīng)的線程中包括子線程;圖3中步驟S310將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理包括:獲取子線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào);將與子線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào)所對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給子線程標(biāo)識(shí)對(duì)應(yīng)的子線程處理。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)中各線程中包括子線程,各子線程有子線程標(biāo)識(shí),子線程標(biāo)識(shí)是用于唯一標(biāo)識(shí)子線程身份的字符串。該字符串可包括數(shù)字、字母、字符等至少一種。且一個(gè)線程中包括多個(gè)子線程,一個(gè)子線程標(biāo)識(shí)可對(duì)應(yīng)多個(gè)分布式消息隊(duì)列的隊(duì)列編號(hào),各子線程標(biāo)識(shí)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)不相同。監(jiān)控系統(tǒng)獲取線程中各子線程標(biāo)識(shí)后,根據(jù)預(yù)配置的子線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可獲取與子線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。根據(jù)上述分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控系統(tǒng)可獲取與子線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù),并將分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給子線程標(biāo)識(shí)對(duì)應(yīng)的子線程處理。其中,分布式消息隊(duì)列的隊(duì)列數(shù)≥監(jiān)控系統(tǒng)中總子線程數(shù)。通常情況下,監(jiān)控系統(tǒng)中各線程中包括的子線程數(shù)量相同,即分布式消息隊(duì)列的隊(duì)列數(shù)≥監(jiān)控系統(tǒng)中線程數(shù)*單個(gè)線程中子線程數(shù)。當(dāng)分布式消息隊(duì)列的隊(duì)列數(shù)=監(jiān)控系統(tǒng)中線程數(shù)*單個(gè)線程中子線程數(shù)時(shí),監(jiān)控系統(tǒng)可實(shí)現(xiàn)一個(gè)子線程處理一個(gè)分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
上述業(yè)務(wù)監(jiān)控方法,根據(jù)子線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可將獲取的分布式消息隊(duì)列中監(jiān)控?cái)?shù)據(jù)分配給對(duì)應(yīng)的子線程處理。通過(guò)每個(gè)子線程處理指定的分布式消息隊(duì)列中監(jiān)控?cái)?shù)據(jù),實(shí)現(xiàn)監(jiān)控系統(tǒng)中每個(gè)子線程都在處理監(jiān)控?cái)?shù)據(jù),提高了監(jiān)控系統(tǒng)處理數(shù)據(jù)的效率。
在一個(gè)實(shí)施例中,上述業(yè)務(wù)監(jiān)控方法還包括:若檢測(cè)到新增分布式消息隊(duì)列和新增線程;建立新增分布式消息隊(duì)列的隊(duì)列編號(hào)與新增線程的線程標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系。
在一個(gè)實(shí)施例中,當(dāng)QPS增加時(shí),可增加分布式消息隊(duì)列節(jié)點(diǎn)和線程節(jié)點(diǎn)。若服務(wù)器檢測(cè)到新增分布式消息隊(duì)列節(jié)點(diǎn)和新增線程節(jié)點(diǎn),可獲取新增分布式消息隊(duì)列的隊(duì)列編號(hào)、新增線程的線程標(biāo)識(shí),并將新增線程的線程標(biāo)識(shí)與新增分布式消息隊(duì)列的隊(duì)列編號(hào)對(duì)應(yīng),即新增的線程從新增的分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù)并進(jìn)行處理。
上述業(yè)務(wù)監(jiān)控方法,在用戶請(qǐng)求量增加時(shí),可自動(dòng)建立新增的分布式消息隊(duì)列與新增線程之間的對(duì)應(yīng)關(guān)系。即在用戶請(qǐng)求量增加時(shí),可通過(guò)擴(kuò)展分布式消息隊(duì)列數(shù)和線程數(shù)來(lái)提高監(jiān)控系統(tǒng)處理數(shù)據(jù)的能力,提高了監(jiān)控系統(tǒng)處理數(shù)據(jù)的效率。
在一個(gè)實(shí)施例中,如圖4所示,服務(wù)器中應(yīng)用網(wǎng)關(guān)上部署有監(jiān)控?cái)r截器,監(jiān)控?cái)r截器可攔截服務(wù)器接收的用戶請(qǐng)求和服務(wù)器對(duì)用戶請(qǐng)求的響應(yīng),并記錄用戶請(qǐng)求信息。監(jiān)控?cái)r截器將用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于本地隊(duì)列的消息隊(duì)列中,并獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。具體為監(jiān)控?cái)r截器獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻,將用戶接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,利用HashCode算法將時(shí)間戳轉(zhuǎn)換為哈希值,將哈希值與分布式消息隊(duì)列的隊(duì)列數(shù)進(jìn)行取模運(yùn)算,進(jìn)而得到與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。在獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)后,監(jiān)控?cái)r截器將監(jiān)控?cái)?shù)據(jù)通過(guò)Http方式異步批量傳輸給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。其中,用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)相同,即用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于同一個(gè)分布式消息隊(duì)列中。監(jiān)控系統(tǒng)中包括Master線程1和Master線程2,Master線程1中包括Slave線程1和Slave線程2,Master線程2中包括Slave線程3和Slave線程4。根據(jù)預(yù)配置的Slave線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可得到Slave線程1對(duì)應(yīng)分布式消息隊(duì)列1和分布式消息隊(duì)列2;Slave線程2對(duì)應(yīng)分布式消息隊(duì)列3和分布式消息隊(duì)列4;Slave線程3對(duì)應(yīng)分布式消息隊(duì)列5和分布式消息隊(duì)列6;Slave線程4對(duì)應(yīng)分布式消息隊(duì)列7和分布式消息隊(duì)列8。則監(jiān)控系統(tǒng)中Master線程1對(duì)應(yīng)的分布式消息隊(duì)列1、分布式消息隊(duì)列2、分布式消息隊(duì)列3和分布式消息隊(duì)列4;Master線程2對(duì)應(yīng)的分布式消息隊(duì)列5、分布式消息隊(duì)列6、分布式消息隊(duì)列7和分布式消息隊(duì)列8。監(jiān)控系統(tǒng)獲取分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)后,將分布式消息隊(duì)列1、分布式消息隊(duì)列2、分布式消息隊(duì)列3和分布式消息隊(duì)列4中的監(jiān)控分?jǐn)?shù)分配給Master線程1;分布式消息隊(duì)列5、分布式消息隊(duì)列6、分布式消息隊(duì)列7和分布式消息隊(duì)列8中的監(jiān)控分?jǐn)?shù)分配給Master線程2。Master線程1再將分布式消息隊(duì)列1和分布式消息隊(duì)列2中監(jiān)控?cái)?shù)據(jù)分配給Slave線程1處理;將分布式消息隊(duì)列3和分布式消息隊(duì)列4中監(jiān)控?cái)?shù)據(jù)分配給Slave線程2處理。Master線程2再將分布式消息隊(duì)列5和分布式消息隊(duì)列6中監(jiān)控?cái)?shù)據(jù)分配給Slave線程3處理;將分布式消息隊(duì)列7和分布式消息隊(duì)列8中監(jiān)控?cái)?shù)據(jù)分配給Slave線程4處理。
上述業(yè)務(wù)監(jiān)控方法,在獲取監(jiān)控?cái)?shù)據(jù)后,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給對(duì)應(yīng)編號(hào)的分布式消息隊(duì)列存儲(chǔ)。通過(guò)引入分布式消息隊(duì)列、將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于分布式消息隊(duì)列,實(shí)現(xiàn)監(jiān)控系統(tǒng)從分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行處理。通過(guò)將監(jiān)控系統(tǒng)與存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的本地隊(duì)列解耦,避免了在監(jiān)控系統(tǒng)不穩(wěn)定時(shí),本地隊(duì)列發(fā)送的監(jiān)控?cái)?shù)據(jù)丟失的情況。
圖5為一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控裝置的結(jié)構(gòu)框圖。如圖5所示,一種為實(shí)現(xiàn)圖3中業(yè)務(wù)監(jiān)控方法所架構(gòu)的虛擬裝置,包括:
獲取模塊502,用于獲取用戶請(qǐng)求信息。
封裝模塊504,用于將用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù)。
數(shù)據(jù)存儲(chǔ)模塊506,用于獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。
數(shù)據(jù)獲取模塊508,用于獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
分配模塊510,用于將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。
上述業(yè)務(wù)監(jiān)控裝置,在獲取監(jiān)控?cái)?shù)據(jù)后,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給對(duì)應(yīng)編號(hào)的分布式消息隊(duì)列存儲(chǔ)。通過(guò)引入分布式消息隊(duì)列、將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于分布式消息隊(duì)列,實(shí)現(xiàn)監(jiān)控系統(tǒng)從分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行處理。通過(guò)將監(jiān)控系統(tǒng)與存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的本地隊(duì)列解耦,避免了在監(jiān)控系統(tǒng)不穩(wěn)定時(shí),本地隊(duì)列發(fā)送的監(jiān)控?cái)?shù)據(jù)丟失的情況。
圖6為一個(gè)實(shí)施例中數(shù)據(jù)存儲(chǔ)模塊506的結(jié)構(gòu)框圖。在一個(gè)實(shí)施例中,用戶請(qǐng)求信息中包括用戶請(qǐng)求接收時(shí)刻;數(shù)據(jù)存儲(chǔ)模塊506包括:
獲取單元602,用于獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻和分布式消息隊(duì)列集群中分布式消息隊(duì)列的隊(duì)列數(shù)。
轉(zhuǎn)換單元604,用于將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳。
計(jì)算單元606,用于根據(jù)時(shí)間戳和分布式消息隊(duì)列的隊(duì)列數(shù)獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。
存儲(chǔ)單元608,用于將監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。
上述業(yè)務(wù)監(jiān)控裝置,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻后,將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,通過(guò)時(shí)間戳和分布式消息隊(duì)列的隊(duì)列數(shù)來(lái)獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的編號(hào),可實(shí)現(xiàn)用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于同一個(gè)分布式消息隊(duì)列中,有利于實(shí)現(xiàn)用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)在同一臺(tái)計(jì)算機(jī)中處理,保證了數(shù)據(jù)處理的精度。
在一個(gè)實(shí)施例中,數(shù)據(jù)獲取模塊508還用于獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),根據(jù)預(yù)設(shè)的時(shí)間間隔從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,線程標(biāo)識(shí)對(duì)應(yīng)的線程中包括子線程;分配模塊510還用于獲取子線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào);將與子線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào)所對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給子線程標(biāo)識(shí)對(duì)應(yīng)的子線程處理。
上述業(yè)務(wù)監(jiān)控裝置,根據(jù)子線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可將獲取的分布式消息隊(duì)列中監(jiān)控?cái)?shù)據(jù)分配給對(duì)應(yīng)的子線程處理。通過(guò)每個(gè)子線程處理指定的分布式消息隊(duì)列中監(jiān)控?cái)?shù)據(jù),實(shí)現(xiàn)監(jiān)控系統(tǒng)中每個(gè)子線程都在處理監(jiān)控?cái)?shù)據(jù),提高了監(jiān)控系統(tǒng)處理數(shù)據(jù)的效率。
圖7為另一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控裝置的結(jié)構(gòu)框圖。如圖7所示,一種業(yè)務(wù)監(jiān)控裝置,包括獲取模塊702、封裝模塊704、數(shù)據(jù)存儲(chǔ)模塊706、數(shù)據(jù)獲取模塊708、分配模塊710和對(duì)應(yīng)模塊712。其中獲取模塊702、封裝模塊704、數(shù)據(jù)存儲(chǔ)模塊706、數(shù)據(jù)獲取模塊708和分配模塊710與圖5中對(duì)應(yīng)的模塊功能相同。
對(duì)應(yīng)模塊712,用于若檢測(cè)到新增分布式消息隊(duì)列和新增線程;建立新增分布式消息隊(duì)列的隊(duì)列編號(hào)與新增線程的線程標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系。
上述業(yè)務(wù)監(jiān)控裝置,在用戶請(qǐng)求量增加時(shí),可自動(dòng)建立新增的分布式消息隊(duì)列與新增線程之間的對(duì)應(yīng)關(guān)系。即在用戶請(qǐng)求量增加時(shí),可通過(guò)擴(kuò)展分布式消息隊(duì)列數(shù)和線程數(shù)來(lái)提高監(jiān)控系統(tǒng)處理數(shù)據(jù)的能力,提高了監(jiān)控系統(tǒng)處理數(shù)據(jù)的效率。
圖8為另一個(gè)實(shí)施例中業(yè)務(wù)監(jiān)控裝置的結(jié)構(gòu)框圖。如圖8所示,一種業(yè)務(wù)監(jiān)控裝置,包括獲取模塊802、封裝模塊804、數(shù)據(jù)存儲(chǔ)模塊806、數(shù)據(jù)獲取模塊808、分配模塊810和結(jié)果存儲(chǔ)模塊812。其中獲取模塊802、封裝模塊804、數(shù)據(jù)存儲(chǔ)模塊806、數(shù)據(jù)獲取模塊808和分配模塊810與圖5中對(duì)應(yīng)的模塊功能相同。
結(jié)果存儲(chǔ)模塊812,用于獲取線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果;將線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù),以使監(jiān)控后臺(tái)可讀取并展示數(shù)據(jù)庫(kù)中數(shù)據(jù)。
上述業(yè)務(wù)監(jiān)控裝置,將線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中,使監(jiān)控后臺(tái)可讀取數(shù)據(jù)庫(kù)中監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可視化展示,有利于了解系統(tǒng)健康狀況和及時(shí)發(fā)現(xiàn)系統(tǒng)問(wèn)題,在出現(xiàn)系統(tǒng)問(wèn)題時(shí)實(shí)現(xiàn)秒級(jí)告警。
上述業(yè)務(wù)監(jiān)控裝置中各個(gè)模塊的劃分僅用于舉例說(shuō)明,在其他實(shí)施例中,可將業(yè)務(wù)監(jiān)控裝置按照需要?jiǎng)澐譃椴煌哪K,以完成上述業(yè)務(wù)監(jiān)控裝置的全部或部分功能。
一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器,處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序(指令),處理器執(zhí)行程序時(shí)實(shí)現(xiàn)以下步驟(1)至(5):
(1)獲取用戶請(qǐng)求信息。
在一個(gè)實(shí)施例中,服務(wù)器中應(yīng)用網(wǎng)關(guān)上部署有監(jiān)控?cái)r截器,監(jiān)控?cái)r截器可攔截服務(wù)器接收的用戶請(qǐng)求和服務(wù)器對(duì)用戶請(qǐng)求的響應(yīng),并記錄用戶請(qǐng)求信息。其中用戶請(qǐng)求信息可包括服務(wù)器接收用戶請(qǐng)求的時(shí)刻,即用戶請(qǐng)求接收時(shí)刻;服務(wù)器對(duì)用戶請(qǐng)求作出響應(yīng)的時(shí)刻,即用戶請(qǐng)求響應(yīng)時(shí)刻;用戶請(qǐng)求調(diào)用的服務(wù)模塊,即服務(wù)器上用于處理用戶請(qǐng)求的模塊;用戶請(qǐng)求的服務(wù)節(jié)點(diǎn),即服務(wù)器上用于處理用戶請(qǐng)求的服務(wù)器地址;用戶請(qǐng)求方IP;用戶請(qǐng)求的URL;被請(qǐng)求方名稱等。
(2)將用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,監(jiān)控?cái)r截器可將獲取的用戶請(qǐng)求信息封裝為監(jiān)控?cái)?shù)據(jù),并將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于本地隊(duì)列的消息隊(duì)列中。
(3)獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。
在一個(gè)實(shí)施例中,監(jiān)控?cái)r截器可從本地隊(duì)列的消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻。通過(guò)將用戶接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,利用HashCode算法將時(shí)間戳轉(zhuǎn)換為哈希值,將哈希值與分布式消息隊(duì)列的隊(duì)列數(shù)進(jìn)行取模運(yùn)算,可得到與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。在獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)后,監(jiān)控?cái)r截器可將監(jiān)控?cái)?shù)據(jù)通過(guò)Http方式異步批量傳輸給分布式消息隊(duì)列集群中與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列進(jìn)行存儲(chǔ)。
(4)獲取線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào),從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)中有處理監(jiān)控?cái)?shù)據(jù)的線程,監(jiān)控系統(tǒng)獲取線程標(biāo)識(shí)后,根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。根據(jù)線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控系統(tǒng)可獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。其中,線程標(biāo)識(shí)是用于唯一標(biāo)識(shí)線程身份的字符串。該字符串可包括數(shù)字、字母、字符等至少一種。監(jiān)控系統(tǒng)中每個(gè)線程標(biāo)識(shí)都有對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控系統(tǒng)在獲取線程標(biāo)識(shí)后,獲取該線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
(5)將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)在獲取監(jiān)控?cái)?shù)據(jù)后,根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理。其中,監(jiān)控系統(tǒng)中一個(gè)線程標(biāo)識(shí)可對(duì)應(yīng)多個(gè)分布式消息隊(duì)列的隊(duì)列編號(hào),各線程標(biāo)識(shí)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)不相同。即監(jiān)控系統(tǒng)中一個(gè)線程可處理多個(gè)分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù),每個(gè)線程所處理的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)不相同,一個(gè)分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)在一個(gè)固定的線程中處理。
上述計(jì)算機(jī)設(shè)備,在獲取監(jiān)控?cái)?shù)據(jù)后,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列編號(hào),并將監(jiān)控?cái)?shù)據(jù)發(fā)送給對(duì)應(yīng)編號(hào)的分布式消息隊(duì)列存儲(chǔ)。通過(guò)引入分布式消息隊(duì)列、將監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于分布式消息隊(duì)列,實(shí)現(xiàn)監(jiān)控系統(tǒng)從分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),并對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行處理。通過(guò)將監(jiān)控系統(tǒng)與存儲(chǔ)監(jiān)控?cái)?shù)據(jù)的本地隊(duì)列解耦,避免了在監(jiān)控系統(tǒng)不穩(wěn)定時(shí),本地隊(duì)列發(fā)送的監(jiān)控?cái)?shù)據(jù)丟失的情況。
在一個(gè)實(shí)施例中,上述計(jì)算機(jī)設(shè)備中處理器執(zhí)行程序時(shí)還實(shí)現(xiàn)以下步驟:獲取線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果;將線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù),以使監(jiān)控后臺(tái)可讀取并展示數(shù)據(jù)庫(kù)中數(shù)據(jù)。
在一個(gè)實(shí)施例中,線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可包括QPS、錯(cuò)誤數(shù)和響應(yīng)時(shí)間等。其中,QPS是指每秒用戶訪問(wèn)的次數(shù);錯(cuò)誤數(shù)是指每分鐘系統(tǒng)異常數(shù),系統(tǒng)異常可包括處理用戶請(qǐng)求異常、處理用戶請(qǐng)求超時(shí)等;響應(yīng)時(shí)間是指處理用戶請(qǐng)求的時(shí)間,響應(yīng)時(shí)間可通過(guò)用戶請(qǐng)求信息中用戶請(qǐng)求接收時(shí)刻與用戶請(qǐng)求響應(yīng)時(shí)刻計(jì)算獲取。監(jiān)控系統(tǒng)在獲取線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果后,可將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中。監(jiān)控后臺(tái)可讀取數(shù)據(jù)庫(kù)中存儲(chǔ)的監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可視化展示。
上述計(jì)算機(jī)設(shè)備,將線程對(duì)監(jiān)控?cái)?shù)據(jù)的處理結(jié)果存儲(chǔ)于數(shù)據(jù)庫(kù)中,使監(jiān)控后臺(tái)可讀取數(shù)據(jù)庫(kù)中監(jiān)控?cái)?shù)據(jù)的處理結(jié)果,并將監(jiān)控?cái)?shù)據(jù)的處理結(jié)果可視化展示,有利于了解系統(tǒng)健康狀況和及時(shí)發(fā)現(xiàn)系統(tǒng)問(wèn)題,在出現(xiàn)系統(tǒng)問(wèn)題時(shí)實(shí)現(xiàn)秒級(jí)告警。
在一個(gè)實(shí)施例中,上述計(jì)算機(jī)設(shè)備中處理器執(zhí)行程序時(shí)實(shí)現(xiàn)的步驟:獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)包括:獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻和分布式消息隊(duì)列集群中分布式消息隊(duì)列的隊(duì)列數(shù);將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳;根據(jù)時(shí)間戳和分布式消息隊(duì)列的隊(duì)列數(shù)獲取與監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。
在一個(gè)實(shí)施例中,監(jiān)控?cái)r截器可讀取分布式消息隊(duì)列集群中分布式消息隊(duì)列的隊(duì)列數(shù);監(jiān)控?cái)r截器還可從本地隊(duì)列的消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù),從監(jiān)控?cái)?shù)據(jù)中讀取用戶請(qǐng)求接收時(shí)刻,將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,通過(guò)HashCode算法計(jì)算時(shí)間戳對(duì)應(yīng)的哈希值,將時(shí)間戳對(duì)應(yīng)的哈希值與分布式消息隊(duì)列的隊(duì)列數(shù)進(jìn)行取模運(yùn)算,可得到監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。即【監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)】=【HashCode(用戶請(qǐng)求接收時(shí)刻對(duì)應(yīng)的時(shí)間戳)】mod【分布式消息隊(duì)列的隊(duì)列數(shù)】。其中,用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)相同,即用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于同一個(gè)分布式消息隊(duì)列中。
上述計(jì)算機(jī)設(shè)備,獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的用戶請(qǐng)求接收時(shí)刻后,將用戶請(qǐng)求接收時(shí)刻轉(zhuǎn)換為時(shí)間戳,通過(guò)時(shí)間戳和分布式消息隊(duì)列的隊(duì)列數(shù)來(lái)獲取監(jiān)控?cái)?shù)據(jù)對(duì)應(yīng)的分布式消息隊(duì)列的編號(hào),可實(shí)現(xiàn)用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)存儲(chǔ)于同一個(gè)分布式消息隊(duì)列中,有利于實(shí)現(xiàn)用戶請(qǐng)求接收時(shí)刻為同一分鐘的監(jiān)控?cái)?shù)據(jù)在同一臺(tái)計(jì)算機(jī)中處理,保證了數(shù)據(jù)處理的精度。
在一個(gè)實(shí)施例中,上述計(jì)算機(jī)設(shè)備中處理器執(zhí)行程序時(shí)實(shí)現(xiàn)的步驟:從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)包括:根據(jù)預(yù)設(shè)的時(shí)間間隔從分布式消息隊(duì)列集群中獲取與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)在獲取線程標(biāo)識(shí)后,根據(jù)預(yù)配置的線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。根據(jù)線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)和預(yù)設(shè)的時(shí)間間隔,監(jiān)控系統(tǒng)可定時(shí)從分布式消息隊(duì)列集群中獲取與線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
在一個(gè)實(shí)施例中,線程標(biāo)識(shí)對(duì)應(yīng)的線程中包括子線程;上述計(jì)算機(jī)設(shè)備中處理器執(zhí)行程序時(shí)實(shí)現(xiàn)的步驟:將與隊(duì)列編號(hào)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給線程標(biāo)識(shí)對(duì)應(yīng)的線程處理包括:獲取子線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào);將與子線程標(biāo)識(shí)對(duì)應(yīng)的隊(duì)列編號(hào)所對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給子線程標(biāo)識(shí)對(duì)應(yīng)的子線程處理。
在一個(gè)實(shí)施例中,監(jiān)控系統(tǒng)中各線程中包括子線程,各子線程有子線程標(biāo)識(shí),子線程標(biāo)識(shí)是用于唯一標(biāo)識(shí)子線程身份的字符串。該字符串可包括數(shù)字、字母、字符等至少一種。且一個(gè)線程中包括多個(gè)子線程,一個(gè)子線程標(biāo)識(shí)可對(duì)應(yīng)多個(gè)分布式消息隊(duì)列的隊(duì)列編號(hào),各子線程標(biāo)識(shí)所對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)不相同。監(jiān)控系統(tǒng)獲取線程中各子線程標(biāo)識(shí)后,根據(jù)預(yù)配置的子線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可獲取與子線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列的隊(duì)列編號(hào)。根據(jù)上述分布式消息隊(duì)列的隊(duì)列編號(hào),監(jiān)控系統(tǒng)可獲取與子線程標(biāo)識(shí)對(duì)應(yīng)的分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù),并將分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)分配給子線程標(biāo)識(shí)對(duì)應(yīng)的子線程處理。其中,分布式消息隊(duì)列的隊(duì)列數(shù)≥監(jiān)控系統(tǒng)中總子線程數(shù)。通常情況下,監(jiān)控系統(tǒng)中各線程中包括的子線程數(shù)量相同,即分布式消息隊(duì)列的隊(duì)列數(shù)≥監(jiān)控系統(tǒng)中線程數(shù)*單個(gè)線程中子線程數(shù)。當(dāng)分布式消息隊(duì)列的隊(duì)列數(shù)=監(jiān)控系統(tǒng)中線程數(shù)*單個(gè)線程中子線程數(shù)時(shí),監(jiān)控系統(tǒng)可實(shí)現(xiàn)一個(gè)子線程處理一個(gè)分布式消息隊(duì)列中的監(jiān)控?cái)?shù)據(jù)。
上述計(jì)算機(jī)設(shè)備,根據(jù)子線程標(biāo)識(shí)與分布式消息隊(duì)列的隊(duì)列編號(hào)之間的對(duì)應(yīng)關(guān)系,可將獲取的分布式消息隊(duì)列中監(jiān)控?cái)?shù)據(jù)分配給對(duì)應(yīng)的子線程處理。通過(guò)每個(gè)子線程處理指定的分布式消息隊(duì)列中監(jiān)控?cái)?shù)據(jù),實(shí)現(xiàn)監(jiān)控系統(tǒng)中每個(gè)子線程都在處理監(jiān)控?cái)?shù)據(jù),提高了監(jiān)控系統(tǒng)處理數(shù)據(jù)的效率。
在一個(gè)實(shí)施例中,上述計(jì)算機(jī)設(shè)備中處理器執(zhí)行程序時(shí)還實(shí)現(xiàn)以下步驟:若檢測(cè)到新增分布式消息隊(duì)列和新增線程;建立新增分布式消息隊(duì)列的隊(duì)列編號(hào)與新增線程的線程標(biāo)識(shí)之間的對(duì)應(yīng)關(guān)系。
在一個(gè)實(shí)施例中,當(dāng)QPS增加時(shí),可增加分布式消息隊(duì)列節(jié)點(diǎn)和線程節(jié)點(diǎn)。若服務(wù)器檢測(cè)到新增分布式消息隊(duì)列節(jié)點(diǎn)和新增線程節(jié)點(diǎn),可獲取新增分布式消息隊(duì)列的隊(duì)列編號(hào)、新增線程的線程標(biāo)識(shí),并將新增線程的線程標(biāo)識(shí)與新增分布式消息隊(duì)列的隊(duì)列編號(hào)對(duì)應(yīng),即新增的線程從新增的分布式消息隊(duì)列中獲取監(jiān)控?cái)?shù)據(jù)并進(jìn)行處理。
上述計(jì)算機(jī)設(shè)備,在用戶請(qǐng)求量增加時(shí),可自動(dòng)建立新增的分布式消息隊(duì)列與新增線程之間的對(duì)應(yīng)關(guān)系。即在用戶請(qǐng)求量增加時(shí),可通過(guò)擴(kuò)展分布式消息隊(duì)列數(shù)和線程數(shù)來(lái)提高監(jiān)控系統(tǒng)處理數(shù)據(jù)的能力,提高了監(jiān)控系統(tǒng)處理數(shù)據(jù)的效率。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)等。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。