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