[發(fā)明專利]一種基于Disruptor的數(shù)據(jù)收發(fā)方法在審
| 申請(qǐng)?zhí)枺?/td> | 201611199684.8 | 申請(qǐng)日: | 2016-12-22 |
| 公開(公告)號(hào): | CN106802824A | 公開(公告)日: | 2017-06-06 |
| 發(fā)明(設(shè)計(jì))人: | 蔣文彬;李偉;廖奎林;楊俊鷗;雷笑海;王毅;孫圣廣 | 申請(qǐng)(專利權(quán))人: | 上海大漢三通數(shù)據(jù)通信有限公司 |
| 主分類號(hào): | G06F9/46 | 分類號(hào): | G06F9/46;G06F9/54 |
| 代理公司: | 北京集佳知識(shí)產(chǎn)權(quán)代理有限公司11227 | 代理人: | 羅滿 |
| 地址: | 201203 上海市浦東新區(qū)自由貿(mào)易*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 disruptor 數(shù)據(jù) 收發(fā) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種基于Disruptor的數(shù)據(jù)收發(fā)方法。
背景技術(shù)
在大規(guī)模的數(shù)據(jù)處理中,為了實(shí)現(xiàn)高性能(低延遲、低資源耗用等)系統(tǒng),如電子商務(wù)系統(tǒng),金融交易系統(tǒng)等。工程師們會(huì)結(jié)合現(xiàn)代計(jì)算機(jī)處理器(CPU)的特點(diǎn),設(shè)計(jì)多任務(wù)、多線程的架構(gòu)。這些運(yùn)行的任務(wù)線程,可以爭用處理器計(jì)算時(shí)間,各自獨(dú)立執(zhí)行,最終完成同一個(gè)或不同的處理任務(wù),這就是我們說的并發(fā)。并發(fā)程序中通常會(huì)發(fā)生針對(duì)同一程序?qū)ο蠡蛴?jì)算機(jī)資源的搶占爭用,為了保證這種對(duì)某一資源對(duì)象的訪問操作是安全有序(即線程安全)的,必須為它們?cè)O(shè)計(jì)相應(yīng)的鎖,即我們通常講的并發(fā)同步鎖。所以就很容易看到“申請(qǐng)鎖”、“讀寫數(shù)據(jù)對(duì)象(操作資源對(duì)象)”、“釋放鎖”的循環(huán)反復(fù)情景。在各種架構(gòu)中,都有專門的、支持并發(fā)任務(wù)處理的實(shí)現(xiàn),如Java中的線程池ThreadPoolExecutor。
在生產(chǎn)者-消費(fèi)者場景中,如果生產(chǎn)者和消費(fèi)者分別使用不同的線程實(shí)現(xiàn),那么這一模型的實(shí)質(zhì)就是不同線程對(duì)數(shù)據(jù)的共享和傳遞。而在當(dāng)前普遍的架構(gòu)中,是使用隊(duì)列(Queue)來共享數(shù)據(jù),生產(chǎn)者線程將消息產(chǎn)出后,放入隊(duì)列,消費(fèi)者線程從該隊(duì)列中獲取消息并處理。消息因此得到了傳遞。所以,隊(duì)列也可以看成是消息的緩沖區(qū)。這種架構(gòu)允許生產(chǎn)線程在消費(fèi)線程處理不過來的情況下,還可以繼續(xù)后面的工作。在Java中,對(duì)于隊(duì)列(Queue)來說,BlockingQueue是主要的線程安全版本。
基于BlockingQueue和ThreadPoolExecutor這一典型的傳統(tǒng)技術(shù)方案。雖然它幫助實(shí)現(xiàn)了異步的、較高性能的并發(fā)消息處理,但隨著業(yè)務(wù)增長和上游子系統(tǒng)提交的消息量增加,該方案的缺點(diǎn)也顯露無疑。這是因?yàn)椋@種任務(wù)處理機(jī)制存在以下明顯的不足(缺點(diǎn)):
(1)BlockingQueue和ThreadPoolExecutor中的并發(fā)同步鎖無處不在。而鎖技術(shù)是慢的,代價(jià)昂貴。因?yàn)樗蕾嚨讓硬僮飨到y(tǒng),這導(dǎo)致消息的處理延遲較高。
(2)線程需要申請(qǐng)CPU時(shí)間窗口以便執(zhí)行。數(shù)量眾多的線程間的上下文切換,意味著頻繁的CPU計(jì)算資源調(diào)度。最終的結(jié)果就是,整體的消息處理性能和吞吐量并不能隨著線程數(shù)量的增加而線性提升。
由此可見,在數(shù)據(jù)收發(fā)過程中,如何克服BlockingQueue和ThreadPoolExecutor所帶來的問題是本領(lǐng)域技術(shù)人員亟待解決的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于Disruptor的數(shù)據(jù)收發(fā)方法,用于在數(shù)據(jù)收發(fā)過程中,克服BlockingQueue和ThreadPoolExecutor所帶來的問題。
為解決上述技術(shù)問題,本發(fā)明提供一種基于Disruptor的數(shù)據(jù)收發(fā)方法,用于數(shù)據(jù)處理系統(tǒng),包括:
當(dāng)接收到上游子系統(tǒng)的待處理數(shù)據(jù)時(shí),事件處理器獲取Disruptor下的RingBuffer的當(dāng)前最新寫入數(shù)據(jù)的序列號(hào),并將所述待處理數(shù)據(jù)寫入所述序列號(hào)所在槽的下一個(gè)空閑槽;
所述RingBuffer將當(dāng)前最新寫入數(shù)據(jù)的序列號(hào)加1并公布,然后通知事件監(jiān)聽處理器以進(jìn)行數(shù)據(jù)的消費(fèi)和處理。
優(yōu)選地,所述RingBuffer中的槽的數(shù)量為2n,其中,n為正整數(shù)。
優(yōu)選地,所述序列號(hào)與所述槽的位置號(hào)相同。
優(yōu)選地,所述事件處理器通過基于Netty的數(shù)據(jù)傳輸協(xié)議接收所述上游子系統(tǒng)的待處理數(shù)據(jù)。
優(yōu)選地,所述Disruptor支持單個(gè)生產(chǎn)者模式或多個(gè)生產(chǎn)者模式。
優(yōu)選地,還包括:
所述事件監(jiān)聽處理器通過ExecutorService提供的線程池觸發(fā)所述數(shù)據(jù)的消費(fèi)和處理。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海大漢三通數(shù)據(jù)通信有限公司,未經(jīng)上海大漢三通數(shù)據(jù)通信有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611199684.8/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 一種基于Disruptor的數(shù)據(jù)收發(fā)方法
- 基于disruptor提高業(yè)務(wù)系統(tǒng)吞吐量方法、裝置及介質(zhì)、服務(wù)器
- 一種日志處理方法、裝置、設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種基于Disruptor的數(shù)據(jù)讀寫方法、裝置及介質(zhì)
- 一種數(shù)據(jù)庫日志統(tǒng)計(jì)方法、系統(tǒng)及相關(guān)裝置
- 一種讀取數(shù)據(jù)的方法及計(jì)算機(jī)設(shè)備
- 一種金融市場會(huì)員端全息行情獲取方法
- 基于數(shù)據(jù)庫的海量數(shù)據(jù)交換方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)
- 一種證券柜臺(tái)大并發(fā)數(shù)據(jù)保存數(shù)據(jù)庫的系統(tǒng)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置





