[發明專利]一種利用消息隊列優化服務器處理請求的方法在審
| 申請號: | 201710101436.3 | 申請日: | 2017-02-23 |
| 公開(公告)號: | CN106941461A | 公開(公告)日: | 2017-07-11 |
| 發明(設計)人: | 張啟亮;黃凱 | 申請(專利權)人: | 江蘇徐工信息技術股份有限公司 |
| 主分類號: | H04L12/863 | 分類號: | H04L12/863 |
| 代理公司: | 徐州市三聯專利事務所32220 | 代理人: | 耿巖 |
| 地址: | 221000 江蘇省徐*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 利用 消息 隊列 優化 服務器 處理 請求 方法 | ||
技術領域
本發明涉及數據通信技術領域,具體是一種利用消息隊列優化服務器處理請求的方法。
背景技術
“消息”是在兩臺計算機間傳送的數據單位。“消息隊列”是在消息的傳輸過程中保存消息的容器。消息隊列將消息從源傳遞到目標時充當中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。傳統的用戶和服務器之間的通信不可避免通信過程的復雜性,而用戶往往希望關注的只是最后得到的通知,利用消息隊列可以很好的實現這一需求。
發明內容
本發明提供了一種利用消息隊列優化服務器處理請求的方法,解決了消息隊列中信息丟失和重復不能同時實現的問題,較好的實現了用戶和服務器之間的分離,提高了服務器處理請求的效率。
本發明是通過如下技術方案實現的:
一種利用消息隊列優化服務器處理請求的方法,包括用戶和服務器,在用戶與服務器之間有消息隊列,所述消息隊列處理、合并用戶請求消息,將處理結果推送給服務器執行,提高服務器處理用戶請求的效率。
優選的是,所述消息隊列分為三種類型:可執行消息隊列:存放的用戶請求直接推送給相應的空閑服務器執行;排隊等候消息隊列:存放的用戶請求按到達的先后順序在此隊列中排隊等候;備份消息隊列:存放復制過的用戶請求消息。
優選的是,用戶請求到達消息隊列后的處理過程如下步驟:
步驟一:用戶請求到達消息隊列端后,消息隊列判斷此時服務器是否處于空閑狀態;若是,則請求消息被放入可執行消息隊列中,依次推送給服務器執行;步驟二:若服務器處于忙碌狀態,則用戶請求消息被放入排隊等候隊列,依次加入隊列末尾排隊等候;步驟三:當有新的用戶請求到達后,消息隊列將判斷排隊等候消息隊列中是否有與該新到達的請求相同的消息:如果有,則依次遍歷排隊等候消息隊列,找到與新到達請求相同的消息所處的位置,將兩個請求消息進行合并,放入該位置;如果排隊等候隊列中沒有與該請求相同的消息,則新到達的請求將被放到排隊等候隊列的末尾,等待執行;步驟四:當服務器由忙碌狀態轉換到空閑狀態后,可執行消息隊列將排隊等候隊列中存放的請求消息依次調入,并推送給服務器端執行;步驟五:推送請求消息之前,將備份一份此請求放入備份消息隊列中。
優選的是,所述消息隊列與所述服務器之間利用報文傳送進行通信。
優選的是,所述報文傳送包括以下報文:Request報文:用戶向消息隊列發送請求消息使用的報文;Reply報文:服務器向用戶返回處理結果使用的報文;Push報文:可執行消息隊列向服務器推送可執行的請求消息使用的報文;Invalid報文:服務器返回無效的請求給消息隊列使用的報文;Ack報文:服務器確認消息隊列端發送的請求消息使用的報文。
優選的是,所述消息隊列將可執行消息推送給服務器之前,將會做一份備份,放入備份消息隊列中;如果請求消息推送失敗,將重傳備份消息隊列中的該請求消息;服務器成功收到此請求消息后,備份隊列中的備份信息將被刪除;每發送一次備份消息,將會在此備份消息中添加一個序列號來防止因鏈路故障而導致服務器端接收到重復消息。
優選的是,所述消息隊列和所述服務器溝通過程如下步驟:步驟一:取出可執行消息隊列最前端的請求消息,將此請求消息備份一份放入備份消息隊列中,利用Push報文將該請求消息發送到服務器;步驟二:服務器接收到此請求消息后,將判斷是否能夠處理此請求消息:如果能處理,則向消息隊列端返回一個Ack報文,確認自己正確收到并可以處理此消息;如果不能,則向消息隊列返回一個Invalid報文,通知消息隊列端自己無法處理此請求消息;步驟三:如果消息隊列收到服務器發來的報文是Ack報文,則將備份消息隊列中關于該已被確認的請求消息的備份刪除;步驟四:如果消息隊列端收到服務器發來的報文是Invalid報文,則將備份消息隊列中的該請求消息通過Push報文發向其他的空閑服務器;步驟五:如果消息隊列端沒有收到服務器發回的任何響應報文,則將會重傳備份消息隊列中的該請求消息的備份,并在此備份消息中加入一個起始序列號1,此后每一次重傳,序列號都會增加1,直至序列號加到5,便直接刪除備份消息隊列中的該請求消息的備份。
優選的是,所述步驟五中,造成消息隊列收不到服務器發回的任何響應報文的原因是鏈路故障造成的。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于江蘇徐工信息技術股份有限公司,未經江蘇徐工信息技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710101436.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種平板變壓器引腳焊接工裝
- 下一篇:一種帶有磁吸治具的繼電器自動沾錫裝置





