[發(fā)明專利]消息隊列系統(tǒng)以及實現(xiàn)消息通信的方法有效
| 申請?zhí)枺?/td> | 201510413284.1 | 申請日: | 2015-07-14 |
| 公開(公告)號: | CN107038075B | 公開(公告)日: | 2020-12-25 |
| 發(fā)明(設(shè)計)人: | 張俊;何樂;張杰 | 申請(專利權(quán))人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 北京三友知識產(chǎn)權(quán)代理有限公司 11127 | 代理人: | 李輝 |
| 地址: | 英屬開曼群島大開曼*** | 國省代碼: | 暫無信息 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 消息 隊列 系統(tǒng) 以及 實現(xiàn) 通信 方法 | ||
1.一種消息隊列系統(tǒng),其特征在于,包括:第一緩沖區(qū)、第二緩沖區(qū)以及持久化存儲區(qū);其中,所述第一緩沖區(qū)和第二緩沖區(qū)位于消息生產(chǎn)者和消息消費者所在的服務(wù)器的內(nèi)存中,所述第二緩沖區(qū)包括主緩沖區(qū)和備緩沖區(qū);
所述第一緩沖區(qū),用于緩存消息生產(chǎn)者推送的消息,將消息生產(chǎn)者推送的消息存儲到所述持久化存儲區(qū)中,并將已存儲到所述持久化存儲區(qū)的消息發(fā)送給所述第二緩沖區(qū);
所述持久化存儲區(qū),用于通過持久化存儲介質(zhì)對所述第一緩沖區(qū)發(fā)送的消息進行持久化存儲;
所述備緩沖區(qū),用于緩存所述第一緩沖區(qū)發(fā)送的消息;
所述主緩沖區(qū),用于將位于所述主緩沖區(qū)的消息傳遞給消息消費者,在將位于所述主緩沖區(qū)的消息全部傳遞給消息消費者之后,與所述備緩沖區(qū)進行主備切換。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,
所述備緩沖區(qū)還用于,在緩存所述第一緩沖區(qū)發(fā)送的消息之前,檢查自身是否存在內(nèi)存溢出,如果存在內(nèi)存溢出,丟棄所述第一緩沖區(qū)發(fā)送的消息,并將自身的當(dāng)前狀態(tài)標(biāo)記為非正常狀態(tài),如果不存在內(nèi)存溢出,繼續(xù)緩存所述第一緩沖區(qū)發(fā)送的消息;
所述主緩沖區(qū)還用于,在與所述備緩沖區(qū)進行主備切換之前,檢查所述備緩沖區(qū)的當(dāng)前狀態(tài)是否為正常狀態(tài),如果為非正常狀態(tài),不與所述備緩沖區(qū)進行主備切換,而從所述持久化存儲區(qū)中讀取消息,并將讀取的消息傳遞給消息消費者,如果為正常狀態(tài),繼續(xù)與所述備緩沖區(qū)進行主備切換。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述主緩沖區(qū)還用于,在從所述持久化存儲區(qū)中讀取消息之后,判斷在所述備緩沖區(qū)中是否存在下一個讀取的消息,如果存在,將所述備緩沖區(qū)的當(dāng)前狀態(tài)標(biāo)記為正常狀態(tài),如果不存在,維持所述備緩沖區(qū)的當(dāng)前狀態(tài)。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述持久化存儲區(qū)位于所述服務(wù)器外部的分布式文件系統(tǒng)中。
5.根據(jù)權(quán)利要求1至4中任意一項所述的系統(tǒng),其特征在于,所述主緩沖區(qū)和備緩沖區(qū)為同構(gòu)的緩沖區(qū)。
6.根據(jù)權(quán)利要求1至4中任意一項所述的系統(tǒng),其特征在于,所述消息生產(chǎn)者和消息消費者為運行在所述服務(wù)器上的兩個進程或者為運行在所述服務(wù)器上的一個進程中的兩個線程。
7.一種實現(xiàn)消息通信的方法,其特征在于,預(yù)先在消息生產(chǎn)者和消息消費者所在的服務(wù)器的內(nèi)存中建立第一緩沖區(qū)和第二緩沖區(qū),所述第二緩沖區(qū)包括主緩沖區(qū)和備緩沖區(qū),所述方法包括:
第一緩沖區(qū)緩存消息生產(chǎn)者推送的消息,將消息生產(chǎn)者推送的消息存儲到持久化存儲區(qū)中,以便將所述消息持久化地存儲在所述持久化存儲區(qū)中;
第一緩沖區(qū)將已存儲到所述持久化存儲區(qū)的消息發(fā)送給第二緩沖區(qū);
備緩沖區(qū)緩存第一緩沖區(qū)發(fā)送的消息;
主緩沖區(qū)將位于主緩沖區(qū)的消息傳遞給消息消費者,在將位于所述主緩沖區(qū)的消息全部傳遞給消息消費者之后,與備緩沖區(qū)進行主備切換。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,
所述方法還包括:
在緩存第一緩沖區(qū)發(fā)送的消息之前,備緩沖區(qū)檢查自身是否存在內(nèi)存溢出,如果存在內(nèi)存溢出,丟棄所述第一緩沖區(qū)發(fā)送的消息,并將自身的當(dāng)前狀態(tài)標(biāo)記為非正常狀態(tài);
在與備緩沖區(qū)進行主備切換之前,主緩沖區(qū)檢查備緩沖區(qū)的當(dāng)前狀態(tài)是否為正常狀態(tài),如果為非正常狀態(tài),不與備緩沖區(qū)進行主備切換,而從持久化存儲區(qū)中讀取消息,以便將讀取的消息傳遞給消息消費者;
則所述備緩沖區(qū)緩存第一緩沖區(qū)發(fā)送的消息為:
如果不存在內(nèi)存溢出,備緩沖區(qū)緩存第一緩沖區(qū)發(fā)送的消息;
則所述主緩沖區(qū)與備緩沖區(qū)進行主備切換為:
如果為正常狀態(tài),主緩沖區(qū)與備緩沖區(qū)進行主備切換。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述方法還包括:
在從持久化存儲區(qū)中讀取消息之后,主緩沖區(qū)判斷在備緩沖區(qū)中是否存在下一個讀取的消息,如果存在,將所述備緩沖區(qū)的當(dāng)前狀態(tài)標(biāo)記為正常狀態(tài),如果不存在,維持所述備緩沖區(qū)的當(dāng)前狀態(tài)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團控股有限公司,未經(jīng)阿里巴巴集團控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510413284.1/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





