通過在云端進(jìn)行智能邊緣核心設(shè)備的建立、身份制定、策略規(guī)則制定、函數(shù)編寫,然后生成配置文件下發(fā);物聯(lián)網(wǎng)設(shè)備網(wǎng)關(guān)技術(shù)架構(gòu)設(shè)計(jì)(Session 管理、心跳管理、數(shù)據(jù)上行、數(shù)據(jù)下行)
介紹
物聯(lián)網(wǎng)設(shè)備網(wǎng)關(guān)技術(shù)架構(gòu)設(shè)計(jì)(Session 管理、心跳管理、數(shù)據(jù)上行、數(shù)據(jù)下行)

說明
NioEventLoop 是 Netty 的 Reactor 線程,其角色:
- Boss Group:作為服務(wù)端 Acceptor 線程,用于 accept 客戶端鏈接,并轉(zhuǎn)發(fā)給 WorkerGroup 中的線程。
- Worker Group:作為 IO 線程,負(fù)責(zé) IO 的讀寫,從 SocketChannel 中讀取報(bào)文或向 SocketChannel 寫入報(bào)文。
- Task Queue/Delay Task Queue:作為定時(shí)任務(wù)線程,執(zhí)行定時(shí)任務(wù),例如鏈路空閑檢測(cè)和發(fā)送心跳消息等。
概要說明
- TcpServer :提供TCP連接服務(wù)
- TcpSessionManager: 你可以添加監(jiān)聽事件,用于監(jiān)聽TCP會(huì)話創(chuàng)建、銷毀等
- LogSessionListener:一個(gè)日志監(jiān)聽器,它和tcpSessionManager關(guān)聯(lián),監(jiān)聽器必須事先 SessionListener
- TcpSender:TCP發(fā)送者,用戶向客戶端發(fā)送消息通知、實(shí)現(xiàn)下行邏輯
- ServerConfig: TCP 的配置管理類
- TcpConnector: TCP 容器,用于管理服務(wù)和客戶端的連接
- NotifyProxy: 發(fā)送通知到代理類
以上都是默認(rèn)配置,你可以不修改,但是你可能需要換個(gè)TCP端口
.TCP網(wǎng)關(guān)的網(wǎng)絡(luò)結(jié)構(gòu)
基于Netty構(gòu)建TCP網(wǎng)關(guān)的長(zhǎng)連接容器,作為網(wǎng)關(guān)接入層提供服務(wù)API請(qǐng)求調(diào)用。
客戶端通過域名+端口訪問TCP網(wǎng)關(guān),域名不同的運(yùn)營商對(duì)應(yīng)不同的VIP,VIP發(fā)布在LVS上,LVS將請(qǐng)求轉(zhuǎn)發(fā)給后端的HAProxy,再由HAProxy把請(qǐng)求轉(zhuǎn)發(fā)給后端的Netty的IP+Port。
LVS轉(zhuǎn)發(fā)給后端的HAProxy,請(qǐng)求經(jīng)過LVS,但是響應(yīng)是HAProxy直接反饋給客戶端的,這也就是LVS的DR模式。

TCP網(wǎng)關(guān)執(zhí)行時(shí)序圖

其中步驟一至步驟九是 Netty 服務(wù)端的創(chuàng)建時(shí)序,步驟十至步驟十三是 TCP 網(wǎng)關(guān)容器創(chuàng)建的時(shí)序。
- 步驟一:創(chuàng)建 ServerBootstrap 實(shí)例,ServerBootstrap 是 Netty 服務(wù)端的啟動(dòng)輔助類。
- 步驟二:設(shè)置并綁定 Reactor 線程池,EventLoopGroup 是 Netty 的 Reactor 線程池,EventLoop 負(fù)責(zé)所有注冊(cè)到本線程的 Channel。
- 步驟三:設(shè)置并綁定服務(wù)器 Channel,Netty Server 需要?jiǎng)?chuàng)建 NIOServerSocketChannel 對(duì)象。
- 步驟四:TCP 鏈接建立時(shí)創(chuàng)建 ChannelPipeline,ChannelPipeline 本質(zhì)上是一個(gè)負(fù)責(zé)和執(zhí)行 ChannelHandler 的職責(zé)鏈。
- 步驟五:添加并設(shè)置 ChannelHandler,ChannelHandler 串行的加入 ChannelPipeline 中。
- 步驟六:綁定監(jiān)聽端口并啟動(dòng)服務(wù)端,將 NioServerSocketChannel 注冊(cè)到 Selector 上。
- 步驟七:Selector 輪訓(xùn),由 EventLoop 負(fù)責(zé)調(diào)度和執(zhí)行 Selector 輪詢操作。
- 步驟八:執(zhí)行網(wǎng)絡(luò)請(qǐng)求事件通知,輪詢準(zhǔn)備就緒的 Channel,由 EventLoop 執(zhí)行 ChannelPipeline。
- 步驟九:執(zhí)行 Netty 系統(tǒng)和業(yè)務(wù) ChannelHandler,依次調(diào)度并執(zhí)行 ChannelPipeline 的 ChannelHandler。
- 步驟十:通過 Proxy 代理調(diào)用后端服務(wù),ChannelRead 事件后,通過發(fā)射調(diào)度后端 Service。
- 步驟十一:創(chuàng)建 Session,Session 與 Connection 是相互依賴關(guān)系。
- 步驟十二:創(chuàng)建 Connection,Connection 保存 ChannelHandlerContext。
- 步驟十三:添加 SessionListener,SessionListener 監(jiān)聽 SessionCreate 和 SessionDestory 等事件。
程序運(yùn)行案例步驟

1.配置本地Host
Window 地址 // C:windowsSystem32driversetchosts
添加 127.0.0.1 iot-open.icloud.com
2.啟動(dòng)Server
位置: com.ibyte.iot.test.server.TestTcpServer
2.啟動(dòng)Client
位置: com.ibyte.iot.test.client.TcpClient
先轉(zhuǎn)發(fā) 加關(guān)注,然后私信“網(wǎng)關(guān)”即可免費(fèi)獲取下載鏈接
如果物聯(lián)網(wǎng)平臺(tái)定制開發(fā)請(qǐng)加關(guān)注后私信私聊
