欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

服務(wù)器備災(zāi)處理方法、裝置、存儲介質(zhì)及電子設(shè)備與流程

文檔序號:11436341閱讀:443來源:國知局
服務(wù)器備災(zāi)處理方法、裝置、存儲介質(zhì)及電子設(shè)備與流程

本公開涉及消息處理技術(shù)領(lǐng)域,具體而言,涉及一種服務(wù)器備災(zāi)處理方法、服務(wù)器備災(zāi)處理裝置、存儲介質(zhì)及電子設(shè)備。



背景技術(shù):

隨著通信技術(shù)的發(fā)展,對消息處理的性能和可靠性的要求越來越高。目前已經(jīng)演化出很多高效的備災(zāi)技術(shù)手段,例如基于udp廣播或組播的通信協(xié)議(可靠組播)、消息補發(fā)機制、主備部署等手段都可以在保證高可靠性的同時達到很高的消息處理速度。但是由于消息的有狀態(tài)特性,在提高可靠性的同時會約束消息處理的性能。

為了達到可靠性的要求,現(xiàn)有服務(wù)器備災(zāi)技術(shù)領(lǐng)域一般都會部署主備兩臺服務(wù)器,采用主備服務(wù)器同步通信的設(shè)計,要求在主備服務(wù)器之間進行嚴格的數(shù)據(jù)同步,即每個進入服務(wù)器的消息,都要在主備服務(wù)器之間轉(zhuǎn)發(fā)一次相互確認。

這種方式會存在以下問題:一、因為主備服務(wù)器消息同步通信的設(shè)計,在備服務(wù)器宕機的情況下,原本完好的主服務(wù)器,也會因為收不到備服務(wù)器對消息同步請求的響應(yīng)消息而暫停服務(wù),直到仲裁服務(wù)器確認備服務(wù)器宕機后,才能恢復(fù)工作;二、雖然對請求消息進行了主備同步,但是往往忽略了對響應(yīng)消息進行同步,備服務(wù)器在主服務(wù)器宕機后接管,但是不能準確判定消息的處理狀態(tài),往往導致會丟掉主備切換期間重發(fā)或者漏發(fā)消息;三、為了達到可靠性的要求,要求在主備服務(wù)器之間進行嚴格的數(shù)據(jù)同步,每個往返的消息都要在主備服務(wù)器之間轉(zhuǎn)發(fā)一次相互確認,會造成消息處理的速度下降,從而導致效率低。

需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。



技術(shù)實現(xiàn)要素:

本公開的目的在于提供一種服務(wù)器備災(zāi)處理方法、服務(wù)器備災(zāi)處理裝置、存儲介質(zhì)及電子設(shè)備,進而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導致的一個或者多個問題。

根據(jù)本公開的第一方面,提供一種服務(wù)器備災(zāi)處理方法,應(yīng)用于主服務(wù)器、備服務(wù)器和仲裁機組成的系統(tǒng),其中,所述主服務(wù)器用于處理消息,所述備服務(wù)器用于同步消息,所述方法包括:

所述仲裁機通過一心跳信道監(jiān)控所述主服務(wù)器和所述備服務(wù)器的運行狀態(tài)并判斷所述主服務(wù)器是否宕機;

在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理一消息處理終端的消息;

在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息;

其中,所述主服務(wù)器和所述備服務(wù)器的預(yù)設(shè)隊列均包括未報隊列、未決隊列及已決隊列,所述未報隊列用于記錄接收但未發(fā)送的消息,所述未決隊列用于記錄已發(fā)送但未確收的消息,所述已決隊列用于記錄已確收的消息。

在本公開的一種示例性實施例中,啟動所述主服務(wù)器的預(yù)設(shè)隊列包括:

接收所述消息處理終端的消息并將所述消息移到所述主服務(wù)器的未報隊列;

在將所述消息移到所述主服務(wù)器的未報隊列后報送消息;

判斷所述主服務(wù)器是否接收到外部服務(wù)器的響應(yīng)消息,若是則將所述消息移到所述主服務(wù)器的已決隊列并從所述主服務(wù)器的已決隊列中刪除消息,若否則將所述消息移到所述主服務(wù)器的未決隊列。

在本公開的一種示例性實施例中,啟動所述備服務(wù)器的預(yù)設(shè)隊列包括:

接收所述消息處理終端的消息并將所述消息移到所述備服務(wù)器的未決隊列;

在將所述消息移到所述備服務(wù)器的未決隊列后,判斷所述備服務(wù)器是否接收到外部服務(wù)器的響應(yīng)消息;

若是,則將所述消息移到所述備服務(wù)器的已決隊列并從所述備服務(wù)器的已決隊列中刪除消息。

在本公開的一種示例性實施例中,在所述備服務(wù)器切換為所述主服務(wù)器時,所述方法還包括:

在所述主服務(wù)器宕機后,判斷是否存在未決消息;

若是,則優(yōu)先處理所述未決消息;

在處理所述未決消息后,啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理消息。

在本公開的一種示例性實施例中,控制所述備服務(wù)器切換為所述主服務(wù)器包括:

接收所述消息處理終端的消息并將所述消息移到所述備服務(wù)器的未報隊列;

根據(jù)每個消息的編號通過查詢服務(wù)器確定每個未決消息是否報送成功;

通過將報送成功的消息移到所述備服務(wù)器的已決隊列,將未報的消息移到所述備服務(wù)器的未報隊列的方式清理所述備服務(wù)器的未決隊列;

在清理所述備服務(wù)器的未決隊列后,報送消息以控制所述備服務(wù)器切換為所述主服務(wù)器。

在本公開的一種示例性實施例中,判斷所述主服務(wù)器是否宕機包括:

所述仲裁機通過所述心跳信道判斷是否接收到所述主服務(wù)器的心跳;

在判斷連續(xù)預(yù)設(shè)次數(shù)未接收到所述主服務(wù)器的心跳時,判斷所述主服務(wù)器宕機。

在本公開的一種示例性實施例中,所述方法還包括:

恢復(fù)宕機的所述主服務(wù)器或者所述備服務(wù)器;

將恢復(fù)后的所述主服務(wù)器或者所述備服務(wù)器作為備服務(wù)器啟動。

在本公開的一種示例性實施例中,所述方法還包括:

將先啟動的服務(wù)器確定為所述主服務(wù)器,將后啟動的服務(wù)器確定為所述備服務(wù)器。

在本公開的一種示例性實施例中,所述方法還包括:

在判斷所述主服務(wù)器和所述備服務(wù)器未宕機時,所述主服務(wù)器和所述備服務(wù)器同時接收所述消息處理終端的消息以及所述外部服務(wù)器的響應(yīng)消息。

根據(jù)本公開的第二方面,提供一種服務(wù)器備災(zāi)處理裝置,應(yīng)用于主服務(wù)器、備服務(wù)器和仲裁機組成的系統(tǒng),其中,所述主服務(wù)器用于處理消息,所述備服務(wù)器用于同步消息,所述裝置包括:

宕機判斷模塊,用于所述仲裁機通過一心跳信道監(jiān)控所述主服務(wù)器和所述備服務(wù)器的運行狀態(tài)并判斷所述主服務(wù)器是否宕機;

主服務(wù)器模塊,用于在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理一消息處理終端的消息;

主備切換模塊,用于在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息;

其中,所述主服務(wù)器和所述備服務(wù)器的預(yù)設(shè)隊列均包括未報隊列、未決隊列及已決隊列,所述未報隊列用于記錄接收但未發(fā)送的消息,所述未決隊列用于記錄已發(fā)送但未確收的消息,所述已決隊列用于記錄已確收的消息。

根據(jù)本公開的第三方面,提供一種存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述任意一項所述的服務(wù)器備災(zāi)處理方法。

根據(jù)本公開的第四方面,提供一種電子設(shè)備,包括:

處理器;以及

存儲器,用于存儲所述處理器的可執(zhí)行指令;

其中,所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行上述任意一項所述的服務(wù)器備災(zāi)處理方法。

本公開提供的一種服務(wù)器備災(zāi)處理方法、服務(wù)器備災(zāi)處理裝置、存儲介質(zhì)及電子設(shè)備中,通過所述仲裁機判斷所述主服務(wù)器是否宕機;在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息;在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息。一方面,在主服務(wù)器宕機時,通過控制備服務(wù)器切換為主服務(wù)器,從而能夠保證主服務(wù)器宕機時任何消息都不會消失、也不會重復(fù)發(fā)送;另一方面,取消了主備服務(wù)器之間的同步通信,避免了每個進入服務(wù)器的消息都要在主服務(wù)器和備服務(wù)器之間轉(zhuǎn)發(fā)相互確認,提高了消息處理的速度;另一方面,取消了主服務(wù)器和備服務(wù)器之間的同步通信,消除了備服務(wù)器宕機時對主服務(wù)器運行狀態(tài)的影響,提高了消息處理效率和可靠性。

應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。

附圖說明

此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1示意性示出本公開示例性實施例中一種服務(wù)器備災(zāi)處理方法的流程示意圖;

圖2示意性示出本公開示例性實施例中一種消息處理服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;

圖3示意性示出本公開示例性實施例中一種主服務(wù)器的運行結(jié)構(gòu)示意圖;

圖4示意性示出本公開示例性實施例中一種備服務(wù)器的運行結(jié)構(gòu)示意圖;

圖5示意性示出本公開示例性實施例中一種消息處理流程的示意圖;

圖6示意性示出本公開示例性實施例中一種主服務(wù)器宕機時消息處理流程示意圖;

圖7示意性示出本公開示例性實施例中一種服務(wù)器備災(zāi)處理裝置的方框圖;

圖8示意性示出本公開示例性實施例中一種電子設(shè)備的框圖。

具體實施方式

現(xiàn)在將參考附圖更全面地描述示例實施例。然而,示例實施例能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的實施例;相反,提供這些實施例使得本公開將全面和完整,并將示例實施例的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。

此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施例中。在下面的描述中,提供許多具體細節(jié)從而給出對本公開的實施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而沒有所述特定細節(jié)中的一個或更多,或者可以采用其他的方法、組元、材料、裝置、步驟等。在其他情況下,不詳細示出或描述公知結(jié)構(gòu)、方法、裝置、實現(xiàn)、材料或者操作以避免模糊本公開的各方面。

附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應(yīng)。即,可以采用軟件形式來實現(xiàn)這些功能實體,或在一個或多個軟件硬化的模塊中實現(xiàn)這些功能實體或功能實體的一部分,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。

本示例實施方式中首先提供了一種服務(wù)器備災(zāi)處理方法,應(yīng)用于主服務(wù)器、備服務(wù)器和仲裁機組成的系統(tǒng),其中,所述主服務(wù)器用于處理消息,所述備服務(wù)器用于同步消息。所述主服務(wù)器和所述備服務(wù)器可以為雙機熱備模式,當一臺主服務(wù)器宕機后,備服務(wù)器自動切換為主服務(wù)器,不需要人工去切換,可以通過故障點的轉(zhuǎn)移來實現(xiàn)數(shù)據(jù)的恢復(fù),因此可以保障數(shù)據(jù)的連續(xù)性。雙機熱備的切換方式可以為主備方式,即一臺服務(wù)器處于激活狀態(tài)而另一臺服務(wù)器處于備用狀態(tài);也可以為雙主機方式,即兩臺服務(wù)器互為主備狀態(tài)。所述系統(tǒng)還可以包括消息處理終端、外部服務(wù)器或者其他部分。參考圖1所示,所述服務(wù)器備災(zāi)處理方法可以包括以下步驟:

步驟s110.所述仲裁機通過一心跳信道監(jiān)控所述主服務(wù)器和所述備服務(wù)器的運行狀態(tài)并判斷所述主服務(wù)器是否宕機;

步驟s120.在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理一消息處理終端的消息;

步驟s130.在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息;

其中,所述主服務(wù)器和所述備服務(wù)器的預(yù)設(shè)隊列均包括未報隊列、未決隊列及已決隊列,所述未報隊列用于記錄接收但未發(fā)送的消息,所述未決隊列用于記錄已發(fā)送但未確收的消息,所述已決隊列用于記錄已確收的消息。

本公開提供的一種服務(wù)器備災(zāi)處理方法中,通過所述仲裁機判斷所述主服務(wù)器是否宕機;在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息;在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息。一方面,在主服務(wù)器宕機時,通過控制備服務(wù)器切換為主服務(wù)器,從而能夠保證主服務(wù)器宕機時任何消息都不會消失;另一方面,取消了主備服務(wù)器之間的同步通信,避免了每個進入服務(wù)器的消息都要在主服務(wù)器和備服務(wù)器之間轉(zhuǎn)發(fā)相互確認,提高了消息處理的速度;另一方面,取消了主服務(wù)器和備服務(wù)器之間的同步通信,消除了備服務(wù)器宕機時對主服務(wù)器的影響,提高了消息處理效率和可靠性。

下面,將參考圖2至圖6所示對本示例實施例中的服務(wù)器備災(zāi)處理方法作進一步說明。

在步驟s110中,所述仲裁機通過一心跳信道監(jiān)控所述主服務(wù)器和所述備服務(wù)器的運行狀態(tài)并判斷所述主服務(wù)器是否宕機。

本示例實施方式中,所述仲裁機可以為冷備仲裁機,也可以為熱備仲裁機,所述仲裁機可以用于監(jiān)控主服務(wù)器和備服務(wù)器的運行狀態(tài),也可以用于分配服務(wù)器的角色,還可以用于控制主服務(wù)器與備服務(wù)器之間的切換。舉例來說,仲裁機可以通過心跳信道發(fā)送心跳包,以檢測主服務(wù)器和備服務(wù)器的運行狀態(tài),其中,心跳包可以為客戶端和服務(wù)器之間定時通知對方自己狀態(tài)的信號,心跳包的內(nèi)容可以是自定義的命令字或者代碼或者是只包含包頭的空包,本示例性實施例中對此不作特殊限定。例如,有些通信軟件長時間不使用,就可以定時發(fā)送心跳包,以此來判斷它的狀態(tài)是在線還是離線。仲裁機可以參考服務(wù)器的啟動順序、硬件配置、ip大小以及服務(wù)器性能等信息為每個服務(wù)器分配角色。主服務(wù)器和備服務(wù)器的內(nèi)部結(jié)構(gòu)是相同的,但是可以根據(jù)不同模式啟動不同的模塊,運行不同的邏輯。本示例實施方式中,也可以通過仲裁機發(fā)送心跳包,通過與判斷主服務(wù)器是否宕機的相同的判斷方法判斷所述備服務(wù)器是否宕機。

此外,本示例實施方式中,判斷所述主服務(wù)器是否宕機可以包括:

所述仲裁機通過所述心跳信道監(jiān)控所述主服務(wù)器的運行狀態(tài)并判斷是否接收到所述主服務(wù)器的心跳;

在判斷連續(xù)預(yù)設(shè)次數(shù)未接收到所述主服務(wù)器的心跳時,判斷所述主服務(wù)器宕機。

本示例實施方式中,心跳包發(fā)送方可以為主服務(wù)器,接收方可以為客戶端。在主服務(wù)器發(fā)送完心跳包后,可以通過所述心跳信道判斷是否接收到主服務(wù)器的心跳。在這個過程中,主服務(wù)器可以按照預(yù)設(shè)的時間間隔連續(xù)發(fā)送多個心跳包。如果接收到一個或多個主服務(wù)器發(fā)送的心跳包,則可以認為主服務(wù)器在線,此時可以向主服務(wù)器發(fā)送消息;如果連續(xù)預(yù)設(shè)次數(shù)未接收到主服務(wù)器發(fā)送的心跳時,可以認為主服務(wù)器已經(jīng)掉線,即主服務(wù)器已經(jīng)宕機。在判斷未接收到主服務(wù)器的心跳時,可以根據(jù)用戶需要自定義設(shè)置一預(yù)設(shè)次數(shù),例如5次或者10次;也可以設(shè)置一個具體地預(yù)設(shè)時間,例如2分鐘或者5分鐘等,還可以通過其他方式判斷服務(wù)器是否宕機,本示例實施例中對此不作特殊限定。當連續(xù)超過5次,或者是超過2分鐘都未檢測到主服務(wù)器的心跳時,可以確定主服務(wù)器宕機。當用戶要求較高時,可以將預(yù)設(shè)次數(shù)設(shè)置的更少或者是將預(yù)設(shè)時間設(shè)置的更短。

本示例實施方式中,也可以根據(jù)判斷主服務(wù)器是否宕機的方法確定備服務(wù)器是否宕機。當連續(xù)n次未收到所述主服務(wù)器心跳,則判定所述主服務(wù)器宕機,當連續(xù)m次未收到所述備服務(wù)器心跳,則判定所述備服務(wù)器宕機,其中n、m為自然數(shù),n不大于m,m、n也可以相同。除此之外,還可以通過硬件檢測與心跳檢測結(jié)合監(jiān)控當前服務(wù)器是否宕機,還可以通過仲裁機結(jié)合未宕機服務(wù)器雙重確認當前服務(wù)器是否宕機。例如,在仲裁機判斷出主服務(wù)器疑似宕機之后,命令完好的備服務(wù)器嘗試聯(lián)絡(luò)所述主服務(wù)器,若所述備服務(wù)器聯(lián)絡(luò)所述主服務(wù)器連續(xù)失敗3次,則可以判定所述主服務(wù)器宕機。

在步驟s120中,在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理一消息處理終端的消息。

本示例實施方式中,當未檢測到主服務(wù)器的心跳未超過預(yù)設(shè)次數(shù)或者是未超過預(yù)設(shè)時間時,確定所述主服務(wù)器在線,同時控制主服務(wù)器啟動與主服務(wù)器對應(yīng)的預(yù)設(shè)隊列,該預(yù)設(shè)隊列可以與消息處理模塊相對應(yīng)以接收和處理外部消息處理終端的請求信息。在此過程中,備服務(wù)器可以為正常狀態(tài),也可以為宕機狀態(tài)。本示例實施方式中,備服務(wù)器宕機時,不會對主服務(wù)器的運行狀態(tài)造成任何影響,即主服務(wù)器仍然可以正常工作??梢员苊獬霈F(xiàn)現(xiàn)有技術(shù)中,由于主備消息同步通信的設(shè)計而導致在備服務(wù)器宕機的情況下,處于正常狀態(tài)的主服務(wù)器因為收不到備服務(wù)器對消息同步請求的響應(yīng)消息而暫停服務(wù)的情況,從而提高了服務(wù)器處理消息的效率。

此外,本示例實施方式中,啟動所述主服務(wù)器的預(yù)設(shè)隊列可以包括:

接收所述消息處理終端的消息并將所述消息移到所述主服務(wù)器的未報隊列;

在將所述消息移到所述主服務(wù)器的未報隊列后報送消息;

判斷所述主服務(wù)器是否接收到外部服務(wù)器的響應(yīng)消息,若是則將所述消息移到所述主服務(wù)器的已決隊列并從所述主服務(wù)器的已決隊列中刪除消息,若否則將所述消息移到所述主服務(wù)器的未決隊列。

本示例實施方式中,所述主服務(wù)器的預(yù)設(shè)隊列可以對應(yīng)主服務(wù)器的消息處理模塊,主服務(wù)器的消息處理模塊可以包括第一消息報送模塊、第一未決處理模塊、第一消息處理模塊,所述主服務(wù)器的消息處理模塊中的第一消息報送模塊、第一未決處理模塊、第一消息處理模塊分別對應(yīng)主服務(wù)器的未報隊列、未決隊列、已決隊列;其中,主服務(wù)器可以通過未報隊列記錄接收到消息處理終端的消息,通過未決隊列記錄已經(jīng)發(fā)送但是未收到外部服務(wù)器響應(yīng)的消息,通過已決隊列記錄收到外部服務(wù)器響應(yīng)的已經(jīng)確認接收的消息。

本示例實施方式中,參考圖3所示,當主服務(wù)器接收到消息處理終端的消息時,可以首先將所述消息移動到所述未報隊列并啟動第一消息報送模塊,在將所述消息移動到所述未報隊列后報送接收到的消息,接下來可以判斷是否接收到外部服務(wù)器的響應(yīng)消息;進一步地,當接收到外部服務(wù)器的響應(yīng)消息時,可以確認消息已經(jīng)發(fā)送至外部服務(wù)器,且外部服務(wù)器已經(jīng)接收該消息,因此可以啟動第一消息處理模塊并將消息移到已決隊列中。在將消息移到已決隊列之后,表明該消息已經(jīng)經(jīng)過處理,主服務(wù)器可以對對應(yīng)已決隊列中的消息進行實時更新,在同時接收到外部服務(wù)器的最終響應(yīng)消息時,可以從對應(yīng)的已決隊列中刪除該消息,完成消息處理的整個過程。在該過程中,可以逐條刪除已決隊列中的消息,也可以在已決隊列中的消息超過一定數(shù)量時進行批量刪除,本示例性實施例中對此不作特殊限定。進一步地,在未接收到外部服務(wù)器的響應(yīng)消息時,由于不知道消息是否已經(jīng)發(fā)送至外部服務(wù)器,因此可以將消息移到未決隊列但是并不啟動第一未決處理模塊。本示例實施方式中,通過將接收到的消息用不同的隊列進行分類,使主服務(wù)器可以全速處理消息,提高了消息處理的效率。

在步驟s130中,在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息。

本示例實施方式中,在檢測未接收到主服務(wù)器的心跳超過預(yù)設(shè)次數(shù)或者預(yù)設(shè)時間時,可以確定主服務(wù)器宕機或者處于離線狀態(tài),同時可以控制備服務(wù)器切換為當前主服務(wù)器,并啟動備服務(wù)器的預(yù)設(shè)隊列處理消息終端的消息。其中,所述備服務(wù)器的預(yù)設(shè)隊列可以與消息處理模塊相對應(yīng)。備服務(wù)器的預(yù)設(shè)隊列可以與所述主服務(wù)器的預(yù)設(shè)隊列相同,即包括未報隊列、未決隊列、已決隊列。在備服務(wù)器切換為主服務(wù)器時,可以處理新接收的消息,也可以處理宕機的主服務(wù)器未處理的消息。本示例實施方式中,通過在主服務(wù)器宕機時,將備服務(wù)器切換為主服務(wù)器的模式,避免了現(xiàn)有技術(shù)中在主服務(wù)器宕機時出現(xiàn)的漏發(fā)消息或者是重復(fù)發(fā)送消息的情況,提高了消息處理的可靠性。

此外,本示例實施方式中,在所述備服務(wù)器切換為所述主服務(wù)器時,所述方法還可以包括:

在所述主服務(wù)器宕機后,判斷是否存在未決消息;

若是,則優(yōu)先處理所述未決消息;

在處理所述未決消息后,啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理消息。本示例實施方式中,在備服務(wù)器切換為主服務(wù)器之后,可以先通過查詢外部服務(wù)器判斷主服務(wù)器宕機后是否存在不確定主服務(wù)器是否處理過的消息,即未決消息。在判斷出存在所述未決消息時,備服務(wù)器可以優(yōu)先處理待報送的未決消息,將未報送的未決消息補充發(fā)送;在未決消息處理完成后,備服務(wù)器即可啟動主服務(wù)器模式組件,啟動所述備服務(wù)器的預(yù)設(shè)隊列,執(zhí)行正常的主備切換之后的消息處理流程。本示例實施方式中,通過優(yōu)先處理未決消息,避免了現(xiàn)有技術(shù)中在主服務(wù)器宕機時出現(xiàn)的漏發(fā)消息的情況,提高了消息傳輸?shù)臏蚀_率及可靠性。

此外,本示例實施方式中,啟動所述備服務(wù)器的預(yù)設(shè)隊列可以包括:

接收所述消息處理終端的消息并將所述消息移到所述備服務(wù)器的未決隊列;

在將所述消息移到所述備服務(wù)器的未決隊列后,判斷所述備服務(wù)器是否接收到外部服務(wù)器的響應(yīng)消息;

若是,則將所述消息移到所述備服務(wù)器的已決隊列并從所述備服務(wù)器的已決隊列中刪除消息。

本示例實施方式中,所述備服務(wù)器的預(yù)設(shè)隊列可以與備服務(wù)器的消息處理模塊相對應(yīng),消息處理模塊可以包括第二消息報送模塊、第二未決處理模塊、第二消息處理模塊,所述第二消息報送模塊、第二未決處理模塊、第二消息處理模塊分別對應(yīng)備服務(wù)器的未報隊列、未決隊列、已決隊列。由于不啟動備服務(wù)器的消息處理模塊中的第二消息報送模塊,因此備服務(wù)器只能記錄接收到的消息而不能對消息處理終端的消息進行報送。參考圖4所示,當備服務(wù)器接收到消息處理終端的消息時,可以直接將所述消息移動到所述備服務(wù)器的未決隊列,然后可以啟動第二未決模塊判斷備服務(wù)器是否接收到外部服務(wù)器的響應(yīng)消息;進一步,當接收到外部服務(wù)器的響應(yīng)消息時,可以確認消息已經(jīng)發(fā)送至外部服務(wù)器,且外部服務(wù)器已經(jīng)接收該消息,因此可以啟動第二消息處理模塊并將消息移到已決隊列中。在將消息移到已決隊列之后,表明該消息已經(jīng)經(jīng)過處理,備服務(wù)器可以對對應(yīng)已決隊列中的消息進行實時更新,在同時接收到外部服務(wù)器的最終響應(yīng)消息時,可以從對應(yīng)的已決隊列中刪除該消息,完成消息處理的整個過程。在該過程中,可以逐條刪除已決隊列中的消息,也可以在已決隊列中的消息超過一定數(shù)量時進行批量刪除,本示例性實施例中對此不作特殊限定。

本示例實施方式中,通過主服務(wù)器和備服務(wù)器各自對應(yīng)的未報隊列、未決隊列、已決隊列等消息隊列機制,通過主備服務(wù)器的不同模式,將接收到的消息移到不同的消息隊列中,并啟用不同的運行模塊及隊列機制處理消息。這種方式避免了備服務(wù)器從主服務(wù)器獲取消息和同步消息的步驟,而是改用黑箱法則,將主服務(wù)器看成一個不透明的黑箱,主服務(wù)器與備服務(wù)器之間可以不直接通信,只需要從消息處理服務(wù)器系統(tǒng)的外部接口觀察輸入輸出,利用未決隊列、已決隊列機制維護了數(shù)據(jù)的滯后一致性,達到了同步數(shù)據(jù)的目的。本示例實施方式中,主服務(wù)器可以全速的處理消息,完全不必考慮備服務(wù)器的存在,備服務(wù)器可以專注于同步數(shù)據(jù)。這種方式既免除了主服務(wù)器同步數(shù)據(jù)的負擔,又維護了消息的滯后一致性,達到了消息不重復(fù)不丟棄的高可靠性,從而使得整個消息處理系統(tǒng)做到了既高效又可靠,同時將消息處理的性能做到了最大化。

此外,本示例實施方式中,控制所述備服務(wù)器切換為所述主服務(wù)器可以包括:

接收所述消息處理終端的消息并將所述消息移到所述備服務(wù)器的未報隊列;

根據(jù)每個消息的編號通過查詢服務(wù)器確定每個未決消息是否報送成功;

通過將報送成功的消息移到所述備服務(wù)器的已決隊列,將未報的消息移到所述備服務(wù)器的未報隊列的方式清理所述備服務(wù)器的未決隊列;

在清理所述備服務(wù)器的未決隊列后,報送消息以控制所述備服務(wù)器切換為所述主服務(wù)器。

本示例實施方式中,如圖6所示,在所述主服務(wù)器宕機后,控制所述備服務(wù)器切換為主服務(wù)器時,由于不能確定主服務(wù)器是否處理過該消息,因此可以直接啟動第二消息報送模塊,將新接收的消息移到所述備服務(wù)器的未報隊列。接下來可以通過外部查詢服務(wù)器根據(jù)未決隊列中接收并存儲的每個消息對應(yīng)的唯一編號,以確定備服務(wù)器的未決隊列中的每個未決消息是否已經(jīng)報送成功,即判斷每個消息是否已經(jīng)成功發(fā)送至外部服務(wù)器。在確定消息已經(jīng)成功發(fā)送至服務(wù)器并接收到服務(wù)器的響應(yīng)消息時,將該消息移到備服務(wù)器的已決隊列;在確定消息未報送成功時,將該消息移到備服務(wù)器的未報隊列。需要說明的是,此處的未報送成功可以為未對消息進行報送及對消息進行了報送但是并未接收到外部服務(wù)器的響應(yīng)消息。在清理完未決隊列之后,可以啟動第二消息報送模塊進行消息報送,控制之前的備服務(wù)器完全切換為當前主服務(wù)器,并按照主服務(wù)器的運行模式處理接收到的消息。

本示例實施方式中,在主備服務(wù)器切換過程中,可以通過循環(huán)或者函數(shù)對初始未決隊列中所有的未決消息逐一進行判斷并分類,以此實現(xiàn)清理未決隊列的目的。在主服務(wù)器宕機之后,通過對未決消息的分類處理,可以保障主備切換時任何一條消息都不會丟失、也不會重復(fù)處理,從而更好地保證消息傳輸?shù)耐暾?,提高消息處理效率?/p>

此外,本示例實施方式中,所述方法還可以包括:

恢復(fù)宕機的所述主服務(wù)器或者所述備服務(wù)器;

將恢復(fù)后的所述主服務(wù)器或者所述備服務(wù)器作為備服務(wù)器啟動。

本示例實施方式中,在主服務(wù)器或者備服務(wù)器宕機時,可以通過重啟電源或者是硬件檢測或者其他方式進行自動或者人工手動恢復(fù)處于宕機狀態(tài)的服務(wù)器。在宕機的服務(wù)器恢復(fù)正常之后,將恢復(fù)后的服務(wù)器確定為備服務(wù)器。舉例來說,檢測到主服務(wù)器宕機時,可以控制備服務(wù)器通過上述方式切換為當前主服務(wù)器運行,然后通過重啟電源或者是其他任意方式恢復(fù)宕機的主服務(wù)器,在宕機的主服務(wù)器恢復(fù)正常工作模式之后,原本的主服務(wù)器將作為備服務(wù)器使用;檢測到備服務(wù)器宕機時,不會對主服務(wù)器的運行有任何影響,主服務(wù)器仍然可以正常運行,可以通過重啟電源或者是其他任意方式恢復(fù)宕機的備服務(wù)器,在宕機的備服務(wù)器恢復(fù)正常之后,原本的備服務(wù)器仍然作為備服務(wù)器使用。

此外,本示例實施方式中,所述方法還可以包括:

將先啟動的服務(wù)器確定為所述主服務(wù)器,將后啟動的服務(wù)器確定為所述備服務(wù)器。

本示例實施方式中,在系統(tǒng)啟動時,即主服務(wù)器和備服務(wù)器開始啟動時,可以將先啟動的服務(wù)器確定為主服務(wù)器,而將后啟動的服務(wù)器確定為備服務(wù)器。本示例實施方式中,主服務(wù)器和備服務(wù)器并不是固定不變的,而是根據(jù)啟動的相對先后順序而改變,即系統(tǒng)中的服務(wù)器互為主備模式。例如,在初始主服務(wù)器宕機后,可以認為初始備服務(wù)器先啟動,宕機恢復(fù)后的初始主服務(wù)器后啟動,因此可以將初始備服務(wù)器確定為當前主服務(wù)器而將宕機恢復(fù)后的初始主服務(wù)器確定為當前備服務(wù)器。主服務(wù)器和備服務(wù)器的確定可以是系統(tǒng)正常啟動時確定,也可以在消息處理過程中由于停電或者是其他故障導致的中斷結(jié)束時確定,還可以在某一服務(wù)器宕機時確定,本示例性實施例對此不作特殊限定。

此外,本示例實施方式中,所述方法還可以包括:

在判斷所述主服務(wù)器和所述備服務(wù)器未宕機時,所述主服務(wù)器和所述備服務(wù)器同時接收所述消息處理終端的消息以及所述外部服務(wù)器的響應(yīng)消息。

本示例實施方式中,在主服務(wù)器和備服務(wù)器都未宕機且正常工作時,主服務(wù)器和備服務(wù)器可以同時接收同一消息處理終端的消息,也可以同時接收外部服務(wù)器的響應(yīng)消息,以此保證主備服務(wù)器接收數(shù)據(jù)的一致性。主服務(wù)器可以對接收到的消息進行報送,也可以記錄,備服務(wù)器對接收到的消息只可以記錄而不能進行報送。但是主服務(wù)器和備服務(wù)器通過對消息進行未決、已決分類的方法,維護數(shù)據(jù)的滯后一致性,即數(shù)據(jù)雖然不是時刻一致的,但是延遲任意時間后,最終會達到一致的狀態(tài),從而保證了發(fā)送數(shù)據(jù)的一致性,此處的延遲時間一般為毫秒。通過這種方式,可以用主備切換時的時間損耗,提升消息處理速度,從而提高消息處理效率。

此外,上述附圖僅是根據(jù)本發(fā)明示例性實施例的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時間順序。另外,也易于理解,這些處理可以是例如在多個模塊中同步或異步執(zhí)行的。

本示例實施方式中還提供了一種服務(wù)器備災(zāi)處理裝置,可以應(yīng)用于一主服務(wù)器、一備服務(wù)器和一仲裁機組成的系統(tǒng),所述服務(wù)器備災(zāi)處理裝置200可以包括:

宕機判斷模塊201,可以用于通過一心跳信道監(jiān)控所述主服務(wù)器和所述備服務(wù)器的運行狀態(tài)并判斷所述主服務(wù)器是否宕機;

主服務(wù)器模塊202,可以用于在判斷所述主服務(wù)器未宕機時,控制所述主服務(wù)器啟動所述主服務(wù)器的預(yù)設(shè)隊列以處理一消息處理終端的消息;

主備切換模塊203,可以用于在判斷所述主服務(wù)器宕機時,控制所述備服務(wù)器切換為所述主服務(wù)器并啟動所述備服務(wù)器的預(yù)設(shè)隊列以處理所述消息處理終端的消息。

上述服務(wù)器備災(zāi)處理裝置中各模塊的具體細節(jié)已經(jīng)在對應(yīng)的服務(wù)器備災(zāi)處理方法中進行了詳細描述,因此此處不再贅述。

本示例實施方式中還提供了一種存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)上述的服務(wù)器備災(zāi)處理方法。

存儲介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。存儲介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。

存儲介質(zhì)中包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜、射頻等等,或者上述的任意合適的組合。

本示例實施方式中還提供了一種電子設(shè)備,參考圖8所示,該電子設(shè)備10包括:處理組件11,其進一步可以包括一個或多個處理器,以及由存儲器12所代表的存儲器資源,用于存儲可由處理組件11執(zhí)行的指令,例如應(yīng)用程序。存儲器12中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。此外,處理組件11被配置為執(zhí)行指令,以執(zhí)行上述方法。

該電子設(shè)備10還可以包括:一個電源組件,電源組件被配置成對執(zhí)行電子設(shè)備10進行電源管理;一個有線或無線網(wǎng)絡(luò)接口13,被配置成將電子設(shè)備10連接到網(wǎng)絡(luò);以及一個輸入輸出(i/o)接口14。該電子設(shè)備10可以操作基于存儲在存儲器12的操作系統(tǒng),例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。

此外,上述附圖僅是根據(jù)本發(fā)明示例性實施例的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時間順序。另外,也易于理解,這些處理可以是例如在多個模塊中同步或異步執(zhí)行的。

應(yīng)當注意,盡管在上文詳細描述中提及了用于動作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。

此外,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。

通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。

本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宜丰县| 鹤壁市| 张北县| 辽源市| 当雄县| 措美县| 安岳县| 富民县| 乡城县| 和龙市| 宁蒗| 十堰市| 岳普湖县| 荔波县| 万全县| 五台县| 湘阴县| 浑源县| 武邑县| 新晃| 金昌市| 林州市| 雷山县| 南昌县| 呼和浩特市| 清远市| 金坛市| 京山县| 沙田区| 长顺县| 广南县| 邯郸市| 昌图县| 鄂州市| 桐梓县| 合山市| 开平市| 正镶白旗| 深泽县| 呼伦贝尔市| 保山市|