* 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 為什麼會這麼...