新四季網

一種消息推送服務的實現方法與系統的製作方法

2023-10-06 16:55:34 2

專利名稱:一種消息推送服務的實現方法與系統的製作方法
技術領域:
本發明涉及網際網路領域,特別涉及一種消息推送服務的實現方法與系統。
背景技術:
隨著網際網路的不斷發展,客戶端與服務端消息傳輸越來越普遍,為了更好的提高用戶體驗,提高消息的實時性,通常會在客戶端展現時,針對變化的信息和數據進行部分更新變換,避免整體頁面的刷新或全部數據的重新請求,消息推送服務系統的設計和實現就變得越來越重要。目前網際網路領域主流的消息服務模式為客戶端按照一定的時間間隔,對服務端進行輪詢請求,將數據拉取到客戶端並進行異步展現,此種方式實現簡單,但也存在如下一些缺點和不足1)客戶端的輪詢服務會造成對服務端的持續壓力,是服務端服務能力受限,響應能力下降,針對請求的峰值困難;幻客戶端的輪詢請求會造成客戶端性能的下降, 如手機客戶端不斷輪詢服務端,會造成耗電和網絡流量的增加,同時對性能較弱的終端也會造成整體性能的影響;3)消息的實時性會有一定影響,因輪詢需要月約定輪詢的間隔時間,在間隔時間其間,客戶端不能收到和處理任何新到的消息,對用戶體驗會造成影響;4) 非實時的異步輪詢請求也會造成網絡傳輸的困擾,在兩次輪詢間隔其間可能會沒有任何消息,造成請求的浪費;同時,也可能在間隔時間期有大量累積的消息,在下次客戶端請求的時候一次獲取,給網絡傳輸造成壓力。

發明內容
本發明提供的,以解決以一定的時間間隔對服務端進行輪詢請求導致的問題。本發明提供了一種消息推送服務的實現方法,包括步驟1,推送消息隊列接收模塊將需要推送的消息存儲到消息隊列中;步驟2,推送邏輯處理模塊輪詢所述隊列並將消息存儲到狀態存儲模塊中用戶所對應的Key-Value鍵值對中;步驟3,用戶登錄客戶端後,客戶端向長連接通訊模塊發起推送服務請求;步驟4,長連接通訊模塊建立並維持與客戶端的長連接,並向狀態存儲模塊寫入用戶的狀態;步驟5,長連接通訊模塊詢問狀態存儲模塊是否有消息推送給用戶,如果是,長連接通訊模塊則從狀態存儲模塊中取出需要推送的消息發送至客戶端,並維持與客戶端和狀態存儲模塊的連接狀態;否則,長連接通訊模塊維持與客戶端的長連接。在一個示例中,步驟1中,推送消息隊列接收模塊將需要推送的消息隨機存儲到消息隊列中。在一個示例中,步驟2中,推送邏輯處理模塊按照消息存儲到消息隊列中的順序讀取消息;推送邏輯處理模塊根據消息隊列的狀態調整線程資源。在一個示例中,步驟2中,狀態存儲模塊以用戶的標識符為鍵值,鍵值由長連接通訊模塊寫入;鍵值對應的值為需要推送的消息,該消息由推送邏輯處理模塊寫入。在一個示例中,步驟3中,長連接通訊模塊採用基於HTTP協議。本發明提供了一種消息推送服務的實現系統,包括推送消息隊列接收模塊,用於將需要推送的消息存儲到消息隊列中;推送邏輯處理模塊,用於輪詢所述消息隊列並將消息存儲到狀態存儲模塊中用戶所對應的Key-Value鍵值對中;長連接通訊模塊,用於在用戶登錄客戶端後,接收客戶端向長連接通訊模塊發起推送服務請求;建立並維持與客戶端的長連接,並向狀態存儲模塊寫入用戶的狀態;詢問狀態存儲模塊是否有消息推送給用戶;有消息需要推送給用戶時,從狀態存儲模塊中取出需要推送的消息發送至客戶端,並維持與客戶端和狀態存儲模塊的連接狀態;沒有消息需要推送給用戶時,維持與客戶端的長連接。在一個示例中,推送消息隊列接收模塊,用於將需要推送的數據隨機存儲到消息隊列中。在一個示例中,推送邏輯處理模塊,用於按照消息存儲到消息隊列中的順序讀取消息;推送邏輯處理模塊,用於根據消息隊列的狀態調整線程資源。在一個示例中,狀態存儲模塊包括鍵值對,鍵值對以用戶的標識符為鍵值,鍵值由長連接通訊模塊寫入;鍵值對應的值為需要推送的消息,該消息由推送邏輯處理模塊寫入。在一個示例中,長連接通訊模塊採用基於HTTP協議。本發明實施例的有益效果是將客戶端輪詢請求轉變為客戶端與服務端進行網絡通訊的長連接,可進行多個實例的部署,各實例可分擔客戶端請求訪問壓力,提高了系統的可用性。


圖1為本發明的消息推送服務系統示意圖;圖2為本發明的消息推送服務方法流程圖。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方式作進一步地詳細描述。參見圖1,為本發明實施例提供的消息推送服務系統示意圖,該系統分為如下幾個模塊推送消息隊列接收模塊該模塊主要是由消息隊列組成,用來接收來自各個外部系統需要推送的消息。利用消息隊列來進行寫入壓力峰值的緩衝,並可以進行異步讀寫操作,提高系統的靈活性。在可用性方面,該模塊針對多個隊列實例採用隨機寫,順序讀的方式,既保證了該模塊的高可用性,也避免了複雜架構的維護成本。推送邏輯處理模塊該模塊主要採用線程池技術,用來讀取消息隊列中的推送消息信息,將該信息以用戶ID的鍵值形式,按照自定義的可擴展的結構化數據存儲結構,異步存儲到狀態存儲模塊。該模塊可以根據消息隊列的狀態自動進行線程資源的增減,既可避免消息並發的峰值處理繁忙,又可減少消息量很小時對主機線程資源的浪費等。同時該模塊不存在狀態,可以進行多實例分布式部署,進行負載均衡等提高系統可用性。狀態存儲模塊該模塊為自行實現的高速鍵值對緩存存儲引擎,功能為以用戶ID 為鍵值,存儲相應需要推送的消息的結構化數據,該模塊的鍵值ID寫入為長連接通訊模塊來維護,鍵值所對應的值的寫入為推送邏輯處理模塊進行寫入維護。存儲引擎所維護的用戶信息也均為在線用戶,業務上對於非在線用戶進行消息推送是沒有意義的。離線消息的持久化信息會在另外的存儲模塊中進行維護。該模塊可以根據鍵值存儲引擎的特點進行一致性哈希等策略,進行多實例的部署,既可減少單實例系統瓶頸,又可提高系統的可用性。長連接通訊模塊該模塊基於HTTP協議,內部基於隊列和消息觸發機制實現的 HTTP長連接服務,在用戶上線時,接收到客戶端發送的用戶推送服務接口請求的時候,該模塊維持與客戶端的HTTP長連接,同時將該請求用戶的ID及其他信息寫入狀態存儲模塊,隨後將一直保持與狀態存儲模塊的準實時通訊。當發現有新消息需要進行推送的時候,則從狀態存儲模塊中取出欲推送的消息,同時推送給客戶端,若沒有需要推送的信息,則一直維持長連接而不進行數據通信。同時該模塊採用HTTP協議,便於客戶端實現和前端基於HTTP 代理的協議分發等策略,可進行多個實例的部署,各實例可分擔客戶端請求訪問壓力,可高了系統的可用性。具體請求響應的工作流程如圖2所示步驟10,推送消息隊列接收模塊實時接收需要推送的數據並混存到隊列中。步驟11,推送邏輯處理模塊輪詢隊列,將數據組裝成推送的結構化數據,異步存儲到狀態存儲模塊中該用戶ID所對應的鍵值對中。步驟12,客戶端登錄上線,向推送服務發起接口請求;步驟13,長連接通訊模塊收到客戶端請求,建立並維持與客戶端的長連接,同時向狀態存儲模塊寫入用戶的狀態等信息。步驟14,長連接通訊模塊一直維持並詢問狀態存儲模塊是否有最新消息推送給該用戶,若沒有最新消息,執行步驟15,若有新消息,執行步驟16。步驟15,長連接通訊模塊則會維持與客戶端的長連接,不進行數據交互,同時也會與狀態存儲模塊保持詢問狀態。步驟16,從狀態存儲模塊中取出需要推送的結構化消息數據,返回給客戶端,然後繼續維持與客戶端和狀態存儲模塊的連結狀態。以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,例如模塊名稱的改變或替換,均包含在本發明的保護範圍內。
權利要求
1.一種消息推送服務的實現方法,其特徵在於,包括步驟1,推送消息隊列接收模塊將需要推送的消息存儲到消息隊列中;步驟2,推送邏輯處理模塊輪詢所述消息隊列並將消息存儲到狀態存儲模塊中用戶所對應的Key-Value鍵值對中;步驟3,用戶登錄客戶端後,客戶端向長連接通訊模塊發起推送服務請求;步驟4,長連接通訊模塊建立並維持與客戶端的長連接,並向狀態存儲模塊寫入用戶的狀態;步驟5,長連接通訊模塊詢問狀態存儲模塊是否有消息推送給用戶,如果是,長連接通訊模塊則從狀態存儲模塊中取出需要推送的消息發送至客戶端,並維持與客戶端和狀態存儲模塊的連接狀態;否則,長連接通訊模塊維持與客戶端的長連接。
2.如權利要求1所述的消息推送服務的實現方法,其特徵在於,步驟1中,推送消息隊列接收模塊將需要推送的消息隨機存儲到消息隊列中。
3.如權利要求1所述的消息推送服務的實現方法,其特徵在於,步驟2中,推送邏輯處理模塊按照消息存儲到消息隊列中的順序讀取消息;推送邏輯處理模塊根據消息隊列的狀態調整線程資源。
4.如權利要求1所述的消息推送服務的實現方法,其特徵在於,步驟2中,狀態存儲模塊以用戶的標識符為鍵值,鍵值由長連接通訊模塊寫入;鍵值對應的值為需要推送的消息, 該消息由推送邏輯處理模塊寫入。
5.如權利要求1所述的消息推送服務的實現方法,其特徵在於,步驟3中,長連接通訊模塊採用HTTP協議。
6.一種消息推送服務的實現系統,其特徵在於,包括推送消息隊列接收模塊,用於將需要推送的消息存儲到消息隊列中;推送邏輯處理模塊,用於輪詢所述隊列並將消息存儲到狀態存儲模塊中用戶所對應的 Key-Value鍵值對中;長連接通訊模塊,用於在用戶登錄客戶端後,接收客戶端向長連接通訊模塊發起推送服務請求;建立並維持與客戶端的長連接,並向狀態存儲模塊寫入用戶的狀態;詢問狀態存儲模塊是否有消息推送給用戶;有消息需要推送給用戶時,從狀態存儲模塊中取出需要推送的消息發送至客戶端,並維持與客戶端和狀態存儲模塊的連接狀態;沒有消息需要推送給用戶時,維持與客戶端的長連接。
7.如權利要求6所述的消息推送服務的實現系統,其特徵在於,推送消息隊列接收模塊,用於將需要推送的數據隨機存儲到消息隊列中。
8.如權利要求6所述的消息推送服務的實現系統,其特徵在於,推送邏輯處理模塊,用於按照消息存儲到消息隊列中的順序讀取消息;推送邏輯處理模塊,用於根據消息隊列的狀態調整線程資源。
9.如權利要求6所述的消息推送服務的實現系統,其特徵在於,狀態存儲模塊包括鍵值對,鍵值對以用戶的標識符為鍵值,鍵值由長連接通訊模塊寫入;鍵值對應的值為需要推送的消息,該消息由推送邏輯處理模塊寫入。
10.如權利要求6所述的消息推送服務的實現系統,其特徵在於,長連接通訊模塊採用 HTTP協議。
全文摘要
本發明公開一種消息推送服務的實現方法與系統。該實現方法包括步驟1,推送消息隊列接收模塊將需要推送的消息存儲到隊列中;步驟2,推送邏輯處理模塊輪詢隊列並將消息存儲到狀態存儲模塊中用戶所對應的Key-Value鍵值對中;步驟3,用戶登錄後,客戶端向長連接通訊模塊發起推送服務請求;步驟4,長連接通訊模塊建立並維持與客戶端的長連接,並向狀態存儲模塊寫入用戶的狀態;步驟5,長連接通訊模塊詢問狀態存儲模塊是否有消息推送給用戶,若是,從狀態存儲模塊中取出消息發送至客戶端,並維持與客戶端和狀態存儲模塊的連接狀態;否則,維持與客戶端的長連接。本發明將客戶端輪詢請求轉變為客戶端與服務端進行網絡通訊的長連接,提高了系統的可用性。
文檔編號H04L29/08GK102523177SQ201110427869
公開日2012年6月27日 申請日期2011年12月19日 優先權日2011年12月19日
發明者康光磊 申請人:北京新媒傳信科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀