Netty概念、優勢及應用場景
什麼是Netty?
1)本質:JBoss做的一個Jar包
2)目的:快速開發高性能、高可靠性的網絡服務器和客戶端程序
3)優點:提供異步的、事件驅動的網絡應用程序框架和工具
爲什麼要用Netty?
特點
1)高併發
Netty是一款基於NIO(Nonblocking I/O,非阻塞IO)開發的網絡通信框架。
2)傳輸快
Netty的傳輸快其實也是依賴了NIO的一個特性——零拷貝。
3)封裝好
優勢
-
Netty封裝了NIO操作的很多細節,提供易於使用的API。
-
API使用簡單,開發門檻低;
-
功能強大,預置了多種編解碼功能,支持多種主流協議;
-
定製能力強,可以通過ChannelHandler對通信框架進行靈活地擴展;
-
性能高,通過與其他業界主流的NIO框架對比,Netty的綜合性能最優;
-
成熟、穩定,Netty修復了已經發現的所有JDK NIO BUG,業務開發人員不需要再爲NIO的BUG而 煩惱;
-
社區活躍,版本迭代週期短,發現的BUG可以被及時修復,同時,更多的新功能會加入;
-
經歷了大規模的商業應用考驗,質量得到驗證。在互聯網、大數據、網絡遊戲、企業應用、電信軟 件等衆多行業得到成功商用,證明了它已經完全能夠滿足不同行業的商業應用了。
應用場景有哪些?
- 分佈式系統,各個節點之間需要遠程服務調用,高性能的 RPC 框架必不可少,Netty 作爲異步高性能的通信框架,往往作爲基礎通信組件被這些 RPC 框架使用。典型的應用有:阿里分佈式服務框架 Dubbo 的 RPC 框架使用 Dubbo 協議進行節點間通信,Dubbo 協議默認使用 Netty 作爲基礎通信組件,用於實現各進程節點之間的內部通信。
- 構建高性能、低時延的各種 Java 中間件,例如 MQ、ESB 消息總線等,Netty 主要作爲基礎通信框架提供高性能、低時延的通信服務;
- 公有或者私有協議棧的基礎通信框架,例如可以基於 Netty 構建異步、高性能的 WebSocket 協議棧;
- 各領域應用,例如大數據、遊戲等,Netty 作爲高性能的通信框架用於內部各模塊的數據分發、傳輸和彙總等,實現模塊之間高性能通信。