調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,更為具體而言,涉及調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法及系統(tǒng)。
【背景技術(shù)】
[0002]通常一個(gè)消息隊(duì)列有很多消息分區(qū)或子隊(duì)列,一個(gè)消息分區(qū)由一個(gè)消息推送執(zhí)行體(進(jìn)程或者線程)推送消息,多個(gè)消息推送執(zhí)行體可以同時(shí)并發(fā)地推送消息,從而提高消息隊(duì)列的推送qps (Query Per Second,每秒查詢率)。消息推送執(zhí)行體的數(shù)量一般是在初始化時(shí)就指定一個(gè)合理的固定值,不能太大,因?yàn)橄掠畏?wù)端可能既接收消息推送接口請求,還有可能接收其他接口請求或web (互聯(lián)網(wǎng))請求,這樣如果每個(gè)分區(qū)都有一個(gè)消息推送執(zhí)行體推送消息,會(huì)導(dǎo)致下游服務(wù)器壓力過大,從而導(dǎo)致其他請求響應(yīng)超時(shí)或服務(wù)不可用,但消息推送執(zhí)行體數(shù)目設(shè)置過小卻又導(dǎo)致一部分分區(qū)可能有消息卻沒有消息推送執(zhí)行體推送,從而降低消息隊(duì)列的推送qps,延長消息的處理時(shí)間,增加了機(jī)器使用的閑置率。在現(xiàn)有技術(shù)中,采用人工方式來配置消息推送執(zhí)行體的數(shù)量,然而由于下游部署關(guān)系很復(fù)雜,采用人工方式難以根據(jù)下游服務(wù)端的實(shí)際處理能力動(dòng)態(tài)調(diào)節(jié)消息推送執(zhí)行體的數(shù)量,因此,難以最大化利用機(jī)器資源以提高消息隊(duì)列的推送性能。
【發(fā)明內(nèi)容】
[0003]為有效地解決上述技術(shù)問題,本發(fā)明提供了一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法及系統(tǒng)。
[0004]—方面,本發(fā)明的實(shí)施方式提供了一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法,所述方法包括:
[0005]讀取消息推送執(zhí)行體的基于服務(wù)端的負(fù)載信息的配置量;
[0006]識別所述讀取的配置量是否已更新;
[0007]若識別為已更新,則根據(jù)所述讀取的配置量調(diào)節(jié)所述消息推送執(zhí)行體的運(yùn)行數(shù)量。
[0008]另一方面,本發(fā)明的實(shí)施方式還提供了一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的系統(tǒng),所述系統(tǒng)包括:
[0009]讀取模塊,用于讀取消息推送執(zhí)行體的基于服務(wù)端的負(fù)載信息的配置量;
[0010]識別模塊,用于識別所述讀取模塊所讀取的配置量是否已更新;
[0011]調(diào)節(jié)模塊,用于當(dāng)所述識別模塊識別為已更新時(shí),根據(jù)所述讀取的配置量調(diào)節(jié)所述消息推送執(zhí)行體的運(yùn)行數(shù)量。
[0012]實(shí)施本發(fā)明提供的調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法及系統(tǒng)可以基于服務(wù)端的負(fù)載信息對消息推送執(zhí)行體的數(shù)量進(jìn)行調(diào)節(jié),從而實(shí)現(xiàn)根據(jù)下游服務(wù)端的實(shí)際處理能力動(dòng)態(tài)調(diào)節(jié)消息推送執(zhí)行體的數(shù)量,最大化利用機(jī)器資源以提高消息隊(duì)列的推送性能。
【附圖說明】
[0013]圖1是根據(jù)本發(fā)明實(shí)施方式的一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法的流程圖;
[0014]圖2是根據(jù)本發(fā)明實(shí)施方式的配置樹的示意圖;
[0015]圖3是根據(jù)本發(fā)明實(shí)施方式的一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0016]為使本發(fā)明的實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作詳細(xì)描述。
[0017]圖1是根據(jù)本發(fā)明實(shí)施方式的一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的方法的流程圖。參見圖1,所述方法包括:
[0018]SllO:讀取消息推送執(zhí)行體的基于服務(wù)端的負(fù)載信息的配置量;
[0019]其中,所述消息推送執(zhí)行體包括:消息推送進(jìn)程以及消息推送線程;所述負(fù)載信息包括:所述服務(wù)端響應(yīng)消息推送請求的超時(shí)率以及所述服務(wù)端處理消息推送請求的出錯(cuò)率;
[0020]S120:識別所述讀取的配置量是否已更新,若識別為已更新,則執(zhí)行S130,若識別為未更新,則不進(jìn)行處理;
[0021]S130:根據(jù)所述讀取的配置量調(diào)節(jié)所述消息推送執(zhí)行體的運(yùn)行數(shù)量。
[0022]在本發(fā)明的實(shí)施方式中,所述方法還包括:根據(jù)所述服務(wù)端的所述負(fù)載信息更新所述配置量,具體地,可以通過以下方式實(shí)現(xiàn):
[0023]獲取當(dāng)前的所述超時(shí)率以及出錯(cuò)率;
[0024]將所述獲取的超時(shí)率以及出錯(cuò)率分別與超時(shí)率閾值以及出錯(cuò)率閾值進(jìn)行比較;
[0025]若所述獲取的超時(shí)率小于或者等于所述超時(shí)率閾值并且所述獲取的出錯(cuò)率小于或者等于所述出錯(cuò)率閾值,則將所述配置量增加預(yù)定增加量,然后經(jīng)過第一預(yù)定時(shí)間后返回執(zhí)行所述獲取當(dāng)前的所述超時(shí)率以及出錯(cuò)率的處理;
[0026]若所述獲取的超時(shí)率大于所述超時(shí)率閾值并且所述獲取的出錯(cuò)率大于所述出錯(cuò)率閾值,則將所述配置量減少預(yù)定減少量,然后經(jīng)過第二預(yù)定時(shí)間后返回執(zhí)行所述獲取當(dāng)前的所述超時(shí)率以及出錯(cuò)率的處理。
[0027]其中,在本發(fā)明的實(shí)施方式中,所述第二預(yù)定時(shí)間小于所述第一預(yù)定時(shí)間,例如,所述第一預(yù)定時(shí)間為10分鐘,所述第二預(yù)定時(shí)間為I分鐘,當(dāng)然,本領(lǐng)域的技術(shù)人員可以根據(jù)實(shí)際需要對所述第一預(yù)定時(shí)間及所述第二預(yù)定時(shí)間進(jìn)行其他合理設(shè)置。同時(shí),所述預(yù)定增加量以及所述預(yù)定減少量可以相同也可以不同。
[0028]以下結(jié)合具體例子,對本發(fā)明的實(shí)施方式進(jìn)行說明。在消息隊(duì)列中構(gòu)建一棵配置樹,如圖2所示,所述配置樹的葉子節(jié)點(diǎn)是用于訂閱消息的下游api (接口 )本身的信息以及在各個(gè)時(shí)間段下游模塊的負(fù)載信息(可以根據(jù)cpu (Central Processing Unit,中央處理器)、內(nèi)存使用率和錯(cuò)誤日志來記錄),其中,下游模塊指部署在web服務(wù)(服務(wù)端)中的向所述下游接口提供服務(wù)的代碼模塊,并且負(fù)載信息包括:響應(yīng)消息推送請求的超時(shí)率以及處理消息推送請求的出錯(cuò)率。api信息節(jié)點(diǎn)的父節(jié)點(diǎn)是web服務(wù)信息節(jié)點(diǎn),每個(gè)web服務(wù)信息節(jié)點(diǎn)下可以包括多個(gè)api信息節(jié)點(diǎn),web服務(wù)信息節(jié)點(diǎn)的父節(jié)點(diǎn)是機(jī)器信息節(jié)點(diǎn),每個(gè)機(jī)器信息節(jié)點(diǎn)下可以包括多個(gè)web服務(wù)信息節(jié)點(diǎn),機(jī)器信息節(jié)點(diǎn)的父節(jié)點(diǎn)是機(jī)房信息節(jié)點(diǎn),每個(gè)機(jī)房信息節(jié)點(diǎn)下可以包括多個(gè)機(jī)器信息節(jié)點(diǎn)。由于web服務(wù)節(jié)點(diǎn),機(jī)器信息節(jié)點(diǎn)和機(jī)房信息節(jié)點(diǎn)很少變動(dòng),可以手動(dòng)配置,并且可以先在api信息節(jié)點(diǎn)配置一個(gè)合理的消息推送進(jìn)程或者線程的配置量,然后配置線程可以根據(jù)與所述api對應(yīng)的服務(wù)端的所述負(fù)載信息動(dòng)態(tài)地反饋調(diào)節(jié)所述配置量并定期更新所述負(fù)載信息,其中,調(diào)節(jié)配置量的執(zhí)行過程具體包括:獲取當(dāng)前的超時(shí)率以及出錯(cuò)率;將獲取的超時(shí)率以及出錯(cuò)率分別與超時(shí)率閾值以及出錯(cuò)率閾值進(jìn)行比較;若獲取的超時(shí)率小于或者等于所述超時(shí)率閾值并且所述獲取的出錯(cuò)率小于或者等于所述出錯(cuò)率閾值,則將所述配置量增加預(yù)定增加量(例如1),并且經(jīng)過第一等待時(shí)間(例如10分鐘)后返回執(zhí)行所述獲取當(dāng)前的超時(shí)率以及出錯(cuò)率的處理;若所述獲取的超時(shí)率大于所述超時(shí)率閾值并且所述獲取的出錯(cuò)率大于所述出錯(cuò)率閾值,則將配置量減少預(yù)定減少量(例如I),并且經(jīng)過第二等待時(shí)間(例如I分鐘)后返回執(zhí)行所述獲取當(dāng)前的超時(shí)率以及出錯(cuò)率的處理,其中,預(yù)定增加量以及預(yù)定減少量也可以設(shè)置為不同。并發(fā)地,主線程定期讀取所述配置樹中消息推送進(jìn)程或線程的配置量,并識別所述配置量是否已更新,若識別為已更新,則根據(jù)所述配置量調(diào)節(jié)所述消息推送進(jìn)程或線程的運(yùn)行數(shù)量以合理利用機(jī)器資源。主線程和配置線程相互獨(dú)立地執(zhí)行,為避免主線程不停地占用資源,在循環(huán)執(zhí)行主線程的過程中,相鄰兩次執(zhí)行之間間隔預(yù)定時(shí)間,例如I秒,當(dāng)然本領(lǐng)域的技術(shù)人員可以根據(jù)實(shí)際需要將所述預(yù)定時(shí)間進(jìn)行其它合理設(shè)置。
[0029]圖3是根據(jù)本發(fā)明實(shí)施方式的一種調(diào)節(jié)消息推送執(zhí)行體的運(yùn)行數(shù)量的系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)100包括:讀取模塊110、識別模塊120、以及調(diào)節(jié)模塊130,其中,
[0030]讀取模塊110,用于讀取消息推送執(zhí)行體的基于服務(wù)端的負(fù)載信息的配置量;
[0031]其中,所述消息推送執(zhí)行體包括:消息推送進(jìn)程以及消息推送線程;所述負(fù)載信息包括:所述服務(wù)端響應(yīng)消息