Netty學(xué)習(xí)之?dāng)?shù)據(jù)傳輸

Netty學(xué)習(xí)之?dāng)?shù)據(jù)傳輸

前言

在前面的小節(jié)中,我們簡略地學(xué)習(xí)了Netty及Netty的核心組件,在本小節(jié)中,我們來學(xué)習(xí)一個重要但是不太好歸類的內(nèi)容,Netty的數(shù)據(jù)傳輸方式。

數(shù)據(jù)傳輸

在Netty中,Channel可以說是非常重要的一個組件了,數(shù)據(jù)之間的傳遞正是通過Channel來完成的。

在Netty中,Channel是線程安全的,所以一個Channel可以被其他線程引用,也可以在多線程環(huán)境下使用。

在Netty中,支持不同類型的傳輸方式,它們支持的協(xié)議不同,所以使用的時候需要選擇合適的類型

  • NIO,使用Java中的NIO包,非阻塞,基于選擇器,Linux版本的JDK默認(rèn)就是使用Epoll
  • Epoll,使用JNI調(diào)用Epoll(),非阻塞,只有在支持Epoll的Linux內(nèi)核中才能使用
  • OIO,使用傳統(tǒng)的OIO,基于阻塞形式的流
  • Local,在同一個VM中使用管線進(jìn)行通信
  • Embedded,嵌入式,不需要真實的網(wǎng)絡(luò)環(huán)境,一般用于測試用途

零拷貝,零拷貝是一種只能在NIO和Epoll傳輸方式中使用的特性,允許開發(fā)者快速地,高效地將數(shù)據(jù)從文件系統(tǒng)移動到網(wǎng)絡(luò)接口,而不需要將其從內(nèi)核空間拷貝至用戶空間,能夠極大地提高如FTP、HTTP等的效率,但是并不是所有的OS都支持,而且不能在加密的文件系統(tǒng)中使用,當(dāng)然,傳輸加密了的數(shù)據(jù)塊還是可以的。

總結(jié)

本小節(jié)的內(nèi)容比較簡單,主要是Netty的不同類型的數(shù)據(jù)傳輸方式,由于不同的OS對不同的傳輸方式支持程度不同,所以在使用的時候,需要根據(jù)情況選擇,如果是Linux環(huán)境,并且內(nèi)核支持Epoll,最佳的選擇就是Epoll啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 成長是對于我們一個新的開始和總結(jié)的一個不是詞語的詞語。對于成長我們有不同的見解,有人說成長是在現(xiàn)在的基礎(chǔ)上...
    卜怡博閱讀 349評論 1 2
  • 從流水到鳥鳴 順著高山的臺階而下 從愛情到人生 順著高山的臺階而上 變幻的音律 溫情環(huán)繞 枯了的心竟然又萌發(fā)新綠 ...
    泰安左眼皮跳跳閱讀 375評論 1 6

友情鏈接更多精彩內(nèi)容