netty相對於傳統的java序列化+BIO的通信框架性能提高了8倍,主要是對NIO的封裝能夠支持10w的TPS
netty實現流程:
內存池 :
高效的reactor線程模型 :
1) Reactor單線程模型: 所有IO操作都在同一個NIO線程上完成,NIO線程的職責如下 :
a.作爲NIO服務端,接收客戶端TCP連接,
b.作爲NIO客戶端,向服務端發起TCP鏈接
c. 讀取通信端的請求或應答消息
2) Reactor多線程模型 :
3) 主從Reactor多線程模型
無鎖化的串行設計理念:
在大多數場景下,並行多線程處理可以提升系統的併發性能,但是如果對於共享資源的併發訪問處理不當,會帶來嚴重的鎖競爭,這最終會導致性能下降,爲儘可能的避免鎖競爭帶來的性能損耗,可以通過串行化設計,即消息的處理儘可能在同一線程內完成,期間不進行線程切換,這樣就避免了多線程競爭和鎖切換,