應用程式開發中經常採用多執行緒模型(如下圖),工作原理一般是對於每乙個
request
,dispatcher
會為其建立並分配乙個執行緒,該執行緒負責這個請求的處理。這種模式優點是處理邏輯清晰,容易開發,執行粒度也是整個完整的處理流程。
為解決上述問題,出現了以下事件驅動優化模型,
工作原理是將處理流程分割成多個步驟,每乙個步驟都實現為乙個有限狀態機(
fsm),所有的處理請求會作為
event
進入系統。由
scheduler
負責傳遞給相應
fsm。
fsm的處理結果也以
event
形式輸出給
scheduler
。新的event
會再次被
scheduler
進行**給下乙個
fsm,直至處理完成(如下圖所示,感覺很熟悉哦)。
這種模型的優點是單執行緒處理事件,負載增加的時候,吞吐量相對平穩。缺點是
scheduler
的設計和實現過於複雜,針對於不同的應用和系統的邏輯變更需要不同的實現,以下是吞吐量測試的乙個資料:
學院派關注到這個問題,加州大學伯克利分校研究出一套優秀的高效能網際網路伺服器架構模型,設計目標是支援大規模併發處理、簡化系統開發、支援處理監測、支援系統資源管理等:
實現上,將業務的處理劃分各個
stage
,利用queue
連線起來形成乙個
pipeline
的處理鏈,並且在
stage
中利用控制器進行資源的調控。資源的排程依據執行時的狀態監視的資料來進行,從而形成一種反應控制的機制。
的劃分也簡化了程式設計,並且通過
queue
和每個stage
的執行緒池來分擔高併發,請求並保持吞吐量和響應時間的平衡,具體的
stage
模型如下,乙個接受輸入的
eventqueue
,乙個應用開發者編寫的
event handler
,乙個controller
用於對執行過程進行控制。包括併發執行緒數量,乙個
thread pool
用於併發處理。
spring
出品了spring integration
框架實現了上述模型,通過
message
,channel
,route
模型實現了基本功能,支援請求訂閱,請求響應(點對點)等多種互動模型。
詳細:[伯克利大學]seda an architecture for well-conditioned,scalable internet services.pdf
併發程式設計 Disruptor併發框架
disruptor是什麼?disruptor是乙個高效能的非同步處理框架,或者可以認為是最快的訊息框架 輕量的jms 也可以認為是乙個觀察者模式的實現,或者事件監聽模式的實現 disruptor入門程式 在disruptor中實現helloworld入門程式的步驟 1.建立乙個event類 資料 2...
併發框架Disruptor
martin fowler在自己 上寫了一篇 lmax架構 的文章,在文章中他介紹了lmax是一種新型零售金融交易平台,它能夠以很低的延遲產生大量交易。這個系統是建立在jvm平台上,其核心是乙個業務邏輯處理器,它能夠在乙個執行緒裡每秒處理6百萬訂單。業務邏輯處理器完全是執行在記憶體中,使用事件源驅動...
Java併發框架Executor
executor 可管理thread物件,它在客戶端和任務執行之間提供了乙個間接層。它允許我們管理非同步任務的執行,而無需顯示的管理執行緒的生命週期。建立執行緒池 executors類,提供了一系列工廠方法用於創先執行緒池,返回的執行緒池都實現了executorservice介面。1 executo...