夜光序言:
生活不可能像你想象得那麼好,但也不會像你想象地那麼糟。我覺得人的脆弱和堅強都超乎自己的想象。
正文:二十七、Netty
1.什麼是Netty?
Netty是高性能事件驅動、異步非阻塞的java開源框架。
Netty基於NIO的客戶端,服務端的編程框架,具有穩定性和伸縮性。
2.Netty的使用場景
高性能領域
多線程併發領域
異步通信領域
3.IO通信
1.BIO通信
一個線程負責連接
一請求一應答
缺乏彈性伸縮能力
2.僞異步IO通信
線程池負責連接
M請求N應答
線程池阻塞
3.NIO通信
緩衝區buffer
通道channel
多路複用器selector
4.AIO通信
連接註冊讀寫事件和回調函數
讀寫方法異步
主動通知程序
4.原生NIO的缺陷
類庫和API繁雜
入門門檻高
工作量和難度大
JDK NIO存在BUG
5.Netty的優勢
API簡單
入門門檻低
性能高
成熟、穩定
6.什麼是webSocket?
H5協議規範、握手機制,解決客戶端與服務端實時通信而產生的技術
7.webSocket的優勢
節省通信開銷
服務器主動傳送數據給客戶端
實時通信
8.webSocket建立連接
1.客戶端發起握手請求
2.服務端端響應請求
3.連接建立
9.webSocket生命週期
1.打開事件
2.消息事件
3.錯誤事件
4.關閉事件
10.webSocket連接關閉
服務器關閉底層TCP連接
客戶端發起TCP close
11.Netty實現webSocket通信
1.Netty開發服務端
2.HTML實現客戶端
3.實現服務端與客戶端的實時交互