1.Netty 是什么?
Netty 是一個(gè)基于 JAVA NIO 類庫的異步通信框架,它的架構(gòu)特點(diǎn)是:異步非阻塞、基于事件驅(qū)動(dòng)、高性能、高可靠性和高可定制性。
2.使用 Netty 能夠做什么?
開發(fā)異步、非阻塞的 TCP 網(wǎng)絡(luò)應(yīng)用程序;
開發(fā)異步、非阻塞的 UDP 網(wǎng)絡(luò)應(yīng)用程序;
開發(fā)異步文件傳輸應(yīng)用程序;
開發(fā)異步 HTTP 服務(wù)端和客戶端應(yīng)用程序;
提供對(duì)多種編解碼框架的集成,包括谷歌的 Protobuf、Jbossmarshalling、Java 序列化、壓縮編解碼、XML 解碼、字符串編解碼等,這些編解碼框架可以被用戶直接使用;
提供形式多樣的編解碼基礎(chǔ)類庫,可以非常方便的實(shí)現(xiàn)私有協(xié)議棧編解碼框架的二次定制和開發(fā);
基于職責(zé)鏈模式的 Pipeline-Handler 機(jī)制,用戶可以非常方便的對(duì)網(wǎng)絡(luò)事件進(jìn)行攔截和定制;
所有的 IO 操作都是異步的,用戶可以通過 Future-Listener 機(jī)制主動(dòng) Get 結(jié)果或者由 IO 線程操作完成之后主動(dòng) Notify 結(jié)果,用戶的業(yè)務(wù)線程不需要同步等待;
IP 黑白名單控制;
打印消息碼流;
流量控制和整形;
性能統(tǒng)計(jì);
基于鏈路空閑事件檢測的心跳檢測
3.Netty 在哪些行業(yè)得到了應(yīng)用?
互聯(lián)網(wǎng)行業(yè):隨著網(wǎng)站規(guī)模的不斷擴(kuò)大,系統(tǒng)并發(fā)訪問量也越來越高,傳統(tǒng)基于 Tomcat 等 Web 容器的垂直架構(gòu)已經(jīng)無法滿足需求,需要拆分應(yīng)用進(jìn)行服務(wù)化,以提高開發(fā)和維護(hù)效率。從組網(wǎng)情況看,垂直的架構(gòu)拆分之后,系統(tǒng)采用分布式部署,各個(gè)節(jié)點(diǎn)之間需要遠(yuǎn)程服務(wù)調(diào)用,高性能的 RPC 框架必不可少,Netty 作為異步高性能的通信框架,往往作為基礎(chǔ)通信組件被這些 RPC 框架使用。
典型的應(yīng)用有:阿里分布式服務(wù)框架 Dubbo 的 RPC 框架使用 Dubbo 協(xié)議進(jìn)行節(jié)點(diǎn)間通信,Dubbo 協(xié)議默認(rèn)使用 Netty 作為基礎(chǔ)通信組件,用于實(shí)現(xiàn)各進(jìn)程節(jié)點(diǎn)之間的內(nèi)部通信。
SO,作為未來的趨勢,想學(xué)習(xí)的人一定不少。