日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Netty - 传输

發布時間:2025/3/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Netty - 传输 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Channel

Netty 傳輸API的核心是:interface Channel,被用于所有的I/O操作。類層次結構:

  • Interface:ServerChannel
  • Class:AbstractChannel
  • HasA:ChannelPipeline ChannelConfig

Netty的Channel實現是線程安全的。 (1)為什么繼承Comparable? 因為Channel獨一無二,為了保證順序。


ChannelPipeline

持有所有將應用于入站和出站數據以及事件的 ChannelHandler 實例(實現了應用程序用于處理狀態變化以及數據處理的邏輯)。 可以理解為一種攔截過濾器模式,多個ChannelHandler被鏈接到一起,其中一個handler的輸出將作為下一個handler的輸入。使用一個特性,可以構建出很靈活的應用程序,可以根據需要添加或者移除ChannelHandler。類層次結構:


ChannelHandler

作用:

  • 將數據從一種格式轉換為另一種格式
  • 提供異常的通知
  • 提供Channel變為活動的或者非活動的通知
  • 提供當Channel注冊到EventLoop或者從EventLoop注銷時的通知
  • 提供有關用戶自定義事件的通知

傳輸 - NIO 非阻塞 I/O io.netty.channel.socket.nio

使用java.nio.channels包作為基礎 - 基于選擇器的方式。 零拷貝(zero-copy):只有在使用NIO和Epoll傳輸時才可使用的特性。可以快速高效將數據從文件系統移動到網絡接口,而不需要將其從內核空間復制到用戶空間。對于數據加密或者壓縮的文件系統不可用----只能傳輸文件的原始內容。


傳輸 - Epoll 用于Linux的本地非阻塞傳輸 io.netty.channel.epoll

由JNI驅動的epoll()和非阻塞IO。這個傳輸支持只有在Linux上可用的多種特性,如SO_REUSEPORT,比NIO傳輸更快,非阻塞。 如何啟用? 將NioEventLoopGroup替換為EpollEventLoopGroup,將NioServerSockertChannel替換為EpollServerSocketChannel。


傳輸 - OIO 舊的阻塞 I/O io.netty.channel.socket.oio

使用java.net作為基礎 - 使用阻塞流。


傳輸 - Local io.netty.channel.local

可以在VM內部通過管道進行通信進行通信的本地傳輸。


傳輸 - Embedded io.netty.channel.embeded

Embedded傳輸,允許使用ChannelHandler而又不需要一個真正的基于網絡的傳輸(常用來測試ChannelHandler的實現)。


傳輸最佳實踐

  • 非阻塞代碼庫或一個常規的起點,推薦 -> NIO(Linux上使用epoll)
  • 阻塞代碼庫,推薦 -> OIO
  • 在同一個JVM內部的通信,推薦 -> Local
  • 測試ChannelHandler的實現,推薦 -> Embedded

轉載于:https://my.oschina.net/javamaster/blog/2996249

總結

以上是生活随笔為你收集整理的Netty - 传输的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。