97精品国产精品公司,久久www免费人成看片中文,天天谢天天干,日韩精品无码专区资源站

首頁 - 關(guān)于研博 - 技術(shù)筆記 - netty菜鳥入門秘籍
netty菜鳥入門秘籍
2024.10.15

 

 

1.什么是Netty
Netty是一個(gè)基于Java NIO的網(wǎng)絡(luò)編程框架,提供了簡單而強(qiáng)大的API,用于快速開發(fā)可擴(kuò)展的網(wǎng)絡(luò)應(yīng)用程序。其核心思想是異步、事件驅(qū)動(dòng)的網(wǎng)絡(luò)通信模型,通過事件處理器鏈(ChannelHandler)實(shí)現(xiàn)高效的數(shù)據(jù)處理和傳輸。

 

2. Netty與工業(yè)物聯(lián)網(wǎng)之間的聯(lián)系
工業(yè)物聯(lián)網(wǎng) (IIoT) 是指將傳感器、設(shè)備和工廠系統(tǒng)連接到互聯(lián)網(wǎng),以實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、數(shù)據(jù)分析和遠(yuǎn)程控制等目的的技術(shù)。Netty 在工業(yè)物聯(lián)網(wǎng)中有著重要的作用,具體體現(xiàn)在以下幾個(gè)方面:

(1) 高性能的網(wǎng)絡(luò)通信:工業(yè)物聯(lián)網(wǎng)通常需要處理大量的數(shù)據(jù)流量和高并發(fā)的連接。Netty 提供了基于事件驅(qū)動(dòng)的異步 IO 模型,能夠高效地處理大規(guī)模的網(wǎng)絡(luò)通信,確保系統(tǒng)具有優(yōu)異的性能和可伸縮性。

(2) 協(xié)議支持:工業(yè)物聯(lián)網(wǎng)中常用的通信協(xié)議有 MQTT、CoAP、AMQP 等,而 Netty 提供了靈活的網(wǎng)絡(luò)編程接口和豐富的協(xié)議支持,可以輕松地實(shí)現(xiàn)對這些協(xié)議的解析和處理,從而實(shí)現(xiàn)設(shè)備之間的可靠通信。

(3) 實(shí)時(shí)數(shù)據(jù)處理:工業(yè)物聯(lián)網(wǎng)需要及時(shí)處理從各種傳感器和設(shè)備收集到的數(shù)據(jù),進(jìn)行實(shí)時(shí)監(jiān)控、分析和控制。Netty 的高性能和低延遲特性使得它非常適合用于處理實(shí)時(shí)數(shù)據(jù)流,能夠快速響應(yīng)設(shè)備的數(shù)據(jù)上傳和控制指令。

(4) 安全性和穩(wěn)定性:工業(yè)物聯(lián)網(wǎng)系統(tǒng)對安全性和穩(wěn)定性要求極高,Netty 提供了豐富的安全功能和可靠的錯(cuò)誤處理機(jī)制,能夠保障系統(tǒng)的數(shù)據(jù)傳輸安全和穩(wěn)定運(yùn)行。

綜上所述,Netty 在工業(yè)物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用非常廣泛,它為工業(yè)物聯(lián)網(wǎng)系統(tǒng)的開發(fā)和部署提供了強(qiáng)大的網(wǎng)絡(luò)通信基礎(chǔ)支持。

 

3. Netty核心組件
(1) Bootstrap
用于啟動(dòng)和配置網(wǎng)絡(luò)應(yīng)用程序配置類。通過Bootstrap可以綁定啟動(dòng)IP、端口,配置EventLoopGroup、選擇傳輸協(xié)議(Channel)、配置ChannelHandler、參數(shù)調(diào)優(yōu)設(shè)置等。Bootstrap通常與ServerBootstrap配合使用。ServerBootstrap用于服務(wù)端,Bootstrap用于客戶端。

 

(2) EventLoop
 Netty為了避免線程與線程之間產(chǎn)生并發(fā)沖突,采用的策略。負(fù)責(zé)處理所有的I/O事件,如接收連接、讀取數(shù)據(jù)、寫入數(shù)據(jù)等。EventLoop在一個(gè)線程中循環(huán)執(zhí)行,通過事件驅(qū)動(dòng)的方式處理事件。一個(gè)EventLoop可以關(guān)聯(lián)一個(gè)或多個(gè)Channel,但一個(gè)Channel只能關(guān)聯(lián)一個(gè)EventLoop。EventLoop通常在服務(wù)端需要實(shí)例化2個(gè)對象,一個(gè)用于接受處理客戶端的連接請求,另一個(gè)用戶處理I/O讀寫事件。它的繼承關(guān)系比較復(fù)雜,一條線是繼承自 j.u.c.ScheduledExecutorService 因此包含了線程池中所有的方法,另一條線是繼承自 netty 自己的 OrderedEventExecutor。

  

(3) Channel
一個(gè)與實(shí)際數(shù)據(jù)傳輸相關(guān)的連接??梢岳斫鉃閿?shù)據(jù)在客戶端和服務(wù)器之間的通道。Channel提供了異步的I/O操作,如讀取、寫入和關(guān)閉等。打個(gè)比喻,每個(gè) Channel 是一個(gè)產(chǎn)品的加工車間,Pipeline 是車間中的流水線,ChannelHandler 就是流水線上的各道工序,而后面要講的 ByteBuf 是原材料,經(jīng)過很多工序的加工:先經(jīng)過一道道入站工序,再經(jīng)過一道道出站工序最終變成產(chǎn)品

 

(4) ChannelHandler
最核心的組件之一,負(fù)責(zé)處理輸入輸出數(shù)據(jù)的邏輯。可以接收入站事件(如數(shù)據(jù)接收)和出站事件(如數(shù)據(jù)發(fā)送),并執(zhí)行相應(yīng)的處理邏輯。ChannelHandler被添加到ChannelPipeline中,形成處理鏈。

 

 

(5) ChannelPipline
ChannelPipeline是一個(gè)雙向鏈表,攔截和處理事件的鏈?zhǔn)浇Y(jié)構(gòu)。ChannelPipeline中的ChannelHandler是一個(gè)傳播鏈,ChannelPipeline管理ChannelHandler并協(xié)調(diào)它們的處理順序。當(dāng)數(shù)據(jù)通過Channel時(shí),它會(huì)依次經(jīng)過每個(gè)ChannelHandler進(jìn)行處理。

 

(6) ByteBuf
數(shù)據(jù)傳輸?shù)幕締卧?,用于處理二進(jìn)制數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。ByteBuf提供了靈活的API,可以高效地讀取、寫入和操作數(shù)據(jù)。

 

ByteBuf的優(yōu)勢:
1.池化 - 可以重用池中 ByteBuf 實(shí)例,更節(jié)約內(nèi)存,減少內(nèi)存溢出的可能
2.可以自動(dòng)擴(kuò)容
3.支持鏈?zhǔn)秸{(diào)用,使用更流暢
4.很多地方體現(xiàn)零拷貝,例如 slice、duplicate、CompositeByteBuf

 

 

4. Netty入門
開發(fā)一個(gè)簡單的服務(wù)器端和客戶端
4.1 服務(wù)器端

 

(1) 1 處,創(chuàng)建 NioEventLoopGroup,可以簡單理解為 線程池 + Selector
(2) 2 處,選擇服務(wù) Scoket 實(shí)現(xiàn)類,其中 NioServerSocketChannel 表示基于 NIO 的服務(wù)器端實(shí)現(xiàn)
(3) 3 處,為啥方法叫 childHandler,是接下來添加的處理器都是給 SocketChannel 用的,而不是給 ServerSocketChannel。ChannelInitializer 處理器(僅執(zhí)行一次),它的作用是待客戶端 SocketChannel 建立連接后,執(zhí)行 initChannel 以便添加更多的處理器
(4) 4 處,ServerSocketChannel 綁定的監(jiān)聽端口
(5) 5 處,SocketChannel 的處理器,解碼 ByteBuf => String
(6) 6 處,SocketChannel 的業(yè)務(wù)處理器,使用上一個(gè)處理器的處理結(jié)果

 

4.2 客戶端

(1) 1 處,創(chuàng)建 NioEventLoopGroup,同 Server
(2) 2 處,選擇客戶 Socket 實(shí)現(xiàn)類,NioSocketChannel 表示基于 NIO 的客戶端實(shí)現(xiàn)
(3) 3 處,添加 SocketChannel 的處理器,ChannelInitializer 處理器(僅執(zhí)行一次),它的作用是待客戶端 SocketChannel 建立連接后,執(zhí)行 initChannel 以便添加更多的處理器
(4) 4 處,指定要連接的服務(wù)器和端口
(5) 5 處,Netty 中很多方法都是異步的,如 connect,這時(shí)需要使用 sync 方法等待 connect 建立連接完畢
(6) 6 處,獲取 channel 對象,它即為通道抽象,可以進(jìn)行數(shù)據(jù)讀寫操作
(7) 7 處,寫入消息并清空緩沖區(qū)
(8) 8 處,消息會(huì)經(jīng)過通道 handler 處理,這里是將 String => ByteBuf 發(fā)出
數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)傳輸,到達(dá)服務(wù)器端,服務(wù)器端 5 和 6 處的 handler 先后被觸發(fā),走完一個(gè)流程

 

 4.3 流程梳理

 

獲取相關(guān)資料
下載地址將會(huì)發(fā)送至您填寫的郵箱
相關(guān)新聞
水文SL651協(xié)議解析
2025-01-17
JT/T808 協(xié)議解析
2025-01-10
環(huán)保HJ212-2017協(xié)議介紹開發(fā)
2025-01-03
  • 在線客服
  • 電話咨詢
  • 微信
  • 短視頻
  • 青青青爽国产一区二区在线视频| 国产精品久久久久久久久免费HD | 超碰人妻久久| 欧美人与禽猛交狂配| 亚洲精品最新地址| 思思热在线观看视频6| 日本韩国黄色网页| 国产三级片麻豆| 激情影院五月丁香综合| 成人爆乳视频在线免费观看| 狠狠狠狠狠狠香蕉| WWW69亂倫| com无码网站| 欧美亚洲一卡二卡| 一区二区国产精品无码| 国产日韩欧美另类重口在线观看| 伊人性综合| 亚洲激情图片一区二区| 久久99国内精品自在现线| 青青草亚洲转区| 操逼一区二区 - 百度| 亚洲AV无码国产精品永久一区 | 久久亚洲国产人成精品| 久久婷婷大香萑太香蕉AV人| 日韩精品人妻极品AV无码| xxxxx十八黄| 人妻精品久久久久中文字幕86| 欧洲亚洲综合色图| 牛牛成人AV| 强奸婷婷中文字幕| 国内裸体无遮挡免费视频| 国内一区二区| 国产精品专区第102页| 女同视频一区二区| 亚洲一区二区三区四区的| 小说淫乱激情欧美激情| 我要人人射| 亚洲人妻在线视频| 亚洲免费视频99| 免费在线看你懂的| 日本精品久久久久一区二区三区|