本發(fā)明涉及基于UDP與Https實(shí)現(xiàn)的消息推送方法及其裝置。
背景技術(shù):
金融交易類App用戶經(jīng)常需要接收服務(wù)端推送的業(yè)務(wù)消息,例如:支付提示、融資提醒、還款提醒、資金變動(dòng)消息、版本更新消息、營(yíng)銷廣告消息等。在應(yīng)用時(shí),有大量APP應(yīng)用同時(shí)發(fā)送請(qǐng)求到服務(wù)端獲得消息,每一個(gè)APP應(yīng)用相當(dāng)于一個(gè)請(qǐng)求,如果10w手機(jī)用戶安裝了某個(gè)APP應(yīng)用,則相當(dāng)于10w個(gè)APP需要實(shí)現(xiàn)消息推送,某些系統(tǒng)在1000條并發(fā)請(qǐng)求的情況下可以很好地運(yùn)行,但到達(dá)1w高并發(fā)的情況下,就會(huì)產(chǎn)生性能問題,嚴(yán)重導(dǎo)致服務(wù)器宕機(jī)。從金融業(yè)務(wù)情景分析,實(shí)現(xiàn)這種APP消息推送功能,需要解決由于高并發(fā)導(dǎo)致服務(wù)器宕機(jī)的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供基于UDP與Https實(shí)現(xiàn)的消息推送方法及其裝置,其能解決由于高并發(fā)導(dǎo)致的服務(wù)器宕機(jī)的技術(shù)問題。
本發(fā)明的目的之一采用以下技術(shù)方案實(shí)現(xiàn):
基于UDP與Https實(shí)現(xiàn)的消息推送方法,應(yīng)用于移動(dòng)APP消息推送系統(tǒng),消息推送系統(tǒng)包括請(qǐng)求端、服務(wù)器、第一數(shù)據(jù)庫(kù)、第二數(shù)據(jù)庫(kù)和消息查詢接口;
該方法包括如下步驟:
S1、請(qǐng)求端通過UDP發(fā)送用戶賬號(hào)標(biāo)識(shí)至服務(wù)器,以使服務(wù)器根據(jù)該用戶賬號(hào)標(biāo)識(shí),判斷第一數(shù)據(jù)庫(kù)中是否存在和該用戶賬號(hào)標(biāo)識(shí)相同的消息賬號(hào)標(biāo)識(shí),如果是發(fā)送反饋信息至請(qǐng)求端;
S2、請(qǐng)求端根據(jù)接收到的反饋信息通過Https發(fā)送用戶賬號(hào)標(biāo)識(shí)至消息查詢接口,以使消息查詢接口根據(jù)用戶賬號(hào)標(biāo)識(shí)從第二數(shù)據(jù)庫(kù)中獲取與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù),并將消息數(shù)據(jù)發(fā)送至請(qǐng)求端。
作為優(yōu)選,S2中消息查詢接口將消息數(shù)據(jù)發(fā)送至請(qǐng)求端后,還將第二數(shù)據(jù)庫(kù)中與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù)刪除,以及將第一數(shù)據(jù)庫(kù)中對(duì)應(yīng)的消息賬號(hào)標(biāo)識(shí)刪除。
作為優(yōu)選,S1之后還包括如下步驟:
S11、請(qǐng)求端判斷是否在第一預(yù)設(shè)時(shí)間內(nèi)接收到服務(wù)器發(fā)送來(lái)的反饋信息,如果是則執(zhí)行S2,否則執(zhí)行S12;
S12、經(jīng)過第二預(yù)設(shè)時(shí)間后,返回S11。
作為優(yōu)選,S2之后還包括如下步驟:
S3、請(qǐng)求端將接收到的消息數(shù)據(jù)進(jìn)行顯示,經(jīng)過第三預(yù)設(shè)時(shí)間后,返回S1。
本發(fā)明的目的之二采用以下技術(shù)方案實(shí)現(xiàn):
基于UDP與Https實(shí)現(xiàn)的消息推送裝置,包括:
第一發(fā)送模塊、用于通過UDP發(fā)送用戶賬號(hào)標(biāo)識(shí)至服務(wù)器,以使服務(wù)器根據(jù)該用戶賬號(hào)標(biāo)識(shí),判斷第一數(shù)據(jù)庫(kù)中是否存在和該用戶賬號(hào)標(biāo)識(shí)相同的消息賬號(hào)標(biāo)識(shí),如果是發(fā)送反饋信息至請(qǐng)求端;
第二發(fā)送模塊,用于根據(jù)接收到的反饋信息通過Https發(fā)送用戶賬號(hào)標(biāo)識(shí)至消息查詢接口,以使消息查詢接口根據(jù)用戶賬號(hào)標(biāo)識(shí)從第二數(shù)據(jù)庫(kù)中獲取與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù),并將消息數(shù)據(jù)發(fā)送至請(qǐng)求端。
作為優(yōu)選,第二發(fā)送模塊中消息查詢接口將消息數(shù)據(jù)發(fā)送至請(qǐng)求端后,還將第二數(shù)據(jù)庫(kù)中與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù)刪除,以及將第一數(shù)據(jù)庫(kù)中對(duì)應(yīng)的消息賬號(hào)標(biāo)識(shí)刪除。
作為優(yōu)選,推送裝置還包括:
第一判斷模塊,用于判斷是否在第一預(yù)設(shè)時(shí)間內(nèi)接收到服務(wù)器發(fā)送來(lái)的反饋信息,如果是則執(zhí)行第二發(fā)送模塊,否則執(zhí)行返回模塊;
返回模塊,用于經(jīng)過第二預(yù)設(shè)時(shí)間后,返回第一判斷模塊。
作為優(yōu)選,推送裝置還包括:
顯示模塊,用于將接收到的消息數(shù)據(jù)進(jìn)行顯示,經(jīng)過第三預(yù)設(shè)時(shí)間后,返回第一發(fā)送模塊。
相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:通過UDP讀取第一數(shù)據(jù)庫(kù)中相同的用戶賬號(hào)標(biāo)識(shí)而發(fā)送反饋信息至請(qǐng)求端,以使請(qǐng)求端根據(jù)反饋信息去獲取對(duì)應(yīng)的消息數(shù)據(jù),有效降低網(wǎng)絡(luò)傳輸流量,降低并發(fā)量;以及通過Https讀取第二數(shù)據(jù)庫(kù)的消息數(shù)據(jù),確保消息的通訊安全,不被網(wǎng)絡(luò)截獲。
附圖說明
圖1為本發(fā)明的消息推送系統(tǒng)的模塊連接圖;
圖2為本發(fā)明的消息推送系統(tǒng)的邏輯框架圖;
圖3為本發(fā)明的消息推送方法的流程圖;
圖4為本發(fā)明的消息推送方法的業(yè)務(wù)流程圖;
圖5為本發(fā)明的消息推送裝置的模塊連接圖。
具體實(shí)施方式
下面,結(jié)合附圖以及具體實(shí)施方式,對(duì)本發(fā)明做進(jìn)一步描述:
基于UDP與Https實(shí)現(xiàn)的消息推送方法及其裝置,應(yīng)用于移動(dòng)APP消息推送系統(tǒng),如圖1至圖2所示,消息推送系統(tǒng)包括請(qǐng)求端和后臺(tái)系統(tǒng),后臺(tái)系統(tǒng)包括服務(wù)器、第一數(shù)據(jù)庫(kù)、第二數(shù)據(jù)庫(kù)、消息查詢接口和后臺(tái)輸入端。請(qǐng)求端可以是但不限于智能終端中的APP應(yīng)用。
基于UDP與Https實(shí)現(xiàn)的消息推送方法,如圖3至圖4所示,包括如下步驟:
步驟100、后臺(tái)輸入端將待推送的數(shù)據(jù)包中的消息賬號(hào)標(biāo)識(shí)寫入第一數(shù)據(jù)庫(kù),將待推送的數(shù)據(jù)包中的消息數(shù)據(jù)寫入第二數(shù)據(jù)庫(kù)。
步驟101、請(qǐng)求端發(fā)送用戶賬號(hào)標(biāo)識(shí)至服務(wù)器,以使服務(wù)器根據(jù)該用戶賬號(hào)標(biāo)識(shí),判斷第一數(shù)據(jù)庫(kù)中是否存在和該用戶賬號(hào)標(biāo)識(shí)相同的消息賬號(hào)標(biāo)識(shí),如果是發(fā)送反饋信息沿路返回至請(qǐng)求端,否則不做任何操作。
具體地,請(qǐng)求端通過UDP發(fā)送用戶賬號(hào)標(biāo)識(shí)至服務(wù)器。該反饋信息可以是任意字符。
其中,每個(gè)請(qǐng)求端都有其對(duì)應(yīng)的用戶賬號(hào)標(biāo)識(shí);第一數(shù)據(jù)庫(kù)中預(yù)存有多個(gè)消息賬號(hào)標(biāo)識(shí),由后臺(tái)輸入端錄入。
步驟102、請(qǐng)求端啟動(dòng)Scoket服務(wù)端,監(jiān)聽發(fā)送用戶賬號(hào)標(biāo)識(shí)的端口,判斷該端口是否在第一預(yù)設(shè)時(shí)間內(nèi)接收到服務(wù)器發(fā)送來(lái)的反饋信息,如果是則接收服務(wù)器發(fā)送來(lái)的反饋信息,關(guān)閉Scoket服務(wù)端,并執(zhí)行步驟104,否則執(zhí)行步驟103。
scoket服務(wù)端,是由請(qǐng)求端自身應(yīng)用Socket技術(shù)以其發(fā)送用戶賬號(hào)標(biāo)識(shí)的端口的IP地址作為地址,啟動(dòng)的一個(gè)網(wǎng)絡(luò)服務(wù)端,以等待接收服務(wù)器發(fā)送來(lái)的反饋信息。
步驟103、請(qǐng)求端關(guān)閉Scoket服務(wù)端,經(jīng)過第二預(yù)設(shè)時(shí)間后,返回步驟102。第一預(yù)設(shè)時(shí)間為若干秒,第二預(yù)設(shè)時(shí)間為若干分鐘。
步驟104、請(qǐng)求端將用戶賬號(hào)標(biāo)識(shí)發(fā)送至消息查詢接口,以使消息查詢接口根據(jù)用戶賬號(hào)標(biāo)識(shí)從第二數(shù)據(jù)庫(kù)中獲取到與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù),并將消息數(shù)據(jù)發(fā)送至請(qǐng)求端;以及,消息查詢接口將第二數(shù)據(jù)庫(kù)中與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù)刪除,將第一數(shù)據(jù)庫(kù)中對(duì)應(yīng)的消息賬號(hào)標(biāo)識(shí)刪除。
具體地,請(qǐng)求端通過Https發(fā)送用戶賬號(hào)標(biāo)識(shí)至消息查詢接口;
其中,第二數(shù)據(jù)庫(kù)中預(yù)存有多個(gè)消息數(shù)據(jù),該多個(gè)消息數(shù)據(jù)與第一數(shù)據(jù)庫(kù)中多個(gè)消息賬號(hào)標(biāo)識(shí)一一對(duì)應(yīng),由后臺(tái)輸入端錄入;用戶賬號(hào)標(biāo)志在第一數(shù)據(jù)庫(kù)中有相同的消息賬號(hào)標(biāo)志,則意味著在第二數(shù)據(jù)庫(kù)中存在和該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù)。
步驟105、請(qǐng)求端將接收到的消息數(shù)據(jù)進(jìn)行顯示,經(jīng)過第三預(yù)設(shè)時(shí)間后,返回步驟101。第三預(yù)設(shè)時(shí)間為若干分鐘。
UDP(User Datagram Protocol)是用戶數(shù)據(jù)報(bào)協(xié)議,是OSI(Open System Interconnection,開放式系統(tǒng)互聯(lián))參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。
UDP傳輸比常用的TCP性能高大概6、7倍,UDP沒有多次握手的過程;同時(shí)本方法通過UDP獲取的不是具體消息數(shù)據(jù),而只是和消息數(shù)據(jù)對(duì)應(yīng)的一個(gè)用戶賬號(hào)標(biāo)識(shí),可能是一個(gè)字符”true”或者一個(gè)數(shù)字1,視具體業(yè)務(wù)而定,因此網(wǎng)絡(luò)傳輸流量相當(dāng)小;而且并不是每個(gè)APP用戶都同時(shí)存在未讀的消息數(shù)據(jù)。舉個(gè)例子,10w個(gè)APP用戶,某一時(shí)刻可能只有5000個(gè)APP用戶有未讀的消息數(shù)據(jù),因此沒必要開啟10w個(gè)請(qǐng)求獲取消息,只需要使這5000個(gè)APP用戶獲取消息就可以,因此,本發(fā)明大量地減少了并發(fā)量。
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道。當(dāng)APP應(yīng)用端獲取到存在未讀的消息數(shù)據(jù)對(duì)應(yīng)的用戶賬號(hào)標(biāo)識(shí)時(shí),由APP應(yīng)用啟動(dòng)Https方式請(qǐng)求“消息查詢接口”,讀取未讀的消息數(shù)據(jù)的具體內(nèi)容,而Https自身?yè)碛序?yàn)簽和加密一系列的安全措施,使用Https通訊解決通訊安全問題的。
本方法中,后臺(tái)系統(tǒng)不需要使用任何機(jī)制(例如心跳機(jī)制)保存APP應(yīng)用的通訊IP;以及,因?yàn)閼?yīng)用了Https通訊,無(wú)須自定義一套加密通訊方式;以及,本方法中由于APP應(yīng)用定時(shí)循環(huán)發(fā)送UDP請(qǐng)求,如果鏈接中斷或丟失,則會(huì)在下一次請(qǐng)求流程中重新獲取消息,故涉及的任何一條鏈接由于任何原因中斷,或數(shù)據(jù)在傳輸過程中丟失,都不影響消息的推送。實(shí)現(xiàn)兼顧了系統(tǒng)穩(wěn)定性、降低開發(fā)成本和維護(hù)成本。
基于UDP與Https實(shí)現(xiàn)的消息推送裝置,如圖5所示,包括:
第一發(fā)送模塊、用于通過UDP發(fā)送用戶賬號(hào)標(biāo)識(shí)至服務(wù)器,以使服務(wù)器根據(jù)該用戶賬號(hào)標(biāo)識(shí),判斷第一數(shù)據(jù)庫(kù)中是否存在和該用戶賬號(hào)標(biāo)識(shí)相同的消息賬號(hào)標(biāo)識(shí),如果是發(fā)送反饋信息至請(qǐng)求端,否則無(wú)返回。
第一判斷模塊,用于判斷是否在第一預(yù)設(shè)時(shí)間內(nèi)接收到服務(wù)器發(fā)送來(lái)的反饋信息,如果是則執(zhí)行第二發(fā)送模塊,否則執(zhí)行返回模塊。
返回模塊,用于經(jīng)過第二預(yù)設(shè)時(shí)間后,返回第一判斷模塊。
第二發(fā)送模塊,用于根據(jù)接收到的反饋信息通過Https發(fā)送用戶賬號(hào)標(biāo)識(shí)至消息查詢接口,以使消息查詢接口根據(jù)用戶賬號(hào)標(biāo)識(shí)從第二數(shù)據(jù)庫(kù)中獲取與該用戶賬號(hào)標(biāo)識(shí)對(duì)應(yīng)的消息數(shù)據(jù),并將消息數(shù)據(jù)發(fā)送至請(qǐng)求端。
顯示模塊,用于將接收到的消息數(shù)據(jù)進(jìn)行顯示,經(jīng)過第三預(yù)設(shè)時(shí)間后,返回第一發(fā)送模塊。
對(duì)本領(lǐng)域的技術(shù)人員來(lái)說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。