做者:rickiyang
出處:www.cnblogs.com/rickiyang/p/11074238.htmlhtml
開發出高質量的 NIO 程序並非一件簡單的事情。java
除去 NIO 固有的複雜性和 Bug 不談,做爲一個 NIO 服務端,須要可以處理網絡的閃斷、客戶端的重複接入、客戶端的安全認證、消息的編解碼、半包讀寫等狀況, 若是你沒有足夠的 NIO 編程經驗積累, 一個 NIO 框架的穩定每每須要半年甚至更長的時間。linux
更爲糟糕的是,一旦在生產環境中發生問題,每每會致使跨節點的服務調用中斷,嚴重的可能會致使整個集羣環境都不可用, 須要重啓服務器,這種非正常停機會帶來巨大的損失。面試
從可維護性角度看,因爲 NIO 採用了異步非阻塞編程模型,並且是一個 I/O 線程處理多條鏈路,它的調試和跟蹤很是麻煩,特別是生產環境中的問題,咱們沒法進行有效的調試和跟蹤,每每只能靠一些日誌來幫助分析,定位難度很大。spring
對於 Java 原生的 IO 咱們之因此不選擇使用是由於:編程
基於上述緣由大多數場景下都不建議直接使原生 NIO,除非你精通 NIO 編程或者是有特殊的須要,不然做爲服務器編程的NIO可能會帶來巨大的生產隱患。緩存
關於Netty:安全
Netty是一個高性能、異步事件驅動的NIO框架,它提供了對TCP、UDP和文件傳輸的支持,做爲一個異步NIO框架,Netty的全部IO操做都是異步非阻塞的,經過Future-Listener機制,用戶能夠方便的主動獲取或者經過通知機制得到IO操做結果。服務器
做爲當前最流行的NIO框架,Netty在互聯網領域、大數據分佈式計算領域、遊戲行業、通訊行業等得到了普遍的應用,一些業界著名的開源組件也基於Netty的NIO框架構建。網絡
與Netty一樣功能的NIO框架還有Mina,Netty的主導做者與Mina的主導做者是同一人,在設計理念上與Mina基本上是一致的。Mina出身於開源界的大牛Apache組織,Netty出身於商業開源大亨Jboss。
這幾年Netty社區相對比較活躍,因此咱們就先選擇Netty做爲入手網絡編程的首選,有時間再學習一下Mina。
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2021最新版)
2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!
3.阿里 Mock 工具正式開源,幹掉市面上全部 Mock 工具!
4.Spring Cloud 2020.0.0 正式發佈,全新顛覆性版本!
以爲不錯,別忘了隨手點贊+轉發哦!