韩日无码在线,亚洲鸥美日韩精品久久,日本一区二区福利,最新无码专区

首頁 - 關(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
  • 在線客服
  • 電話咨詢
  • 微信
  • 短視頻
  • 精品少妇无码一区在线| 短视频污在线| chinese人妻无码人妻| 国产麻豆91| 国产精品md| 欧美精品久久久熟妇浓毛| 精品成人在线视频播放| 九九丁香五月无码视频| 日本女同久久久| 欧美国产成人精品一区二区三区| 尤物AⅤ精品一区二区三区 | 久久久综合网站| 久久精品欧美日韩精品| 欧美不卡的视频| 91啦中文精彩视频| 亚洲国产一级精品成人久久久| 国产激情久久AV接口| 成年极品爽片| 亚洲无码自拍中文字幕| jiuse永久地址| 亚洲AV日韩AV无码A一区久久| 亚洲涩图加勒比| 国精产品一区二区三区黑人免费看 | 亚洲精品国产精品乱码不99| 草草影院最新入囗| 久久一区视频进入| 五月开心综合| 亚洲无码裸体视频| 国产传媒免费看片| 国产成人91亚洲精品无码观看| 少妇之日韩欧美| 亚洲国产福利成人一区二区| 久久久精品2021免费观看| 成人片在线| 免费看国产一级大片| 五月丁香拍拍激情综合| 日产狠狠干| 欧美精品亚洲日韩aⅴ| 久久一区观看| 亚洲精品久久久久久久久久久| HEYZO-1429他人妻味|