本申請涉及計算機
技術(shù)領(lǐng)域:
,尤其涉及一種消息的獲取方法、服務(wù)端、客戶端及網(wǎng)關(guān)設(shè)備。
背景技術(shù):
:業(yè)務(wù)系統(tǒng)中,服務(wù)端往往需要向海量級的在線客戶端發(fā)送即時消息,其中,即時消息是指具有有效時間的消息(如,促銷消息等),因此,如何能實時地向海量級的在線客戶端發(fā)送即時消息就成為需要解決的問題。在一種現(xiàn)有技術(shù)中,服務(wù)端依次向每個在線客戶端發(fā)送即時消息,由于該即時消息的數(shù)據(jù)量過大,從而會導致在有大量的在線客戶端時,服務(wù)端發(fā)送消息的時間過長,而這個發(fā)送時長很有可能超出即時消息的有效時間,由此造成在線客戶端接收到的即時消息失效的問題。在另一種現(xiàn)有技術(shù)中,客戶端在特定時刻(如,登錄時刻)向服務(wù)端發(fā)送拉取請求,服務(wù)端在接收到拉取請求時,判斷是否有即時消息,若有,則向在線客戶端發(fā)送即時消息,然而上述不對即時消息進行識別,而直接返回即時消息的方法會影響在線客戶端獲取信息的準確性。技術(shù)實現(xiàn)要素:本申請實施例提供了一種消息的獲取方法、服務(wù)端、客戶端及網(wǎng)關(guān)設(shè)備,可以保證客戶端獲取的消息的實時性和準確性。第一方面,提供了一種消息的獲取方法,該方法包括:服務(wù)端接收第一消息;根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息;向客戶端發(fā)送所述標識消息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,根據(jù)所述標識信息獲取所述第一消息。第二方面,提供了一種消息的獲取方法,該方法包括:客戶端接收服務(wù)端發(fā)送的第一消息的標識信息,其中,所述標識信息是由所述服務(wù)端根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳生成的;根據(jù)所述標識信息,查找所述第一消息;若未查找到所述第一消息,則根據(jù)所述標識信息獲取所述第一消息。第三方面,提供了一種消息的獲取方法,該方法包括:網(wǎng)關(guān)設(shè)備接收客戶端在根據(jù)第一消息的標識信息未查找到所述第一消息時發(fā)送的第二讀取請求,其中,所述第二讀取請求中攜帶所述標識信息;根據(jù)所述標識信息從本地存儲單元中查找所述第一消息;若查找到所述第一消息,則向所述客戶端返回所述第一消息;若未查找到所述第一消息,則從服務(wù)端獲取所述第一消息,并向所述客戶端返回所述第一消息。第四方面,提供了一種服務(wù)端,該服務(wù)端包括:接收單元、生成單元和發(fā)送單元;所述接收單元,用于接收第一消息;所述生成單元,用于根據(jù)所述接收單元接收的所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息;所述發(fā)送單元,用于向客戶端發(fā)送所述生成單元生成的所述標識消息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,根據(jù)所述標識信息獲取所述第一消息。第五方面,提供了一種客戶端,該客戶端包括:接收單元、查找單元和 獲取單元;所述接收單元,用于接收服務(wù)端發(fā)送的第一消息的標識信息,其中,所述標識信息是由所述服務(wù)端根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳生成的;所述查找單元,用于根據(jù)所述接收單元接收的所述標識信息,查找所述第一消息;所述獲取單元,用于若所述查找單元未查找到所述第一消息,則根據(jù)所述標識信息獲取所述第一消息。第六方面,提供了一種網(wǎng)關(guān)設(shè)備,該網(wǎng)關(guān)設(shè)備包括:接收單元、查找單元、發(fā)送單元和獲取單元;所述接收單元,用于接收客戶端在根據(jù)第一消息的標識信息未查找到所述第一消息時發(fā)送的第二讀取請求,其中,所述第二讀取請求中攜帶所述標識信息;所述查找單元,用于根據(jù)所述接收單元接收的所述標識信息從本地存儲單元中查找所述第一消息;所述發(fā)送單元,用于若所述查找單元查找到所述第一消息,則向所述客戶端返回所述第一消息;所述獲取單元,用于若所述查找單元未查找到所述第一消息,則從服務(wù)端獲取所述第一消息,并向所述客戶端返回所述第一消息。本申請?zhí)峁┑南⒌墨@取方法、服務(wù)端、客戶端及網(wǎng)關(guān)設(shè)備,服務(wù)端接收第一消息;根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息;向客戶端發(fā)送所述標識消息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,根據(jù)所述標識信息獲取所述第一消息。由此可知,本申請中,服務(wù)端向客戶端發(fā)送第一消息的標識信息,從而可以解決現(xiàn)有技術(shù)中服務(wù)端向客戶端發(fā)送第一消息,而由于第一消息的數(shù)據(jù)量較大,造成的發(fā)送時間過長,從而導致的客戶端不能實時地獲取 消息的問題;此外,客戶端在未查找到第一消息時,根據(jù)標識信息獲取第一消息,這可以提高消息的獲取的準確性。附圖說明圖1為本申請一種實施例提供的消息的獲取方法流程圖;圖2為本申請另一種實施例提供的消息的獲取方法流程圖;圖3為本申請再一種實施例提供的消息的獲取方法流程圖;圖4為本申請又一種實施例提供的消息的獲取方法交互圖;圖5為本申請一種實施例提供的服務(wù)端的示意圖;圖6為本申請另一種實施例提供的客戶端的示意圖;圖7為本申請再一種實施例提供的網(wǎng)關(guān)設(shè)備的示意圖。具體實施方式為使本申請實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。為便于對本申請實施例的理解,下面將結(jié)合附圖以具體實施例做進一步的解釋說明,實施例并不構(gòu)成對本申請實施例的限定。本申請實施例提供的消息的獲取方法、服務(wù)端、客戶端及網(wǎng)關(guān)設(shè)備,適用于業(yè)務(wù)系統(tǒng)中發(fā)送消息的場景,其中,業(yè)務(wù)系統(tǒng)包括服務(wù)端和客戶端,服務(wù)端與客戶端之間可以通過網(wǎng)關(guān)設(shè)備通信,而消息可以為圖文消息、廣告內(nèi)容等即時消息,也可以為非即時消息。例如,適用于服務(wù)端向海量級的在線客戶端發(fā)送即時消息的場景,此處,服務(wù)端可以包括應(yīng)用集群、消息發(fā)送集群和數(shù)據(jù)同步系統(tǒng);應(yīng)用集群用于監(jiān) 聽消息源發(fā)送的消息,而消息源可以為業(yè)務(wù)系統(tǒng)本身,也可以為第三方應(yīng)用系統(tǒng),還用于向消息發(fā)送集群分發(fā)任務(wù);消息發(fā)送集群用于根據(jù)應(yīng)用集群分發(fā)的任務(wù),將消息發(fā)送至客戶端;數(shù)據(jù)同步系統(tǒng)用于向客戶端發(fā)送消息的標識信息,此處,標識信息是由應(yīng)用集群根據(jù)消息的消息內(nèi)容以及消息的接收時間戳生成的。圖1為本申請一種實施例提供的消息的獲取方法流程圖。所述方法的執(zhí)行主體可以為業(yè)務(wù)系統(tǒng)的服務(wù)端,如圖1所示,所述方法具體可以包括:步驟110,服務(wù)端接收第一消息。即服務(wù)端的應(yīng)用集群接收第一消息。此處,第一消息可以為圖文消息、廣告內(nèi)容等即時消息,也可以為非即時消息,在此說明書中,以第一消息為即時消息進行說明。此外,第一消息可以是業(yè)務(wù)系統(tǒng)本身發(fā)送的消息,也可以是第三方應(yīng)用系統(tǒng)發(fā)送的消息。步驟120,根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息。即服務(wù)端的應(yīng)用集群根據(jù)接收的所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息。此處,當?shù)谝幌⑹怯沙龢I(yè)務(wù)系統(tǒng)本身外的其它系統(tǒng)(如,第三方應(yīng)用系統(tǒng))發(fā)送時,則應(yīng)用集群在接收到第一消息之后,先進行格式轉(zhuǎn)換,即轉(zhuǎn)換成應(yīng)用集群可以識別的第一消息,再根據(jù)第一消息的消息內(nèi)容以及第一消息的接收時間戳,生成第一消息的標識信息。在一種具體實施方式中,可識別的第一消息的消息內(nèi)容可以包括如表1所示的字段。表1messageSourceIdmessageIdenable消息源Id消息Id有效標示即應(yīng)用集群可以根據(jù)表1所示的各字段的內(nèi)容以及第一消息的接收時間戳,生成第一消息的標識信息(也稱消息Etag)。在一個例子中,在生成消息Etag之后,可以進行MD5加密,如,消息Etag可以為:MD5(messageSourceId+messageId+enable+timestamp)??蛇x地,應(yīng)用集群在生成消息Etag之后,可以進一步生成消息公告,在一種具體實施方式中,消息公告包括的字段可以如表2所示。表2messageEtagenabletimestamp消息Etag有效標示時間戳此處,時間戳是指接收第一消息的接收時間戳。在另一個例子中,生成的消息公告包括的各字段的內(nèi)容可以如下所示:messageEtag:4b50a754f2bd58d6d9d74be3d498ec1denable:truetimestamp:2015-08-01_16:58在生成上述消息公告之后,應(yīng)用集群可以在服務(wù)端的數(shù)據(jù)同步系統(tǒng)中發(fā)布該消息公告,也即數(shù)據(jù)同步系統(tǒng)接收消息公告。此處,需要說明的是,數(shù)據(jù)同步系統(tǒng)在任一時刻僅維護一份有效的全局消息公告??蛇x地,應(yīng)用集群在生成上述標識信息之后,還可以將第一消息以及標識信息放入消息隊列中。步驟130,向客戶端發(fā)送所述標識消息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,根據(jù)所述標識信息獲取所述第一消息。即數(shù)據(jù)同步系統(tǒng)在接收到消息公告后,向客戶端發(fā)送所述標識信息。此處,客戶端的個數(shù)可以為一個或者多個??梢岳斫獾氖牵斢卸鄠€客戶端時,則數(shù)據(jù)同步系統(tǒng)在接收到消息公告之后,向多個客戶端發(fā)送所述標 識信息??蛻舳嗽诮邮盏綐俗R信息之后,可以從客戶端緩存中查找第一消息。在一種具體實施方式中,客戶端緩存中存儲的字段可以如表3所示。表3messageEtagmessageContentisLoaded消息Etag消息正文已加載標示在再一個例子中,客戶端緩存中各字段的內(nèi)容可以如下所示:即客戶端可以根據(jù)消息Etag,從客戶端緩存中查找第一消息。若查找到第一消息,則客戶端根據(jù)客戶端緩存中已加載標示字段的內(nèi)容,執(zhí)行相應(yīng)的操作。如,當字段“isLoaded”的內(nèi)容為“true”時,說明該消息已經(jīng)被客戶端加載過,因此客戶端忽略第一消息;而當字段“isLoaded”的內(nèi)容為“false”時,說明該消息還未被客戶端加載過,因此客戶端加載該 第一消息。此處,若查找到第一消息,則該第一消息可以是由客戶端在從服務(wù)端接收到第一消息以及標識信息后存儲在客戶端緩存中的。若查找不到第一消息,客戶端向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求,所述第二讀取請求中攜帶所述標識信息;網(wǎng)關(guān)設(shè)備接收到第二讀取請求之后,根據(jù)所述標識信息從本地存儲單元(也稱網(wǎng)關(guān)緩存)或者所述服務(wù)端獲取所述第一消息。其中,根據(jù)所述標識信息從本地存儲單元或者所述服務(wù)端獲取所述第一消息具體為:網(wǎng)關(guān)設(shè)備首先根據(jù)標識信息,從本地存儲單元中查找第一消息,若查找到,則向客戶端返回該第一消息;若未查找到,則向服務(wù)端的應(yīng)用集群發(fā)送第一讀取請求,該第一讀取請求中攜帶所述標識信息,應(yīng)用集群在接收到第一讀取請求之后,從消息隊列中讀取第一消息,并向網(wǎng)關(guān)設(shè)備返回第一消息。網(wǎng)關(guān)設(shè)備接收到第一消息后,將第一消息存儲在本地存儲單元,并向客戶端返回該第一消息,客戶端將第一消息存儲在客戶端緩存中。當有其它客戶端向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求時,網(wǎng)關(guān)設(shè)備從本地存儲單元中讀取第一消息并返回,也即不需要再從服務(wù)端讀取,由此可以減少服務(wù)端的請求數(shù),從而可以確保服務(wù)端的穩(wěn)定性。舉例來說,假設(shè)服務(wù)端的應(yīng)用集群接收第一消息,且假設(shè)消息公告的內(nèi)容、客戶端緩存的內(nèi)容以及網(wǎng)關(guān)緩存的內(nèi)容分別如表4、表5和表6所示。表4消息Etag4b50a754f2bd58d6d9d74be3d498ec1d有效標示true時間戳2015-08-01_16:58表5消息Etag消息正文已記載標示45d8b4c3eae60c172719ddedff0da1d8{biz_content:…}truee5eca4fb5c0ea402a64bcfac88c81728{biz_content:…}false80323857fd94c637ae6e947553a7f5le{biz_content:…}true表6消息Etag消息正文4b50a754f2bd58d6d9d74be3d498ec1d{biz_content:new_msg}即客戶端在接收到表4中的消息Etag時,將該消息Etag與表5中的消息Etag進行比對,因為均比對不一致,所以未查找到第一消息;客戶端向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求,該第二讀取請求中攜帶表4中的消息Etag;網(wǎng)關(guān)設(shè)備將該消息Etag與表6中的消息Etag進行比對,因為比對一致,也即查找到第一消息,向客戶端返回第一消息;客戶端在接收到第一消息之后,將第一消息以及第一消息的標識信息存儲到客戶端緩存中。需要說明的是,本申請實施例中客戶端根據(jù)服務(wù)端發(fā)送的標識信息,從客戶端緩存中查找第一消息,可以保證客戶端能實時地加載并顯示最新消息或者最新版本的消息。可選地,在生成所述第一消息的標識信息之后,所述方法還包括:向所述客戶端發(fā)送所述第一消息以及所述標識信息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,存儲所述第一消息以及所述標識信息。具體地,應(yīng)用集群在生成標識信息之后,創(chuàng)建任務(wù),并將創(chuàng)建的任務(wù)分發(fā)至消息發(fā)送集群,此處的任務(wù)可以是用于指示消息發(fā)送集群中的每臺機器向哪些客戶端發(fā)送第一消息的信息。消息發(fā)送集群根據(jù)分發(fā)的任務(wù),向客戶 端發(fā)送第一消息以及標識信息;客戶端在接收到標識信息之后,首先根據(jù)該標識信息從客戶端緩存(如,表5)中查找第一消息,若查找到第一消息,則忽略接收到的第一消息以及標識信息;若未查找到第一消息,則可以在客戶端緩存中存儲所述第一消息以及所述標識信息,并根據(jù)第一消息對應(yīng)的已加載標示字段的內(nèi)容,加載或者不加載第一消息,而無需再向網(wǎng)關(guān)設(shè)備請求第一消息??梢岳斫馐牵艨蛻舳司彺嬷幸汛鎯Φ谝幌?,則該第一消息可以是客戶端根據(jù)第一消息的標識信息從網(wǎng)關(guān)設(shè)備或者服務(wù)端獲取到的。需要說明的是,上述發(fā)送第一消息以及標識信息的步驟可以與步驟130同時執(zhí)行,即本申請可以同時結(jié)合現(xiàn)有技術(shù)的兩種技術(shù)方案,也即本申請中,服務(wù)端在發(fā)送第一消息的標識信息的同時向客戶端發(fā)送第一消息,客戶端在接收到標識信息之后,若還沒有接收到上述第一消息,則從網(wǎng)關(guān)設(shè)備或者服務(wù)端獲取該第一消息,由此來保證客戶端獲取消息的實時性。此外,因為本申請中服務(wù)端同時也向客戶端發(fā)送了第一消息,客戶端只有在客戶端緩存中查找不到第一消息時,才從網(wǎng)關(guān)設(shè)備或者服務(wù)端獲取第一消息,由此可以減少服務(wù)端的請求數(shù),從而可以保證服務(wù)端的穩(wěn)定性。在消息發(fā)送集群向所有的客戶端發(fā)送第一消息以及標識信息之后,向應(yīng)用集群發(fā)送用于表示消息發(fā)送完成的消息,應(yīng)用集群在接收到該表示消息發(fā)送完成的消息后,向數(shù)據(jù)同步系統(tǒng)發(fā)送通知消息,該通知消息用于指示數(shù)據(jù)同步系統(tǒng)撤銷公告消息,如,將表4所示的內(nèi)容修改為表7所示的內(nèi)容。表7消息Etag4b50a754f2bd58d6d9d74be3d498ec1d有效標示false時間戳2015-08-01_16:58數(shù)據(jù)同步系統(tǒng)在撤銷公告消息之后,不再向客戶端發(fā)送標識信息。圖2為本申請另一種實施例提供的消息的獲取方法流程圖。所述方法的執(zhí)行主體可以為業(yè)務(wù)系統(tǒng)的客戶端,如圖2所示,所述方法具體可以包括:步驟210,客戶端接收服務(wù)端發(fā)送的第一消息的標識信息,其中,所述標識信息是由所述服務(wù)端根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳生成的。即客戶端接收服務(wù)端的應(yīng)用集群發(fā)送的第一消息的標識信息。此處,第一消息可以為圖文消息、廣告內(nèi)容等即時消息,也可以為非即時消息,在此說明書中,以第一消息為即時消息進行說明。此外,第一消息可以是業(yè)務(wù)系統(tǒng)本身發(fā)送的消息,也可以是第三方應(yīng)用系統(tǒng)發(fā)送的消息。當?shù)谝幌⑹怯傻谌綉?yīng)用系統(tǒng)發(fā)送時,則應(yīng)用集群在接收到第一消息之后,先進行格式轉(zhuǎn)換,即轉(zhuǎn)換成應(yīng)用集群可以識別的第一消息,再根據(jù)第一消息的消息內(nèi)容以及第一消息的接收時間戳,生成第一消息的標識信息。在一種具體實施方式中,應(yīng)用集群可以根據(jù)表1所示的各字段的內(nèi)容以及第一消息的接收時間戳,生成第一消息的標識信息(也稱消息Etag)。在一個例子中,在生成消息Etag之后,可以進行MD5加密,如,消息Etag可以為:MD5(messageSourceId+messageId+enable+timestamp)。可選地,應(yīng)用集群在生成上述消息Etag之后,可以進一步生成消息公告,在一種具體實施方式中,消息公告包括的字段可以如表2所示。在生成上述消息公告之后,應(yīng)用集群可以在服務(wù)端的數(shù)據(jù)同步系統(tǒng)中發(fā)布該消息公告,此處,需要說明的是,數(shù)據(jù)同步系統(tǒng)在任一時刻僅維護一份有效的全局消息公告;數(shù)據(jù)同步系統(tǒng)在接收到消息公告后,向客戶端發(fā)送所述標識信息。步驟220,根據(jù)所述標識信息,查找所述第一消息。此處,客戶端的個數(shù)可以為一個或者多個??梢岳斫獾氖?,當有多個客戶端時,數(shù)據(jù)同步系統(tǒng)在接收到消息公告之后,向多個客戶端發(fā)送所述標識 信息??蛻舳嗽诮邮盏綐俗R信息之后,可以從客戶端緩存中查找第一消息。在一種具體實施方式中,客戶端緩存中存儲的字段可以如表3所示。即客戶端可以根據(jù)消息Etag,從客戶端緩存中查找第一消息。步驟230,若未查找到所述第一消息,則根據(jù)所述標識信息獲取所述第一消息。其中,步驟230中根據(jù)所述標識信息獲取所述第一消息包括:向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求,所述第二讀取請求中攜帶所述標識信息;接收所述網(wǎng)關(guān)設(shè)備根據(jù)所述標識信息從本地存儲單元或者所述服務(wù)端獲取到的所述第一消息。此處,本地存儲單元也稱網(wǎng)關(guān)緩存。上述根據(jù)所述標識信息從本地存儲單元或者所述服務(wù)端獲取所述第一消息具體為:網(wǎng)關(guān)設(shè)備首先根據(jù)標識信息,從本地存儲單元中查找第一消息,若查找到,則向客戶端返回該第一消息;若未查找到,則向服務(wù)端的應(yīng)用集群發(fā)送第一讀取請求,該第一讀取請求中攜帶所述標識信息,應(yīng)用集群在接收到第一讀取請求之后,從消息隊列中讀取第一消息,并向網(wǎng)關(guān)設(shè)備返回第一消息。網(wǎng)關(guān)設(shè)備接收到第一消息后,將第一消息存儲在本地存儲單元,并向客戶端返回該第一消息,客戶端將第一消息存儲在客戶端緩存中。當有其它客戶端向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求時,網(wǎng)關(guān)設(shè)備從本地存儲單元中讀取第一消息并返回,也即不需要再從服務(wù)端讀取,由此可以減少服務(wù)端的請求數(shù),從而可以確保服務(wù)端的穩(wěn)定性。步驟230描述的是在客戶端未查找到第一消息時,客戶端所執(zhí)行的操作,而若查找到第一消息,則客戶端根據(jù)客戶端緩存中已加載標示字段的內(nèi)容,執(zhí)行相應(yīng)的操作。如,當字段“isLoaded”的內(nèi)容為“true”時,說明該消息已經(jīng)被客戶端加載過,因此客戶端忽略第一消息;而當字段“isLoaded”的內(nèi)容為“false”時,說明該消息還未被客戶端加載過,因此客戶端加載該第一消息。此處,若查找到第一消息,則該第一消息可以是由客戶端在從服務(wù)端接 收到第一消息以及標識信息后存儲在客戶端緩存中的。需要說明的是,本申請實施例中客戶端根據(jù)服務(wù)端發(fā)送的標識信息,從客戶端緩存中查找第一消息,可以保證客戶端能實時地加載并顯示最新消息或者最新版本的消息??蛇x地,所述方法還可以包括如下步驟:接收所述服務(wù)端發(fā)送的所述第一消息以及所述標識信息;根據(jù)所述標識信息,查找所述第一消息;若未查找到所述第一消息,則存儲所述第一消息以及所述標識信息。具體地,應(yīng)用集群在生成標識信息之后,創(chuàng)建任務(wù),并將創(chuàng)建的任務(wù)分發(fā)至消息發(fā)送集群,此處的任務(wù)可以是用于指示消息發(fā)送集群中的每臺機器向哪些客戶端發(fā)送第一消息的信息。消息發(fā)送集群根據(jù)分發(fā)的任務(wù),向客戶端發(fā)送第一消息以及標識信息;客戶端在接收到標識信息之后,首先根據(jù)該標識信息從客戶端緩存(如,表5)中查找第一消息,若查找到第一消息,則忽略接收到的第一消息以及標識信息;若未查找到第一消息,則可以將所述第一消息以及所述標識信息存儲在客戶端緩存中,并根據(jù)第一消息對應(yīng)的已記載標示字段的內(nèi)容,加載或者不加載第一消息,而無需再向網(wǎng)關(guān)設(shè)備請求第一消息??梢岳斫馐?,若客戶端緩存中已存儲第一消息,則該第一消息可以是客戶端根據(jù)第一消息的標識信息從網(wǎng)關(guān)設(shè)備或者服務(wù)端獲取的。需要說明的是,上述發(fā)送第一消息以及標識信息的步驟可以與步驟220-步驟230同時執(zhí)行,即本申請可以同時結(jié)合現(xiàn)有技術(shù)的兩種技術(shù)方案,也即本申請中,服務(wù)端在發(fā)送第一消息的標識信息的同時向客戶端發(fā)送第一消息,客戶端在接收到標識信息之后,若還沒有接收到上述第一消息,則從網(wǎng)關(guān)設(shè)備或者服務(wù)端獲取該第一消息,由此來保證客戶端獲取消息的實時性。此外,因為本申請中服務(wù)端同時也向客戶端發(fā)送了第一消息,客戶端只有在客戶端緩存中查找不到第一消息時,才從網(wǎng)關(guān)設(shè)備或者服務(wù)端獲取第一消息,由此 可以減少服務(wù)端的請求數(shù),從而可以保證服務(wù)端的穩(wěn)定性。在消息發(fā)送集群向所有的客戶端發(fā)送第一消息以及標識信息之后,向應(yīng)用集群發(fā)送用于表示消息發(fā)送完成的消息,應(yīng)用集群在接收到該表示消息發(fā)送完成的消息后,向數(shù)據(jù)同步系統(tǒng)發(fā)送通知消息,該通知消息用于指示數(shù)據(jù)同步系統(tǒng)撤銷公告消息,數(shù)據(jù)同步系統(tǒng)在撤銷公告消息之后,不再向客戶端發(fā)送標識信息。圖3為本申請再一種實施例提供的消息的獲取方法流程圖。所述方法的執(zhí)行主體可以為網(wǎng)關(guān)設(shè)備,如圖3所示,所述方法具體可以包括:步驟310,網(wǎng)關(guān)設(shè)備接收客戶端在根據(jù)第一消息的標識信息未查找到所述第一消息時發(fā)送的第二讀取請求,其中,所述第二讀取請求中攜帶所述標識信息。此處,第一消息可以為圖文消息、廣告內(nèi)容等即時消息,也可以為非即時消息,在此說明書中,以第一消息為即時消息進行說明。此外,第一消息可以是業(yè)務(wù)系統(tǒng)本身發(fā)送的消息,也可以是第三方應(yīng)用系統(tǒng)發(fā)送的消息。當?shù)谝幌⑹怯傻谌綉?yīng)用系統(tǒng)發(fā)送時,則應(yīng)用集群在接收到第一消息之后,先進行格式轉(zhuǎn)換,即轉(zhuǎn)換成應(yīng)用集群可以識別的第一消息,再根據(jù)第一消息的消息內(nèi)容以及第一消息的接收時間戳,生成第一消息的標識信息。在一種具體實施方式中,應(yīng)用集群可以根據(jù)表1所示的各字段的內(nèi)容,生成第一消息的標識信息(也稱消息Etag)。即網(wǎng)關(guān)設(shè)備接收客戶端在根據(jù)消息Etag從客戶端緩存中未查找到第一消息時發(fā)送的第二讀取請求。步驟320,根據(jù)所述標識信息從本地存儲單元中查找所述第一消息。此處,本地存儲單元也稱網(wǎng)關(guān)緩存。步驟330,若查找到所述第一消息,則向所述客戶端返回所述第一消息。步驟340,若未查找到所述第一消息,則從服務(wù)端獲取所述第一消息,并 向所述客戶端返回所述第一消息。其中,步驟340中從服務(wù)端獲取所述第一消包括:向所述服務(wù)端發(fā)送第一讀取請求,所述第一讀取請求中攜帶所述標識信息;接收所述服務(wù)端根據(jù)所述標識信息從消息隊列中讀取的所述第一消息。即網(wǎng)關(guān)設(shè)備首先根據(jù)標識信息,從本地存儲單元中查找第一消息,若查找到,則向客戶端返回該第一消息;若未查找到,則向服務(wù)端的應(yīng)用集群發(fā)送第一讀取請求,該第一讀取請求中攜帶所述標識信息,應(yīng)用集群在接收到第一讀取請求之后,從消息隊列中讀取第一消息,并向網(wǎng)關(guān)設(shè)備返回第一消息。網(wǎng)關(guān)設(shè)備接收到第一消息后,將第一消息存儲在本地存儲單元,并向客戶端返回該第一消息,客戶端將第一消息存儲在客戶端緩存中。當有其它客戶端向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求時,網(wǎng)關(guān)設(shè)備從本地存儲單元中讀取第一消息并返回,也即不需要再從服務(wù)端讀取,由此可以減少服務(wù)端的請求數(shù),從而可以確保服務(wù)端的穩(wěn)定性。圖4為本申請又一種實施例提供的消息的獲取方法交互圖。如圖4所示,所述方法具體可以包括:步驟410,應(yīng)用集群接收第一消息。步驟420,應(yīng)用集群根據(jù)第一消息的消息內(nèi)容以及第一消息的接收時間戳,生成第一消息的標識信息??蛇x地,在執(zhí)行步驟420之后,應(yīng)用集群可以將第一消息以及第一消息的標識信息放入消息隊列。步驟430,應(yīng)用集群根據(jù)標識信息,生成消息公告。步驟440,應(yīng)用集群在數(shù)據(jù)同步系統(tǒng)中發(fā)布上述消息公告。步驟450,數(shù)據(jù)同步系統(tǒng)向客戶端發(fā)送標識信息。步驟460,客戶端根據(jù)標識信息,從客戶端緩存中查找第一消息,若查找到,則執(zhí)行步驟470,否則執(zhí)行步驟480。步驟470,客戶端對第一消息執(zhí)行加載或者不加載的操作。步驟480,客戶端向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求,第二讀取請求中攜帶標識信息。步驟490,網(wǎng)關(guān)設(shè)備根據(jù)標識信息,從本地存儲單元中查找第一消息,若查找到,則執(zhí)行步驟4100,否則執(zhí)行步驟4110。步驟4100,網(wǎng)關(guān)設(shè)備向客戶端返回該第一消息。步驟4110,網(wǎng)關(guān)設(shè)備向應(yīng)用集群發(fā)送第一讀取請求,該第一讀取請求中攜帶標識信息。步驟4120,應(yīng)用集群從消息隊列中讀取第一消息,并向網(wǎng)關(guān)設(shè)備返回第一消息。步驟4130,網(wǎng)關(guān)設(shè)備將第一消息存儲在本地存儲單元,并向客戶端返回第一消息。步驟4140,客戶端將第一消息存儲在客戶端緩存中。需要說明的是,在執(zhí)行步驟430-步驟4140的同時,本申請實施例還可以執(zhí)行如下步驟:步驟4150,應(yīng)用集群創(chuàng)建任務(wù)。步驟4160,應(yīng)用集群向消息發(fā)送集群分發(fā)創(chuàng)建的任務(wù)。步驟4170,消息發(fā)送集群根據(jù)分發(fā)的任務(wù),向客戶端發(fā)送第一消息以及第一消息的標識信息。步驟4180,客戶端根據(jù)標識信息,從客戶端緩存中查找第一消息,若查找到,則執(zhí)行步驟4190,否則執(zhí)行步驟4200。可以理解的是,在執(zhí)行步驟4180時,若步驟4140已經(jīng)執(zhí)行完成,則客戶端緩存中已經(jīng)存儲第一消息,即可以查找到第一消息,則執(zhí)行步驟4190;而若在執(zhí)行步驟4180時,步驟4140還未執(zhí)行完成,則客戶端緩存中還未存儲第一消息,即未查找到第一消息,則執(zhí)行步驟4200。步驟4190,客戶端忽略接收到的第一消息以及標識信息。步驟4200,客戶端將第一消息及標識信息存儲在客戶端緩存中。步驟4210,客戶端根據(jù)第一消息對應(yīng)的已加載標示字段的內(nèi)容,加載或者不加載第一消息。與上述一種實施例提供的消息的獲取方法對應(yīng)地,本申請實施例還提供的一種服務(wù)端,如圖5所示,該服務(wù)端包括:接收單元501、生成單元502和發(fā)送單元503。接收單元501,用于接收第一消息。生成單元502,用于根據(jù)接收單元501接收的所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息。發(fā)送單元503,用于向客戶端發(fā)送生成單元502生成的所述標識消息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,根據(jù)所述標識信息獲取所述第一消息??蛇x地,發(fā)送單元503,還用于向所述客戶端發(fā)送所述第一消息以及所述標識信息,以使所述客戶端在根據(jù)所述標識信息未查找到所述第一消息時,存儲所述第一消息以及所述標識信息。可選地,所述服務(wù)端還包括:存儲單元504和讀取單元505。存儲單元504,用于將所述第一消息以及所述標識信息放入消息隊列中。讀取單元505,用于根據(jù)網(wǎng)關(guān)設(shè)備發(fā)送的第一讀取請求,從所述消息隊列中讀取所述第一消息,其中,所述第一讀取請求中攜帶所述標識信息。發(fā)送單元503,還用于向所述網(wǎng)關(guān)設(shè)備返回讀取單元505讀取的所述第一消息。本申請實施例裝置的各功能模塊的功能,可以通過上述方法實施例的各步驟來實現(xiàn),因此,本申請?zhí)峁┑难b置的具體工作過程,在此不復(fù)贅述。本申請?zhí)峁┑姆?wù)端,接收單元501接收第一消息;生成單元502根據(jù)接收的所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳,生成所述第一消息的標識信息;發(fā)送單元503向客戶端發(fā)送所述標識消息,以使所述 客戶端在根據(jù)所述標識信息未查找到所述第一消息時,根據(jù)所述標識信息獲取所述第一消息。由此,可以保證客戶端獲取的消息的實時性和準確性。與上述另一種實施例提供的消息的獲取方法對應(yīng)地,本申請實施例還提供的一種客戶端,如圖6所示,該客戶端包括:接收單元601、查找單元602和獲取單元603。接收單元601,用于接收服務(wù)端發(fā)送的第一消息的標識信息,其中,所述標識信息是由所述服務(wù)端根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳生成的。查找單元602,用于根據(jù)接收單元601接收的所述標識信息,查找所述第一消息。獲取單元603,用于若查找單元602未查找到所述第一消息,則根據(jù)所述標識信息獲取所述第一消息。其中,獲取單元603具體用于:向網(wǎng)關(guān)設(shè)備發(fā)送第二讀取請求,所述第二讀取請求中攜帶所述標識信息;接收所述網(wǎng)關(guān)設(shè)備根據(jù)所述標識信息從本地存儲單元或者所述服務(wù)端獲取到的所述第一消息??蛇x地,所述客戶端還包括:存儲單元604。接收單元601,還用于接收所述服務(wù)端發(fā)送的所述第一消息以及所述標識信息;查找單元602,還用于根據(jù)接收單元601接收的所述標識信息,查找所述第一消息;存儲單元604,用于若查找單元602未查找到所述第一消息,則存儲所述第一消息以及所述標識信息。本申請?zhí)峁┑目蛻舳耍邮諉卧?01接收服務(wù)端發(fā)送的第一消息的標識信息,其中,所述標識信息是由所述服務(wù)端根據(jù)所述第一消息的消息內(nèi)容以及所述第一消息的接收時間戳生成的;查找單元602根據(jù)接收的所述標識信 息,查找所述第一消息;獲取單元603若未查找到所述第一消息,則根據(jù)所述標識信息獲取所述第一消息。由此,可以保證客戶端獲取的消息的實時性和準確性。與上述再一種實施例提供的消息的獲取方法對應(yīng)地,本申請實施例還提供的一種網(wǎng)關(guān)設(shè)備,如圖7所示,該網(wǎng)關(guān)設(shè)備包括:接收單元701、查找單元702、發(fā)送單元703和獲取單元704。接收單元701,用于接收客戶端在根據(jù)第一消息的標識信息未查找到所述第一消息時發(fā)送的第二讀取請求,其中,所述第二讀取請求中攜帶所述標識信息。查找單元702,用于根據(jù)接收單元701接收的所述標識信息從本地存儲單元中查找所述第一消息。發(fā)送單元703,用于若查找單元702查找到所述第一消息,則向所述客戶端返回所述第一消息。獲取單元704,用于若查找單元702未查找到所述第一消息,則從服務(wù)端獲取所述第一消息,并向所述客戶端返回所述第一消息。其中,獲取單元704具體用于:向所述服務(wù)端發(fā)送第一讀取請求,所述第一讀取請求中攜帶所述標識信息;接收所述服務(wù)端根據(jù)所述標識信息從消息隊列中讀取的所述第一消息。本申請?zhí)峁┑木W(wǎng)關(guān)設(shè)備,可以減少服務(wù)端的請求數(shù),從而可以確保服務(wù)端的穩(wěn)定性。專業(yè)人員應(yīng)該還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的對象及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每 個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本申請的范圍。結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或
技術(shù)領(lǐng)域:
內(nèi)所公知的任意其它形式的存儲介質(zhì)中。以上所述的具體實施方式,對本申請的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本申請的具體實施方式而已,并不用于限定本申請的保護范圍,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請的保護范圍之內(nèi)。當前第1頁1 2 3