專利名稱:一種消息推送方法、服務(wù)器、客戶端及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及消息傳送技術(shù),特別是指一種消息推送方法、服務(wù)器、客戶端及系統(tǒng)。
背景技術(shù):
如圖1所示,現(xiàn)有的消息推送方法包括(1)客戶端到推送服務(wù)器綁定推送服務(wù)。(2)推送服務(wù)器給客戶端返回Client ID,推送服務(wù)器會使用Client ID來標識客戶端。(3)客戶端登錄業(yè)務(wù)服務(wù)器,同時更新推送服務(wù)器的Client ID與推送服務(wù)用戶的綁定關(guān)系??蛻舳诵枰诿看蜟lient ID和推送服務(wù)用戶的綁定關(guān)系發(fā)生變化后登錄業(yè)務(wù)服務(wù)器來更新Client ID,以保證消息的及時正確推送。(4)業(yè)務(wù)服務(wù)器有消息需要發(fā)送客戶端時,將此消息投遞到推送服務(wù)器,由推送服務(wù)器將消息推送至客戶端。由于客戶端連接數(shù)較多或者消息推送量較多,從而容易導(dǎo)致推送服務(wù)器負載較大。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種消息推送方法、服務(wù)器、客戶端及系統(tǒng),避免了推送服務(wù)器負載較大而出現(xiàn)崩潰現(xiàn)象。為解決上述技術(shù)問題,本發(fā)明的實施例提供一種消息推送方法,包括健康檢查服務(wù)器根據(jù)客戶端的連接請求與所述客戶端建立連接,若連接成功,則所述健康檢查服務(wù)器接收所述客戶端發(fā)送的健康檢查請求消息,并根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息,否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;若連接不成功,則所述客戶端通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息。其中,所述健康檢查服務(wù)器接收所述客戶端發(fā)送的健康檢查請求消息的步驟包括所述健康檢查服務(wù)器根據(jù)所述客戶端的連接請求向所述客戶端發(fā)送初始化信息;所述健康檢查服務(wù)器接收所述客戶端根據(jù)初始化信息發(fā)送的健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。其中,所述健康檢查服務(wù)器監(jiān)控到所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息后,增大所述客戶端獲取初始化信息的輪詢時間間隔以及所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔;否則減小所述客戶端獲取初始化信息的輪詢時間間隔和/或所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔。所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息后還包括所述客戶端忽略所述反饋測試消息。其中,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息的步驟包括若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息, 則所述客戶端向所述第一推送服務(wù)器發(fā)送綁定推送服務(wù)請求,并接收所述第一推送服務(wù)器返回的第一客戶端標識信息;所述客戶端向業(yè)務(wù)服務(wù)器發(fā)送所述第一客戶端標識信息;所述客戶端接收所述業(yè)務(wù)服務(wù)器根據(jù)所述第一客戶端標識信息通過所述第一推送服務(wù)器發(fā)送的推送消息。其中,所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息的步驟包括所述客戶端向所述第二推送服務(wù)器發(fā)送綁定推送服務(wù)請求,并接收所述第二推送服務(wù)器返回的第二客戶端標識信息;所述客戶端向業(yè)務(wù)服務(wù)器發(fā)送所述第二客戶端標識信息;所述客戶端接收所述業(yè)務(wù)服務(wù)器根據(jù)所述第二客戶端標識信息通過所述第二推送服務(wù)器發(fā)送的推送消息。其中,所述客戶端在與所述第一推送服務(wù)器連接之前已與所述第二推送服務(wù)器連接時,所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息后,還包括斷開與所述第二推送服務(wù)器的連接。其中,所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息后, 還包括所述客戶端根據(jù)所述推送消息到業(yè)務(wù)服務(wù)器上獲取消息內(nèi)容。其中,所述客戶端根據(jù)所述推送消息到業(yè)務(wù)服務(wù)器上獲取消息內(nèi)容后,還包括設(shè)置所述推送消息對應(yīng)的消息內(nèi)容為空。本發(fā)明的實施例還提供一種服務(wù)器,包括連接模塊,用于根據(jù)客戶端的連接請求與所述客戶端建立連接;第一處理模塊,用于在所述連接模塊與所述客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;第二處理模塊,用于在所述連接模塊與所述客戶端連接不成功時,則使所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。其中,所述第一處理模塊接收所述客戶端發(fā)送的健康檢查請求消息時,具體根據(jù)所述客戶端的連接請求向所述客戶端發(fā)送初始化信息,并接收所述客戶端根據(jù)初始化信息
6發(fā)送的健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。本發(fā)明的實施例還提供一種客戶端,包括連接模塊,用于向健康檢查服務(wù)器發(fā)送連接請求;健康檢查定時器模塊,用于在所述連接模塊與所述健康檢查服務(wù)器連接成功時, 向所述健康檢查服務(wù)器發(fā)送健康檢查請求消息,使所述健康檢查服務(wù)器根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器;接收模塊,用于在收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息時,通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;或者在所述連接模塊與所述健康檢查服務(wù)器連接不成功,通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。上述客戶端還包括控制定時器模塊,用于在所述連接模塊與所述健康檢查服務(wù)器連接成功時,獲取所述健康檢查服務(wù)器根據(jù)所述連接請求返回的初始化信息;所述健康檢查定時器模塊根據(jù)所述初始化信息向所述健康檢查服務(wù)器發(fā)送健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。本發(fā)明的實施例還提供一種消息推送系統(tǒng),包括健康檢查服務(wù)器,第一推送服務(wù)器和第二推送服務(wù)器,其中,健康檢查服務(wù)器用于根據(jù)客戶端的連接請求與所述客戶端建立連接,在與所述客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;所述健康檢查服務(wù)器與所述客戶端連接不成功時,則使所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。本發(fā)明的上述技術(shù)方案的有益效果如下上述方案中,通過加入一健康檢查服務(wù)器和第二推送服務(wù)器,在該健康檢查服務(wù)器與客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,所述健康檢查服務(wù)器根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;在該健康檢查服務(wù)器與客戶端連接不成功時,所述客戶端直接通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息;也就是說通過客戶端調(diào)用
7健康檢查服務(wù)器來發(fā)送測試消息給第一推送服務(wù)器,從客戶端是否能收到所述測試消息的反饋測試消息來判斷第一推送服務(wù)器的健康狀況,在第一推送服務(wù)器健康狀況不佳時,及時啟用第二推送服務(wù)器,使第一推送服務(wù)器的負載得到有效降低,避免了推送服務(wù)器負載較大而出現(xiàn)崩潰現(xiàn)象。
圖1為現(xiàn)有的消息推送方法流程圖;圖2為本發(fā)明的消息推送方法所應(yīng)用的系統(tǒng)架構(gòu)圖;圖3為本發(fā)明的消息推送方法實施例流程圖;圖4為本發(fā)明的消息推送方法的一具體實現(xiàn)實例流程圖;圖5為本發(fā)明的服務(wù)器的結(jié)構(gòu)示意圖;圖6為本發(fā)明的客戶端的結(jié)構(gòu)示意圖;圖7為本發(fā)明的消息推送系統(tǒng)架構(gòu)示意圖。
具體實施例方式為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖及具體實施例進行詳細描述。本發(fā)明針對現(xiàn)有技術(shù)中,由于客戶端連接數(shù)較多或者消息推送量較多,從而容易導(dǎo)致推送服務(wù)器負載較大問題,提供一種消息推送方法、服務(wù)器、客戶端及系統(tǒng),避免了推送服務(wù)器負載較大而出現(xiàn)崩潰現(xiàn)象。如圖2、圖3所示,本發(fā)明的消息推送方法,包括健康檢查服務(wù)器根據(jù)客戶端的連接請求與所述客戶端建立連接,若連接成功,則所述健康檢查服務(wù)器接收所述客戶端發(fā)送的健康檢查請求消息,并根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;若連接不成功,則所述客戶端通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息。本發(fā)明的上述方案通過加入一健康檢查服務(wù)器和第二推送服務(wù)器,通過客戶端調(diào)用健康檢查服務(wù)器來發(fā)送測試消息給第一推送服務(wù)器,從客戶端是否能收到所述測試消息來判斷第一推送服務(wù)器的健康狀況,在第一推送服務(wù)器健康狀況不佳時,及時啟用第二推送服務(wù)器,使第一推送服務(wù)器的負載得到有效降低,避免了推送服務(wù)器負載較大而出現(xiàn)崩潰現(xiàn)象。上述實施例中,健康檢查服務(wù)器接收客戶端發(fā)送的健康檢查請求消息的步驟包括所述健康檢查服務(wù)器根據(jù)所述客戶端的連接請求向所述客戶端發(fā)送初始化信息;所述健康檢查服務(wù)器接收所述客戶端根據(jù)初始化信息發(fā)送的健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。進一步的,上述實施例中,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息的步驟包括若所述客戶端收到所述第一推送服務(wù)器返回的反饋測試消息,則所述客戶端向所述第一推送服務(wù)器發(fā)送綁定推送服務(wù)請求,并接收所述第一推送服務(wù)器返回的第一客戶端標識信息(即,第一推送服務(wù)器返回的Client ID);所述客戶端向業(yè)務(wù)服務(wù)器發(fā)送所述第一客戶端標識信息;所述客戶端接收業(yè)務(wù)服務(wù)器根據(jù)所述第一客戶端標識信息通過所述第一推送服務(wù)器發(fā)送的推送消息。另外,所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息的步驟包括所述客戶端向所述第二推送服務(wù)器發(fā)送綁定推送服務(wù)請求,并接收所述第二推送服務(wù)器返回的第二客戶端標識信息(即第二推送服務(wù)器返回的Client ID);所述客戶端向業(yè)務(wù)服務(wù)器發(fā)送所述第二客戶端標識信息;所述客戶端接收,所述業(yè)務(wù)服務(wù)器根據(jù)所述第二客戶端標識信息通過所述第二推送服務(wù)器發(fā)送的推送消息。也就是說,當(dāng)業(yè)務(wù)服務(wù)器產(chǎn)生新的推送消息時,通過判斷其中的Client ID是否存在來決定推送消息投遞給哪個推送服務(wù)器;客戶端連接第一推送服務(wù)器和/或第二推送服務(wù)器去獲取Client ID,客戶端獲取Client ID后,連接到業(yè)務(wù)服務(wù)器更新Client ID;例如當(dāng)存在第一推送服務(wù)器的Client ID時,業(yè)務(wù)服務(wù)器將推送消息投遞給第一推送服務(wù)器,第一推送服務(wù)器再將推送消息推送至客戶端;當(dāng)存在第二推送服務(wù)器的 Client ID時,業(yè)務(wù)服務(wù)器將推送消息投遞給第二推送服務(wù)器,第二推送服務(wù)器再將推送消息推送至客戶端;當(dāng)?shù)谝煌扑头?wù)器和第二推送服務(wù)器的Client ID都存在時,業(yè)務(wù)服務(wù)器將推送消息投遞給第一推送服務(wù)器和第二推送服務(wù)器,第一推送服務(wù)器和第二推送服務(wù)器均會將推送消息推送至客戶端,此時,優(yōu)先方案為若第一推送服務(wù)器和第二推送服務(wù)器將同一消息重復(fù)推送給了客戶端,客戶端在收到第一個推送消息后,根據(jù)消息的ID地址到業(yè)務(wù)服務(wù)器獲取消息內(nèi)容,客戶端在收到第二個推送消息后,再到業(yè)務(wù)服務(wù)器上同樣的ID 地址獲取消息內(nèi)容時,此消息內(nèi)容已被取走,即客戶端根據(jù)所述推送消息到所述業(yè)務(wù)服務(wù)器上獲取消息內(nèi)容后,業(yè)務(wù)服務(wù)器將該推送消息對應(yīng)的消息內(nèi)容設(shè)置為空,這樣就避免了同樣的消息內(nèi)容重復(fù)傳輸?shù)那闆r(客戶端是收到了兩個推送消息,但收到推送消息對于客戶端是透明的,客戶端只知道收到了一個消息內(nèi)容)。本發(fā)明的上述方案通過在服務(wù)器端加入了健康檢查服務(wù)器,用于監(jiān)控第一推送服務(wù)器和第二推送服務(wù)器的健康狀況(負載能力),和提供客戶端所需的初始化信息,該初始化信息包括1、客戶端是能否直接使用第一推送服務(wù)器或第二推送服務(wù)器;2、客戶端獲取初始化信息的輪詢時間間隔;3、客戶端發(fā)送健康檢查請求的輪詢時間間隔;4、判斷第一推送服務(wù)器或第二推送服務(wù)器健康與否的超時時間等。若健康檢查服務(wù)器監(jiān)控到所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息后,可以增大所述客戶端獲取初始化信息的輪詢時間間隔以及所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,可以減輕客戶端與健康檢查服務(wù)器的負擔(dān);否則減小所述客戶端獲取初始化信息的輪詢時間間隔和/或所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔。所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息后還包括所述客戶端忽略該反饋測試消息。另外,在收到客戶端的健康查測請求后,投遞測試消息到第一推送服務(wù)器或第二推送服務(wù)器,健康檢查服務(wù)器監(jiān)控第一推送服務(wù)器的形式包括包括網(wǎng)絡(luò)連接數(shù),內(nèi)存使用情況,cpu使用情況,磁盤使用情況。下面結(jié)合圖4說明上述方法的具體實現(xiàn)實例以第一推送服務(wù)器為主推送服務(wù)器,第二推送服務(wù)器作為備用推送服務(wù)器為例1、客戶端連接健康檢查服務(wù)器;2、如未能連接上,則客戶端直接連接第二推送服務(wù)器,綁定推送關(guān)系,獲取第二推送服務(wù)器返回的Client ID,到業(yè)務(wù)服務(wù)器更新Client ID。同時,客戶端默認配置了與健康檢查服務(wù)器連接并獲取初始化信息的輪詢機制,即客戶端與第二推送服務(wù)器正常使用時, 客戶端仍然嘗試輪詢地連接健康查檢服務(wù)器,直到連接成功。2、如連接上,則健康檢查服務(wù)器反饋初始化信息給客戶端,告知客戶端第一推送服務(wù)器能否使用,如果第一推送服務(wù)器能夠使用,則客戶端連接第一推送服務(wù)器,綁定推送關(guān)系,獲取Client ID,到業(yè)務(wù)服務(wù)器更新Client ID,客戶端根據(jù)初始化信息,輪詢發(fā)送健康檢查請求到健康檢查服務(wù)器,檢健康檢查服務(wù)器投遞測試消息到第一推送服務(wù)器,第一推送服務(wù)器將測試消息的反饋測試消息推送到客戶端;2. 1客戶端如果收到此反饋測試消息,則證明第一推送服務(wù)器可用,如果此時客戶端已與第二推送服務(wù)器建立連接,則斷開客戶端與第二推送服務(wù)器的連接,并且客戶端在收到此反饋測試消息時,忽略此反饋測試消息(此反饋測試消息對客戶端而言是透明的)。2. 2客戶端如果未收到此測試消息(或多次未收到),則證明第一推送服務(wù)器不可用,則客戶端連接第二推送服務(wù)器,綁定推送關(guān)系,獲取Client ID,到業(yè)務(wù)服務(wù)器更新 Client ID。同時,客戶端根據(jù)初始化信息,繼續(xù)輪詢發(fā)送健康檢查請求到健康檢查服務(wù)器, 直到收到客戶端收到第一推送服務(wù)器發(fā)來的測試消息后斷開第二推送服務(wù)器的連接為止。另外健康檢查服務(wù)器根據(jù)實時監(jiān)控到的第一推送服務(wù)器的壓力,可以動態(tài)調(diào)整初始化信息,如第一推送服務(wù)器壓力較小,則可以增大客戶端的獲取初始化信息和/或發(fā)送健康檢查請求的輪詢間隔,同樣,如第一推送服務(wù)器壓力較大,則可以減小客戶端的獲取初始化信息和/或發(fā)送健康檢查請求的輪詢間隔。本發(fā)明的上述方法通過一健康檢查服務(wù)器對第一推送服務(wù)器和第二推送服務(wù)器的健康狀態(tài)進行判斷,并通知客戶端選擇其中一個健康的推送服務(wù)器進行推送消息,相比于傳統(tǒng)的只有一個推送服務(wù)器的方案,減輕了推送服務(wù)器的負載壓力,相比于簡單的一個推送服務(wù)器的方案,采用多個推送服務(wù)器,并動態(tài)地監(jiān)控了多個推送服務(wù)器的健康狀況,使得客戶端可以靈活的選擇健康的推送服務(wù)器進行推送消息,保證了推送消息的推送效率。如圖5所示,本發(fā)明的實施例還提供一種服務(wù)器51,如上述的健康檢查服務(wù)器,該服務(wù)器包括
連接模塊,用于根據(jù)客戶端的連接請求與所述客戶端建立連接;第一處 理模塊,用于在所述連接模塊與所述客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;第二處理模塊,用于在所述連接模塊與所述客戶端連接不成功時,則使所述客戶端通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息。其中,所述第一處理模塊接收所述客戶端發(fā)送的健康檢查請求消息時,具體根據(jù)所述客戶端的連接請求向所述客戶端發(fā)送初始化信息,并接收所述客戶端根據(jù)初始化信息發(fā)送的健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。具體來說,健康檢查服務(wù)器,用于監(jiān)控第一推送服務(wù)器和第二推送服務(wù)器的健康狀況(負載能力),和提供客戶端所需的初始化信息。健康檢查服務(wù)器監(jiān)控第一推送服務(wù)器的形式包括包括網(wǎng)絡(luò)連接數(shù),內(nèi)存使用情況,CPU使用情況,磁盤使用情況。另外,上述健康檢查服務(wù)器對第一推送服務(wù)器和第二推送服務(wù)器的健康狀態(tài)進行判斷,根據(jù)實時監(jiān)控到的第一推送服務(wù)器的壓力,可以動態(tài)調(diào)整初始化信息,如第一推送服務(wù)器壓力較小,則可以增大客戶端的獲取初始化信息和/或發(fā)送健康檢查請求的輪詢間隔,同樣,如第一推送服務(wù)器壓力較大,則可以減小客戶端的獲取初始化信息和/或發(fā)送健康檢查請求的輪詢間隔。該實施例通過健康檢查服務(wù)器對第一推送服務(wù)器和第二推送服務(wù)器的健康狀態(tài)進行判斷,并通知客戶端選擇其中一個健康的推送服務(wù)器進行推送消息,相比于傳統(tǒng)的只有一個推送服務(wù)器的方案,減輕了推送服務(wù)器的負載壓力,相比于簡單的一個推送服務(wù)器的方案,采用多個推送服務(wù)器,并動態(tài)地監(jiān)控了多個推送服務(wù)器的健康狀況,使得客戶端可以靈活的選擇健康的推送服務(wù)器進行推送消息,保證了推送消息的推送效率。如圖6、圖3所示,本發(fā)明的實施例還提供一種客戶端61,包括連接模塊,用于向健康檢查服務(wù)器發(fā)送連接請求;健康檢查定時器模塊,用于在連接模塊與所述健康檢查服務(wù)器連接成功時,向所述健康檢查服務(wù)器發(fā)送健康檢查請求消息,使所述健康檢查服務(wù)器根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器;接收模塊,用于在收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;或者在所述連接模塊與所述健康檢查服務(wù)器連接不成功,通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息。該客戶端還包括控制定時器模塊,用于在連接模塊與所述健康檢查服務(wù)器連接成功時,獲取所述健康檢查服務(wù)器根據(jù)所述連接請求返回的初始化信息; 所述健康檢查定時器模塊根據(jù)所述初始化信息向所述健康檢查服務(wù)器發(fā)送健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間??蛻舳思尤肓私】禉z查定時器模塊和控制定時器模塊,用于從健康檢查服務(wù)器獲取推送服務(wù)器的健康狀況,并作出相應(yīng)選擇。其中,控制定時器模塊用于連接到健康檢查服務(wù)器,獲取初始化信息。初始化信息包括1、客戶端是能否直接使用第一推送服務(wù)器或第二推送服務(wù)器; 2、控制定時器獲取初始化信息的輪詢時間間隔;3、健康檢查定時器發(fā)送健康檢查請求的輪詢時間間隔;4、健康檢查定時器判斷第一推送服務(wù)器或第二推送服務(wù)器健康與否的超時時間健康檢查定時器模塊具體用于發(fā)送HTTP的健康檢查請求到健康檢查服務(wù)器。如圖7所示,本發(fā)明的實施例還提供一種消息推送系統(tǒng),包括健康檢查服務(wù)器, 第一推送服務(wù)器和第二推送服務(wù)器,其中,健康檢查服務(wù)器,用于根據(jù)客戶端的連接請求與所述客戶端建立連接,在與所述客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;在與所述客戶端連接不成功時,則使所述客戶端通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息。進一步的,上述圖2-圖6中所示的健康檢查服務(wù)器和客戶端的所有實現(xiàn)方式均適用于本系統(tǒng)實施例中,也能達到相同的技術(shù)效果,在此不再贅述。以上所述是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種消息推送方法,其特征在于,包括健康檢查服務(wù)器根據(jù)客戶端的連接請求與所述客戶端建立連接,若連接成功,則所述健康檢查服務(wù)器接收所述客戶端發(fā)送的健康檢查請求消息,并根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息,否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;若連接不成功,則所述客戶端通過所述第二推送服務(wù)器接收所述業(yè)務(wù)服務(wù)器發(fā)送的推送消息。
2.根據(jù)權(quán)利要求1所述的消息推送方法,其特征在于,所述健康檢查服務(wù)器接收所述客戶端發(fā)送的健康檢查請求消息的步驟包括所述健康檢查服務(wù)器根據(jù)所述客戶端的連接請求向所述客戶端發(fā)送初始化信息;所述健康檢查服務(wù)器接收所述客戶端根據(jù)初始化信息發(fā)送的健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。
3.根據(jù)權(quán)利要求2所述的消息推送方法,其特征在于,所述健康檢查服務(wù)器監(jiān)控到所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息后,增大所述客戶端獲取初始化信息的輪詢時間間隔和/或所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔;否則減小所述客戶端獲取初始化信息的輪詢時間間隔和/或所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔。
4.根據(jù)權(quán)利要求1或2或3所述的消息推送方法,其特征在于,所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息后還包括所述客戶端忽略所述反饋測試消息。
5.根據(jù)權(quán)利要求1所述的消息推送方法,其特征在于,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息的步驟包括若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端向所述第一推送服務(wù)器發(fā)送綁定推送服務(wù)請求,并接收所述第一推送服務(wù)器返回的第一客戶端標識信息;所述客戶端向業(yè)務(wù)服務(wù)器發(fā)送所述第一客戶端標識信息;所述客戶端接收所述業(yè)務(wù)服務(wù)器根據(jù)所述第一客戶端標識信息通過所述第一推送服務(wù)器發(fā)送的推送消息。
6.根據(jù)權(quán)利要求1所述的消息推送方法,其特征在于,所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息的步驟包括所述客戶端向所述第二推送服務(wù)器發(fā)送綁定推送服務(wù)請求,并接收所述第二推送服務(wù)器返回的第二客戶端標識信息;所述客戶端向業(yè)務(wù)服務(wù)器發(fā)送所述第二客戶端標識信息;所述客戶端接收所述業(yè)務(wù)服務(wù)器根據(jù)所述第二客戶端標識信息通過所述第二推送服務(wù)器發(fā)送的推送消息。
7.根據(jù)權(quán)利要求1或2或3所述的消息推送方法,其特征在于,所述客戶端在與所述第一推送服務(wù)器連接之前已與所述第二推送服務(wù)器連接時,所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息后,還包括斷開與所述第二推送服務(wù)器的連接。
8.根據(jù)權(quán)利要求1或2或3所述的消息推送方法,其特征在于,所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息后,還包括所述客戶端根據(jù)所述推送消息到業(yè)務(wù)服務(wù)器上獲取消息內(nèi)容。
9.根據(jù)權(quán)利要求8所述的消息推送方法,其特征在于,所述客戶端根據(jù)所述推送消息到業(yè)務(wù)服務(wù)器上獲取消息內(nèi)容后,還包括設(shè)置所述推送消息對應(yīng)的消息內(nèi)容為空。
10.一種服務(wù)器,其特征在于,包括連接模塊,用于根據(jù)客戶端的連接請求與所述客戶端建立連接;第一處理模塊,用于在所述連接模塊與所述客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;第二處理模塊,用于在所述連接模塊與所述客戶端連接不成功時,則使所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。
11.根據(jù)權(quán)利要求10所述的服務(wù)器,其特征在于,所述第一處理模塊接收所述客戶端發(fā)送的健康檢查請求消息時,具體根據(jù)所述客戶端的連接請求向所述客戶端發(fā)送初始化信息,并接收所述客戶端根據(jù)初始化信息發(fā)送的健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。
12.—種客戶端,其特征在于,包括連接模塊,用于向健康檢查服務(wù)器發(fā)送連接請求;健康檢查定時器模塊,用于在所述連接模塊與所述健康檢查服務(wù)器連接成功時,向所述健康檢查服務(wù)器發(fā)送健康檢查請求消息,使所述健康檢查服務(wù)器根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器;接收模塊,用于在收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息時,通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;或者在所述連接模塊與所述健康檢查服務(wù)器連接不成功時,通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。
13.根據(jù)權(quán)利要求12所述的客戶端,其特征在于,還包括控制定時器模塊,用于在所述連接模塊與所述健康檢查服務(wù)器連接成功時,獲取所述健康檢查服務(wù)器根據(jù)所述連接請求返回的初始化信息;所述健康檢查定時器模塊根據(jù)所述初始化信息向所述健康檢查服務(wù)器發(fā)送健康檢查請求消息;其中,所述初始化信息包括所述客戶端能否直接連接所述第一推送服務(wù)器或者所述第二推送服務(wù)器,所述客戶端獲取初始化信息的輪詢時間間隔,所述客戶端發(fā)送健康檢查請求消息的輪詢時間間隔,以及所述第一推送服務(wù)器或者所述第二推送服務(wù)器健康與否的超時時間。
14. 一種消息推送系統(tǒng),其特征在于,包括健康檢查服務(wù)器,第一推送服務(wù)器和第二推送服務(wù)器,其中,健康檢查服務(wù)器用于根據(jù)客戶端的連接請求與所述客戶端建立連接,在與所述客戶端連接成功時,接收所述客戶端發(fā)送的健康檢查請求消息,根據(jù)所述健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若所述客戶端收到所述第一推送服務(wù)器根據(jù)所述測試消息返回的反饋測試消息,則所述客戶端通過所述第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;否則所述客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;所述健康檢查服務(wù)器與所述客戶端連接不成功時,則使所述客戶端通過所述第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。
全文摘要
本發(fā)明提供一種消息推送方法、服務(wù)器、客戶端及系統(tǒng),其中方法包括健康檢查服務(wù)器根據(jù)客戶端的連接請求與所述客戶端建立連接,若連接成功,則健康檢查服務(wù)器接收客戶端發(fā)送的健康檢查請求消息,健康檢查服務(wù)器根據(jù)健康檢查請求消息發(fā)送一測試消息給第一推送服務(wù)器,若客戶端收到第一推送服務(wù)器根據(jù)測試消息返回的反饋測試消息,則客戶端通過第一推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息,否則客戶端通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息;若連接不成功,則通過第二推送服務(wù)器接收業(yè)務(wù)服務(wù)器發(fā)送的推送消息。本發(fā)明的方案可以降低推送服務(wù)器的負載壓力。
文檔編號H04L29/08GK102223381SQ201110190238
公開日2011年10月19日 申請日期2011年7月7日 優(yōu)先權(quán)日2011年7月7日
發(fā)明者丁瑞彭, 李松, 趙亮 申請人:莫雅靜