併發程式設計 Disruptor併發框架

2022-07-13 09:51:08 字數 1723 閱讀 7618

* disruptor是什麼?

* disruptor是乙個高效能的非同步處理框架,或者可以認為是最快的訊息框架(輕量的jms),也可以認為是乙個觀察者模式的實現,或者事件監聽模式的實現

* disruptor入門程式

* 在disruptor中實現helloworld入門程式的步驟:

* 1.建立乙個event類(資料)

* 2.建立乙個工廠event類,用於建立event類例項物件

* 3.需要由乙個事件監聽類,用於處理資料(event類)

* 4.進行測試**的編寫,例項化disruptor例項,配置一系列引數,然後對disruptor例項繫結事件監聽類,接收並處理資料

* 5.在disruptor中,真正儲存資料的核心是ringbuffer,通過disruptor例項拿到它,然後把資料生產出來,把資料加到ringbuffer例項中

* 相關術語

* ringbuffer:

被看作disruptor最主要的元件,然而從3.0開始ringbuffer僅僅負責儲存和更新在disruptor中流通的資料。對一些特殊的使用場景能夠被使用者(使用其他資料結構)完全替代

* sequence:

disruptor使用sequence來表示乙個特殊元件處理的序號。和disruptor一樣,每個消費者(eventprocessor)都維持著乙個sequence。大部分的併發**依賴這些sequence值的運轉,因此sequence支援多種當前為atomiclong類的特性

* sequencer:

這是disruptor真正的核心。實現了這個介面的兩種生產者(單生產者和多生產者)均實現了所有的併發演算法,為了在生產者和消費者之間進行準確快速的資料傳遞

* sequencebarrier:

由sequencer生成,並且包含了已經發布的sequence的引用,這些的sequence源於sequencer和一些獨立的消費者的sequence。它包含了決定是否有供消費者來消費的event的邏輯

* waitstrategy:

決定乙個消費者將如何等待生產者將event置入disruptor

* event:

從生產者到消費者過程中所處理的資料單元。disruptor中沒有**表示event,因為它完全是由使用者定義的

* eventprocessor[相當於乙個執行緒]:

主要事件迴圈,處理disruptor中的event,並且擁有消費者的sequence。它有乙個實現類是batcheventprocessor,包含了event loop有效的實現,並且將**到乙個eventhandler介面的實現物件

* eventhandler[事件監聽、或稱為消費者]:

由使用者實現並且代表了disruptor中的乙個消費者的介面

* producer:

由使用者實現,它呼叫ringbuffer來插入事件(event),在disruptor中沒有相應的實現**,由使用者實現

* workprocessor:

確保每個sequence只被乙個processor消費,在同乙個workpool中的處理多個workprocessor不會消費同樣的sequence

* workerpool:

乙個workprocessor池,其中workprocessor將消費sequence,所以任務可以在實現workhandler介面的worker之間移交

* lifecycleaware:

當batcheventprocessor啟動和停止時,於實現這個介面用於接收通知

併發框架Disruptor

martin fowler在自己 上寫了一篇 lmax架構 的文章,在文章中他介紹了lmax是一種新型零售金融交易平台,它能夠以很低的延遲產生大量交易。這個系統是建立在jvm平台上,其核心是乙個業務邏輯處理器,它能夠在乙個執行緒裡每秒處理6百萬訂單。業務邏輯處理器完全是執行在記憶體中,使用事件源驅動...

併發框架Disruptor譯文

martin fowler在自己 上寫了一篇lmax架構的文章,在文章中他介紹了lmax是一種新型零售金融交易平台,它能夠以很低的延遲產生大量交易。這個系統是建立在jvm平台上,其核心是乙個業務邏輯處理器,它能夠在乙個執行緒裡每秒處理6百萬訂單。業務邏輯處理器完全是執行在記憶體中,使用事件源驅動方式...

併發框架Disruptor譯文

disruptor它是乙個開源的併發框架,並獲得2011 duke s 程式框架創新獎,能夠在無鎖的情況下實現網路的queue併發操作。本文是disruptor官網中發布的文章的譯文 現在被移到了github 剖析disruptor 為什麼會這麼快?一 鎖的缺點 剖析disruptor 為什麼會這麼...