主流服务器框架总结
libevent
?編輯muduo?
muduo 是一個基于非阻塞 IO 和事件驅(qū)動的現(xiàn)代 C++ 網(wǎng)絡(luò)庫,原生支持 one loop per thread 這種 IO 模型。muduo 適合開發(fā) Linux 下的面向業(yè)務(wù)的多線程服務(wù)端網(wǎng)絡(luò)應(yīng)用程序,其中“面向業(yè)務(wù)的網(wǎng)絡(luò)編程”的定義.最近簡單讀了下muduo的源碼,本文對其主要實(shí)現(xiàn)/結(jié)構(gòu)簡單總結(jié)下。
muduo的主要源碼位于net文件夾下,base文件夾是一些基礎(chǔ)代碼,不影響理解網(wǎng)絡(luò)部分的實(shí)現(xiàn)。muduo主要類包括:
- EventLoop
- Channel
- Poller
- TcpConnection
- TcpClient
- TcpServer
- Connector
- Acceptor
- EventLoopThread
- EventLoopThreadPool
其中,Poller(及其實(shí)現(xiàn)類)包裝了Poll/EPoll,封裝了OS針對設(shè)備(fd)的操作;Channel是設(shè)備fd的包裝,在muduo中主要包裝socket;TcpConnection抽象一個TCP連接,無論是客戶端還是服務(wù)器只要建立了網(wǎng)絡(luò)連接就會使用TcpConnection;TcpClient/TcpServer分別抽象TCP客戶端和服務(wù)器;Connector/Acceptor分別包裝TCP客戶端和服務(wù)器的建立連接/接受連接;EventLoop是一個主控類,是一個事件發(fā)生器,它驅(qū)動Poller產(chǎn)生/發(fā)現(xiàn)事件,然后將事件派發(fā)到Channel處理;EventLoopThread是一個帶有EventLoop的線程;EventLoopThreadPool自然是一個EventLoopThread的資源池,維護(hù)一堆EventLoopThread。
閱讀庫源碼時可以從庫的接口層著手,看看關(guān)鍵功能是如何實(shí)現(xiàn)的。對于muduo而言,可以從TcpServer/TcpClient/EventLoop/TcpConnection這幾個類著手。接下來看看主要功能的實(shí)現(xiàn):
總結(jié)
- 上一篇: Behavior Designer
- 下一篇: CDH Yarn资源动态分配 - 指定资