1. 背景
最近在看redis源碼,主體流程看完了。
在網上看到了reactor模式,看了一下,其實我們經常使用這種模式。
2. 什么是reactor模式
反應器設計模式(Reactor pattern)是一種為處理並發服務請求,並將請求提交到一個或者多個服務處理程序的事件設計模式。
當客戶端請求抵達后,服務處理程序使用多路分配策略,由一個非阻塞的線程來接收所有的請求,然后派發這些請求至相關的工作線程進行處理。
簡單說,就是如何處理多個客戶端的並發請求
的解決模式。
3. 一般實現方法
3.1 epoll管理大量客戶端(可讀、可寫)
處理大量客戶端請求,不能去挨個輪訓,這個要使用epoll。
epoll由於select, poll。這個網上有很多資料。
3.2 請求的單線程處理(redis中的特殊處理
)
到達服務端的請求,redis代碼中,使用單線程處理。
redis使用就是單線程既要處理連接、也要處理請求,因為redis全內存,避免了線程間加鎖、切換等。
3.3 請求的多線程處理(更一般的架構處理
)
通常架構中都是采用多線程來處理到達服務器的請求。
將請求放到無鎖隊列
中,處理線程循環來請求任務即可。
因為服務器代碼中,可能會訪問第三方存儲等長耗時處理。用多線程加速。