这么说吧,Netty很简单,其实就是个Jar包,是作为通讯组件用的
極簡(jiǎn)教程,五分鐘快速入門(mén)之netty,搭配后面netty實(shí)戰(zhàn)以及netty源碼分析
0 ) 關(guān)鍵詞:
Netty、NIO、異步、通訊、
1)本質(zhì):
一個(gè)Jar包,一個(gè)NIO框架,是對(duì) socket 網(wǎng)絡(luò)編程的優(yōu)秀包裝
2)作用:
既然netty 是對(duì) socket 網(wǎng)絡(luò)編程的優(yōu)秀包裝.那么在沒(méi)有Netty之前,jdk強(qiáng)迫你必須用socket來(lái)寫(xiě)服務(wù)器,實(shí)際上是很繁瑣的,缺乏一個(gè)高層次的api。然后Netty誕生了,他說(shuō),我來(lái)寫(xiě)jdk的socket,然后返回給你一個(gè)新的更簡(jiǎn)潔的api,你傻瓜式的就能寫(xiě)好一個(gè)網(wǎng)絡(luò)服務(wù)器
3)好處:
提供異步的、事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架和工具,你傻瓜式的就能寫(xiě)好一個(gè)網(wǎng)絡(luò)服務(wù)器(當(dāng)然是相對(duì)于更底層的socket 網(wǎng)絡(luò)編程來(lái)說(shuō)),通俗的說(shuō):一個(gè)好使的處理Socket的框架
4 ) 類(lèi)似 :
類(lèi)似作用的有Mina(比netty更早,同一作者.這里就不擴(kuò)展了)
5 ) 支持的協(xié)議:
有HTTP,WebSockets,SSL等。用Netty,你可以容易地利用Java NIO來(lái)提高服務(wù)端的性能。
6 ) 場(chǎ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)部通信。(什么是dubbo?),還有阿里的消息隊(duì)列(RocketMQ),阿里的HSF等
7 ) 學(xué)習(xí)Netty需要的知識(shí)儲(chǔ)備:
Netty本身知識(shí)提供一種方便網(wǎng)絡(luò)編程(特別是NIO)的框架(jar包),如果你熟悉TCP/IP,網(wǎng)絡(luò)編程和NIO,那么Netty對(duì)你來(lái)說(shuō)并不難,大概一周時(shí)間就可以使用.如果不熟悉以上這些,建議先熟悉以上技術(shù),學(xué)習(xí)Netty時(shí),核心要掌握它的線(xiàn)程模型
8 )再理解 :
相對(duì)于Tomcat這種Web Server(顧名思義主要是提供Web協(xié)議相關(guān)的服務(wù)的),Netty是一個(gè)Network Server,是處于Web Server更下層的網(wǎng)絡(luò)框架,也就是說(shuō)你可以使用Netty模仿Tomcat做一個(gè)提供HTTP服務(wù)的Web容器。
9 ) 通信 :
系統(tǒng)需要實(shí)現(xiàn)多進(jìn)程通信,通常有兩種方式:內(nèi)存共享、消息傳遞(插播一下:知識(shí)點(diǎn)都是互通的,回憶一下,java內(nèi)存模型JMM的通信方式是什么?內(nèi)存共享);
而分布式的系統(tǒng)間通信只有消息傳遞,Netty可作為應(yīng)用間消息傳遞實(shí)現(xiàn)的基礎(chǔ)組件,Netty位于OSI協(xié)議棧的會(huì)話(huà)層、表示層、應(yīng)用層都有涉及,這樣你可以方便的擴(kuò)展實(shí)現(xiàn),處理會(huì)話(huà)層以上的協(xié)議和業(yè)務(wù);Netty封裝了java nio的api,使之成為一個(gè)非常方便使用框架;提供了提供處理IO的線(xiàn)程池,最重要的一點(diǎn)保證了一個(gè)socket處理在一個(gè)線(xiàn)程中完成,一個(gè)線(xiàn)程可以同時(shí)處理多個(gè)socket,這個(gè)比較好玩;
10) 總結(jié) :
這么說(shuō)吧,Netty很簡(jiǎn)單,其實(shí)就是個(gè)Jar包,是作為通訊組件用的
總結(jié)
以上是生活随笔為你收集整理的这么说吧,Netty很简单,其实就是个Jar包,是作为通讯组件用的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 到底什么是跨域?附解决方案!
- 下一篇: 这大概是一篇最简单最清晰的Java JV