从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)
2019獨角獸企業重金招聘Python工程師標準>>>
從Jetty、Tomcat和Mina中提煉NIO構架網絡服務器的經典模式(三) 博客分類: java最后我們再看看NIO方面最著名的框架Mina,拋開Mina有關session和處理鏈條等方面的設計,單單挑出前端網絡層處理來看,也采用的是與Jetty和Tomcat類似的模式,只不過它做了些簡化,它沒有隔開請求偵聽和請求處理兩個階段,因此,宏觀上看它只分為兩個階段。
先看看它的類圖:
其中:
SocketAcceptor起線程調用SocketAcceptor.Work負責新連接偵聽,并交給SocketIoProcessor處理
SocketIoProcessor起線程調用SocketIoProcessor.Work負責偵聽所管轄的channel隊列, select到新請求后交給IoFilterChain處理
IoFilterChain組裝了mina的處理鏈條
在整個服務端處理請求的過程可以分為兩個階段,時序圖如下所示:
階段一:監聽并建立連接
階段二:?監聽并處理客戶端的請求
?
總結來看Jetty、tomcat和Mina,我們也大概清楚了該如何基于NIO來構架網絡服務器,通過這個提煉出來的模式,我寫了個很簡單的NIO Server,在保持連接的情況下,可以很輕松的保持6萬連接(由于有65535連接限制),并能在負載只有3左右的情況下(4核),承擔3到4萬的TPS請求(當然做的事情很簡單,僅僅是把buffer轉化為自定義協議的包,然后再把包轉為buffer寫到客戶端)。因此簡單地實踐一下可以證明這個模式的有效性,不妨再看看這個圖,希望對大伙以后寫server有用:
http://blog.csdn.net/cutesource/article/details/6192163
轉載于:https://my.oschina.net/xiaominmin/blog/1599305
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Hystrix守护应用(3)
- 下一篇: HierarchicalDataTemp