您好,登錄后才能下訂單哦!
這篇文章主要講解了“Netty高性能是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Netty高性能是什么”吧!
Netty高性能之道,Netty的IO線程N(yùn)ioEventLoop由于聚合了多路復(fù)用器Selector,可以同時(shí)并發(fā)處理成百上千個(gè)客戶端Channel,由于讀寫操作都是非阻塞的,這就可以充分提升IO線程的運(yùn)行效率,避免由于頻繁IO阻塞導(dǎo)致的線程掛起。另外,由于Netty采用了異步通信模式,一個(gè)IO線程可以并發(fā)處理N個(gè)客戶端連接和讀寫操作,這從根本上解決了傳統(tǒng)同步阻塞IO一連接一線程模型,架構(gòu)的性能、彈性伸縮能力和可靠性都得到了極大的提升。
Netty異步非阻塞通信
在IO編程過程中,當(dāng)需要同時(shí)處理多個(gè)客戶端接入請(qǐng)求時(shí),可以利用多線程或者IO多路復(fù)用技術(shù)進(jìn)行處理。IO多路復(fù)用技術(shù)通過把多個(gè)IO的阻塞復(fù)用到同一個(gè)select的阻塞上,從而使得系統(tǒng)在單線程的情況下可以同時(shí)處理多個(gè)客戶端請(qǐng)求。與傳統(tǒng)的多線程/多進(jìn)程模型比,I/O多路復(fù)用的最大優(yōu)勢(shì)是系統(tǒng)開銷小,系統(tǒng)不需要?jiǎng)?chuàng)建新的額外進(jìn)程或者線程,也不需要維護(hù)這些進(jìn)程和線程的運(yùn)行,降低了系統(tǒng)的維護(hù)工作量,節(jié)省了系統(tǒng)資源。
JDK1.4提供了對(duì)非阻塞IO(NIO)的支持,JDK1.5_update10版本使用epoll替代了傳統(tǒng)的select/poll,極大的提升了NIO通信的性能。
Netty零拷貝
Netty的“零拷貝”主要體現(xiàn)在如下三個(gè)方面:
1)Netty的接收和發(fā)送ByteBuffer采用DIRECTBUFFERS,使用堆外直接內(nèi)存進(jìn)行Socket讀寫,不需要進(jìn)行字節(jié)緩沖區(qū)的二次拷貝。如果使用傳統(tǒng)的堆內(nèi)存(HEAPBUFFERS)進(jìn)行Socket讀寫,JVM會(huì)將堆內(nèi)存Buffer拷貝一份到直接內(nèi)存中,然后才寫入Socket中。相比于堆外直接內(nèi)存,消息在發(fā)送過程中多了一次緩沖區(qū)的內(nèi)存拷貝。
2)Netty提供了組合Buffer對(duì)象,可以聚合多個(gè)ByteBuffer對(duì)象,用戶可以像操作一個(gè)Buffer那樣方便的對(duì)組合Buffer進(jìn)行操作,避免了傳統(tǒng)通過內(nèi)存拷貝的方式將幾個(gè)小Buffer合并成一個(gè)大的Buffer。
感謝各位的閱讀,以上就是“Netty高性能是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Netty高性能是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。