一.首先我們先說明爲什麼不選擇java原生NIO
1.NIO類庫和API複雜,使用麻煩。
2.需要具備其它的額外技能做鋪墊,例如 熟悉Java多線程和網絡編程。
3.可靠性能力補齊,工作量和難度都很大,例如 客戶端面臨斷重連,網絡閃斷,半包讀寫,失敗緩存,網絡擁堵,異常碼流等問題。
4.JDK NIO的 BUG ,例如臭名昭著的 epoll bug,會導致Selector空輪詢,最終導致CPU100%。
二.爲甚選擇Netty
1.API使用簡單,開發門檻低。
2.功能強大,預置了多種編解碼功能,支持多種主流協議。
3.定製能力強,可以通過ChannelHandler 對通信框架進行靈活的擴展。
4.性能高,與其它業界主流NIO框架比,Netty綜合性能最優。
5.社區活躍,版本迭代週期短,發現bug可以及時解決。