[發明專利]一種基于消費隊列的消費方法、終端及計算機可讀存儲介質在審
| 申請號: | 201710370175.5 | 申請日: | 2017-05-23 |
| 公開(公告)號: | CN107197017A | 公開(公告)日: | 2017-09-22 |
| 發明(設計)人: | 牛兵奇 | 申請(專利權)人: | 努比亞技術有限公司 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;H04L12/26;G06F9/54 |
| 代理公司: | 深圳市凱達知識產權事務所44256 | 代理人: | 劉大彎,沈榮彬 |
| 地址: | 518057 廣東省深圳市南山區高新區北環大道9018*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 消費 隊列 方法 終端 計算機 可讀 存儲 介質 | ||
技術領域
本發明涉及通信技術領域,尤其涉及一種基于消費隊列的消費方法、終端及計算機可讀存儲介質。
背景技術
消息(Message)是在兩臺計算機間傳送的數據,消息可以非常簡單,只包含少量文本字符串,也可以更復雜,包含較大的對象數據。消費隊列機制為應用程序開發人員提供了一種應用程序間快速可靠的通信方式,即通過消息的傳遞來實現信息的交互。
消費隊列系統(又名消息中間件)被廣泛的用于各個互聯網公司。作為消息的一種緩沖機制,它可以有效的減輕公司后臺服務器的壓力。
一個典型的消費隊列系統由三部分組成:
1.生產者端:負責向消費隊列發送消息的終端。
2.消費者端:從消費隊列中獲得消息的終端。
3.消費隊列:用于存儲消息的中間件。通常來說,消費隊列系統的中間件包括多個消費隊列,這些消費隊列用于存儲生產者端發送過來的消息。消費隊列通常設置在至少一臺服務器上,在實際操作中通常為多臺服務器。
由于這種系統是由三部分組成,所以可以有多個生產者端向同一個中間件發送消息,也有可能會有多個消費者端從中間件中拉取消息,進行消費。
舉例來說,對于電商而言,用戶作為生產者端,其產生的訂單會被首先發送至消費隊列,然后其他程序作為消費者端,會從該消費隊列中拉取消息進行消費,即對訂單進行處理。采用消費隊列的好處是:不管前臺產生訂單的速度如何迅猛,通過中間消費隊列的緩存,可以保證后臺程序的正常運行,從而避免了網絡波峰可能對后臺服務器造成的壓力。
不僅如此,消費隊列還被廣泛用在及時通訊等應用中。比如當兩臺終端通訊時,首先由終端一發送了一條消息給自己的好友,該消息會被緩存在消費隊列中,繼而被推送至對應好友的終端的軟件中。這種設計的好處是,當好友不在線(即沒有打開對應的軟件時),消費隊列可以被當作一種數據的存儲工具。由于不需要提供查詢、刪除等操作,所以使用消費隊列作為存儲工具,比傳統的數據庫要高效很多。
以下為消費隊列系統的具體工作方式:
生產者端一般采用輪詢的方式向各個消費隊列輪流發送消息,例如中間件中一共有3個消費隊列,那么生產者端會采用“消費隊列1-消費隊列2-消費隊列3-消費隊列1-消費隊列2-消費隊列3”這種順序,分別向各個消費隊列發送消息。
對于消費者端,目前,對于絕大數消費隊列系統,消費者端都可以自己決定每次從中間件拉取多少條消息,而所拉取的消息是從一個消費隊列獲取還是從多個消費隊列獲取一般由系統本身決定。目前而言,大多數開源系統采用輪詢的方式,輪流的從各個消費隊列獲取消費者端需要的消息。例如,當有三個消費隊列的時候,消費者端如果先后發送了獲取1條消息,10條消息,100條消息的命令,那么系統會相應的從消費隊列1獲取1條消息給消費者端,從消費隊列2獲取10條消息給消費者端,從消費隊列3獲取100條消息給消費者端。
但是,目前的消費方案不能保證每個消息都被消費這消費掉,即存在不被消費掉的消息。目前的絕大數消費隊列系統在以下幾個場景中會出現消費不掉的現象:
場景一,當生產者端沒有嚴格按照輪詢的方式向各個消費隊列發送消息,但是消費者端依然采用輪詢的方式來消費,此時就會造成某個消費隊列中的消息積壓。例如,假設有3個消費隊列,而生產者端輪詢的向3個消費隊列發送消息,但是并不是每次都發送1條,而是給消費隊列1發送10條消息,給消費隊列2發送100條消息,給消費隊列3發送1000條消息。那么如果消費者端仍然按照輪詢均勻的消費,那么消費隊列3的消息會嚴重積壓,導致消費隊列3消費不掉的現象出現。
場景二,生產者端并非均勻消費。例如,消費者端可以按照每次1條消息,10條消息,100條消息的順序從各個消費隊列拉取消息,那么消費隊列3的消息會被消費得很快,而消費隊列1的消息會消費的很慢,盡管這兩個消費隊列的消息生產時間也許是一致的,同樣造成消費隊列1消費不掉的現象出現。
場景三,服務器集群的某個節點宕機。消費隊列往往支持分布式部署,多個消費隊列可能分布在不同的節點上,當一個節點宕機之后,該節點上存儲的消費隊列不能繼續接收消息,但是其他在線的節點仍然在接收消息,或者消費端仍在從其他在線節點消費消息。當該節點從故障中恢復過來之后,其存儲的消息數量要小于其他節點上消費隊列的消息數量。這也會導致消費對象消費不掉的現象。
基于以上情況,如何保證每個消費在任何情況下都能被消費者端正確的消費掉是本領域亟待解決的問題,目前各個開源系統都沒有完美的解決這一問題。
發明內容
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于努比亞技術有限公司,未經努比亞技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710370175.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:盒子結構建筑的盒子單元與寬平臺板拼接節點
- 下一篇:一種智能復合保溫板





