[發(fā)明專利]分布式高并發(fā)消息隊列推送系統(tǒng)有效
| 申請?zhí)枺?/td> | 201810647446.1 | 申請日: | 2018-06-21 |
| 公開(公告)號: | CN108874562B | 公開(公告)日: | 2022-08-02 |
| 發(fā)明(設計)人: | 黃鵬;朱旋 | 申請(專利權)人: | 北京順豐同城科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;H04L67/55;H04L67/10;H04L47/62 |
| 代理公司: | 北京市廣友專利事務所有限責任公司 11237 | 代理人: | 祁獻民 |
| 地址: | 100083 北京市海淀區(qū)*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式 并發(fā) 消息 隊列 推送 系統(tǒng) | ||
1.一種分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,包括代理服務器、kafka消息存儲系統(tǒng)和消息推送服務器集群,其中:
所述代理服務器,用于接收業(yè)務方的消息,所述消息中包含有關聯(lián)業(yè)務標識位,所述代理服務器收到消息后根據(jù)消息中的關聯(lián)業(yè)務標識位將消息存儲至所述kafka消息存儲系統(tǒng)的對應分區(qū);
所述kafka消息存儲系統(tǒng),采用集群式布署來分布式存儲分區(qū);
所述消息推送服務器集群中的每個推送服務器包括一個或多個推送進程,推送進程用于處理對應分區(qū)中的消息,每個推送進程按所述kafka消息存儲系統(tǒng)中消費者組名進行歸組;
每個推送進程包括一個分區(qū)消費者線程,每個分區(qū)消費者線程配置多個消息推送子線程和一個分區(qū)消費位置管理器;推送進程與分區(qū)具有對應關系,一個推送進程對應處理一個分區(qū)中的消息;分區(qū)消費者線程與分區(qū)也有對應關系,一個分區(qū)消費者線程對應處理一個分區(qū)中的消息;
所述分區(qū)消費者線程用于消費所述kafka消息存儲系統(tǒng)的分區(qū)中的消息,當分區(qū)消費者線程從對應分區(qū)順序拉到消息后,依次輪詢消息推送子線程,當遇到空閑消息推送子線程時,則將消息分配給該消息推送子線程,并記錄該消息推送子線程與該消息的關聯(lián)業(yè)務標識位的對應關系,并將消息的序號添加到分區(qū)消費位置管理器;后續(xù)若拿到相同關聯(lián)業(yè)務標識位的消息,則分配給對應的消息推送子線程;
所述消息推送子線程用于在收到消息后將消息放入私有隊列中,并順序消費私有隊列中的消息;
所述分區(qū)消費位置管理器用于維護當前分區(qū)消費者線程處理的消息的消費位置狀態(tài);
其中,所述分布式高并發(fā)消息隊列推送系統(tǒng)還包括消費位置推送失敗記錄區(qū);當分區(qū)消費位置管理器接收到推送成功或失敗的消費位置狀態(tài)時,掃描隊列,取推送成功和推送失敗相連續(xù)的最大位置提交到所述kafka消息存儲系統(tǒng),以使得下次從kafka消息存儲系統(tǒng)拉取消息時從該位置拉取;其中連續(xù)是指:當只有推送成功時,取連續(xù)推送成功的最大位置,當只有推送失敗時,取連續(xù)推送失敗的最大位置;當既有推送成功和推送失敗時,取兩者連續(xù)的最大位置;當還包括待推送時,待推送位置為不連續(xù);
其中,所述消費位置推送失敗記錄區(qū)的目錄規(guī)則為組名/分區(qū)/消費位置;
若重啟服務或者消息推送服務器集群中添加了新的推送進程導致重新分配kafka消息存儲系統(tǒng)分區(qū),則根據(jù)分配到的分區(qū)號及組名去對應的消費位置推送失敗記錄區(qū)加載失敗的消息進行推送。
2.根據(jù)權利要求1所述的分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,同組中的推送進程拉取不同分區(qū)消息,不同組的推送進程可重復拉取同一分區(qū)消息。
3.根據(jù)權利要求1所述的分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,所述代理服務器采用集群式布署,所述代理服務器啟動后與所述kafka消息存儲系統(tǒng)建立長連,并提供網(wǎng)頁服務器服務供業(yè)務方調(diào)用。
4.根據(jù)權利要求1所述的分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,所述代理服務器根據(jù)消息中的關聯(lián)業(yè)務標識位將消息存儲至所述kafka消息存儲系統(tǒng)的對應分區(qū)包括:
所述代理服務器將消息中的關聯(lián)業(yè)務標識位對所述kafka消息存儲系統(tǒng)的分區(qū)數(shù)進行取余操作,將消息存儲至余數(shù)對應的分區(qū)。
5.根據(jù)權利要求1所述的分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,每個推送服務器啟動時初始化i*j個推送進程,其中i為所述kafka消息存儲系統(tǒng)中分區(qū)數(shù),j為所述kafka消息存儲系統(tǒng)中消費者組名數(shù)量。
6.根據(jù)權利要求1所述的分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,所述消息推送子線程順序消費私有隊列中的消息,包括:
消息推送子線程推送業(yè)務采用輪循下游業(yè)務集群的方式,當推送失敗或成功即將消費位置狀態(tài)發(fā)送給分區(qū)消費位置管理器。
7.根據(jù)權利要求1所述的分布式高并發(fā)消息隊列推送系統(tǒng),其特征在于,每個推送服務器還包括用于監(jiān)控其上每個推送進程中分區(qū)消費者線程狀態(tài)的網(wǎng)頁服務器。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京順豐同城科技有限公司,未經(jīng)北京順豐同城科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810647446.1/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





