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

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

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

其中步驟一至步驟九是 Netty 服務(wù)端的創(chuàng)建時序,步驟十至步驟十三是 TCP 網(wǎng)關(guān)容器創(chuàng)建的時序。
- 步驟一:創(chuàng)建 ServerBootstrap 實例,ServerBootstrap 是 Netty 服務(wù)端的啟動輔助類。
- 步驟二:設(shè)置并綁定 Reactor 線程池,EventLoopGroup 是 Netty 的 Reactor 線程池,EventLoop 負責所有注冊到本線程的 Channel。
- 步驟三:設(shè)置并綁定服務(wù)器 Channel,Netty Server 需要創(chuàng)建 NIOServerSocketChannel 對象。
- 步驟四:TCP 鏈接建立時創(chuàng)建 ChannelPipeline,ChannelPipeline 本質(zhì)上是一個負責和執(zhí)行 ChannelHandler 的職責鏈。
- 步驟五:添加并設(shè)置 ChannelHandler,ChannelHandler 串行的加入 ChannelPipeline 中。
- 步驟六:綁定監(jiān)聽端口并啟動服務(wù)端,將 NioServerSocketChannel 注冊到 Selector 上。
- 步驟七:Selector 輪訓(xùn),由 EventLoop 負責調(diào)度和執(zhí)行 Selector 輪詢操作。
- 步驟八:執(zhí)行網(wǎng)絡(luò)請求事件通知,輪詢準備就緒的 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 等事件。
程序運行案例步驟

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