反應器模式
反應器模式(Reactor_pattern)是一種為處理服務請求並發 提交到一個或者多個服務處理程序的事件設計模式。當請求抵達後,服務處理程序使用解多路分配策略,然後同步地派發這些請求至相關的請求處理程序。 [1]
結構
- 資源: 可供系統輸入或輸出的資源。
- 同步事件解多路器: 使用一個事件循環 ,以阻止所有的資源。當可以啟動一個同步操作上的資源不會阻塞,多路分解器發送資源到分發器。
- 分發器: 處理請求程序的註冊和註銷。將資源分發到相關的處理程序.
- 請求處理器: 應用程式定義的請求處理程序和相關資源。
屬性
所有的反應器系統在定義上是單線程的,但可以在多線程環境中存在。
優點
反應器模式可完全分離程序特定代碼,這意味着應用可分為模塊化的,可復用的組件。另外,由於請求的處理程序是同步調用,反應器模式可允許簡單粗粒並發而不必添加多線程並發系統的複雜性。
限制
由於反向的流程控制,反應器模式比過程模式更難以調試 [2]。此外,因為請求處理器只會被同步調用,因此會限制反應器模式的最大並發數,特別是在對稱多處理硬件。反應器模式的可擴展性,不僅受限於請求處理器的同步調用,同時也受解多路器限制。[3]
另請參見
- 廣播反應器模式 (該模式也會解多路復用和分發事件,但是是異步的)
- 應用伺服器
- C10K問題
參考
- ^ 施密特,道格拉斯等人。面向模式的軟件架構第2卷:模式的並發和網絡對象。第2卷。 Wiley出版社,2000。
- ^ Schmidt, Douglas C., An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events (PDF), [2015-02-04], (原始內容存檔 (PDF)於2015-04-05)
- ^ Kegel, Dan, The C10K problem, [2007-07-28], (原始內容存檔於2013-07-18)
外部連結
- 對象行為模式的解復用和調度處理對同步活動(頁面存檔備份,存於互聯網檔案館) 由 Douglas C.施密特
- APR網絡和反應器模式(頁面存檔備份,存於互聯網檔案館)
- 高度可擴展的NIO的伺服器的體系結構
- Akka的I/O層體系結構(頁面存檔備份,存於互聯網檔案館)