Netty開源框架詳解


【Netty? 簡介】
Netty是由JBOSS提供的一個(gè)java開源框架,現(xiàn)為?Github上的獨(dú)立項(xiàng)目。Netty提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。
也就是說,Netty是一個(gè)基于NIO的客戶、服務(wù)器端的編程框架,使用Netty可以確保你快速和簡單的開發(fā)出一個(gè)網(wǎng)絡(luò)應(yīng)用,例如實(shí)現(xiàn)了某種協(xié)議的客戶、服務(wù)端應(yīng)用。Netty相當(dāng)于簡化和流線化了網(wǎng)絡(luò)應(yīng)用的編程開發(fā)過程,例如:基于TCP和UDP的socket服務(wù)開發(fā)。
“快速”和“簡單”并不用產(chǎn)生維護(hù)性或性能上的問題。Netty是一個(gè)吸收了多種協(xié)議(包括FTP、SMTP、HTTP等各種二進(jìn)制文本協(xié)議)的實(shí)現(xiàn)經(jīng)驗(yàn),并經(jīng)過相當(dāng)精心設(shè)計(jì)的項(xiàng)目。最終,Netty成功的找到了一種方式,在保證易于開發(fā)的同時(shí)還保證了其應(yīng)用的性能,穩(wěn)定性和伸縮性。
?
【Netty特點(diǎn)】
設(shè)計(jì)
針對(duì)多種傳輸類型的統(tǒng)一接口 - 阻塞和非阻塞
簡單但更強(qiáng)大的線程模型
真正的無連接的數(shù)據(jù)報(bào)套接字支持
鏈接邏輯支持復(fù)用
易用性
大量的 Javadoc 和 代碼實(shí)例
除了在 JDK 1.6 + 額外的限制。(一些特征是只支持在Java 1.7 +,可選的功能可能有額外的限制。)
性能
比核心 Java API 更好的吞吐量,較低的延時(shí)
資源消耗更少,這個(gè)得益于共享池和重用
減少內(nèi)存拷貝
健壯性
消除由于慢,快,或重載連接產(chǎn)生的 OutOfMemoryError
消除經(jīng)常發(fā)現(xiàn)在 NIO 在高速網(wǎng)絡(luò)中的應(yīng)用中的不公平的讀/寫比
安全
完整的 SSL / TLS 和 StartTLS 的支持
運(yùn)行在受限的環(huán)境例如 Applet 或 OSGI
社區(qū)
發(fā)布的更早和更頻繁
社區(qū)驅(qū)動(dòng)
?
【系統(tǒng)學(xué)習(xí)并掌握Netty】
尚硅谷Nettyt教程
https://www.bilibili.com/video/BV1DJ411m7NR
課程詳情:
Netty是當(dāng)前非常流行的網(wǎng)絡(luò)通訊框架,當(dāng)程序?qū)W(wǎng)絡(luò)數(shù)據(jù)處理時(shí),需要保證高并發(fā)和高可靠,底層就可以用Netty支撐。
本套課程詳細(xì)講解了Netty核心技術(shù)點(diǎn),同時(shí)進(jìn)行底層機(jī)制和源碼剖析,并編寫了大量的應(yīng)用實(shí)例。通過學(xué)習(xí)可以快速掌握Netty的底層實(shí)現(xiàn)機(jī)制,熟練運(yùn)用Netty解決網(wǎng)絡(luò)高并發(fā)問題。
Netty涉及內(nèi)容很多(比如:設(shè)計(jì)模式、數(shù)據(jù)結(jié)構(gòu)、并發(fā)、同步、異步,阻塞等),目前網(wǎng)上的Netty課程不多,且普遍講解晦澀難懂,內(nèi)容淺嘗輒止,導(dǎo)致很多學(xué)習(xí)者只知道Netty的核心組件,但不知道怎么使用到項(xiàng)目之中。本課程針對(duì)上述問題,有針對(duì)性的進(jìn)行了升級(jí):(1) 授課方式采用圖解+框架源碼分析的方式,讓課程生動(dòng)好理解;(2)除了系統(tǒng)的講解,還對(duì)Netty的核心技術(shù)進(jìn)行了源碼剖析(包括: Netty心跳(heartbeat)服務(wù)、EventLoop源碼、任務(wù)提交到異步線程池、Pipeline Handler HandlerContext創(chuàng)建源碼、Netty啟動(dòng)過程源碼、bossGroup和workerGroup機(jī)制源碼等)。
?
