Reactor反應器模式 (epoll)


1. 背景

最近在看redis源碼,主體流程看完了。
在網上看到了reactor模式,看了一下,其實我們經常使用這種模式。

2. 什么是reactor模式

反應器設計模式(Reactor pattern)是一種為處理並發服務請求,並將請求提交到一個或者多個服務處理程序的事件設計模式。
當客戶端請求抵達后,服務處理程序使用多路分配策略,由一個非阻塞的線程來接收所有的請求,然后派發這些請求至相關的工作線程進行處理。
簡單說,就是如何處理多個客戶端的並發請求的解決模式。

3. 一般實現方法

3.1 epoll管理大量客戶端(可讀、可寫)

處理大量客戶端請求,不能去挨個輪訓,這個要使用epoll。
epoll由於select, poll。這個網上有很多資料。

3.2 請求的單線程處理(redis中的特殊處理)

到達服務端的請求,redis代碼中,使用單線程處理。
redis使用就是單線程既要處理連接、也要處理請求,因為redis全內存,避免了線程間加鎖、切換等。

3.3 請求的多線程處理(更一般的架構處理)

通常架構中都是采用多線程來處理到達服務器的請求。
將請求放到無鎖隊列中,處理線程循環來請求任務即可。
因為服務器代碼中,可能會訪問第三方存儲等長耗時處理。用多線程加速。

4. 參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM