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