今天,我們用簡(jiǎn)單點(diǎn)的語(yǔ)言來(lái)描述Netty
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 )? 類似 : 類似作用的有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í),核心要掌握它的線程模型
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)存共享护桦、消息傳遞;分布式的系統(tǒng)間通信只有消息傳遞煎娇,Netty可作為應(yīng)用間消息傳遞實(shí)現(xiàn)的基礎(chǔ)組件二庵,Netty位于OSI協(xié)議棧的會(huì)話層、表示層缓呛、應(yīng)用層都有涉及催享,這樣你可以方便的擴(kuò)展實(shí)現(xiàn),處理會(huì)話層以上的協(xié)議和業(yè)務(wù)哟绊;Netty封裝了java nio的api因妙,使之成為一個(gè)非常方便使用框架;提供了提供處理IO的線程池票髓,最重要的一點(diǎn)保證了一個(gè)socket處理在一個(gè)線程中完成攀涵,一個(gè)線程可以同時(shí)處理多個(gè)socket,這個(gè)比較好玩;
10 ) 以上都是對(duì)Netty的理解~具體怎么玩~后面再寫(xiě)一篇文章供大家參考