通過在云端進行智能邊緣核心設備的建立、身份制定、策略規(guī)則制定、函數編寫,然后生成配置文件下發(fā);物聯網設備網關技術架構設計(Session 管理、心跳管理、數據上行、數據下行)
介紹
物聯網設備網關技術架構設計(Session 管理、心跳管理、數據上行、數據下行)
說明
NioEventLoop 是 Netty 的 Reactor 線程,其角色:
- Boss Group:作為服務端 Acceptor 線程,用于 accept 客戶端鏈接,并轉發(fā)給 WorkerGroup 中的線程。
- Worker Group:作為 IO 線程,負責 IO 的讀寫,從 SocketChannel 中讀取報文或向 SocketChannel 寫入報文。
- Task Queue/Delay Task Queue:作為定時任務線程,執(zhí)行定時任務,例如鏈路空閑檢測和發(fā)送心跳消息等。
概要說明
- TcpServer :提供TCP連接服務
- TcpSessionManager: 你可以添加監(jiān)聽事件,用于監(jiān)聽TCP會話創(chuàng)建、銷毀等
- LogSessionListener:一個日志監(jiān)聽器,它和tcpSessionManager關聯,監(jiān)聽器必須事先 SessionListener
- TcpSender:TCP發(fā)送者,用戶向客戶端發(fā)送消息通知、實現下行邏輯
- ServerConfig: TCP 的配置管理類
- TcpConnector: TCP 容器,用于管理服務和客戶端的連接
- NotifyProxy: 發(fā)送通知到代理類
以上都是默認配置,你可以不修改,但是你可能需要換個TCP端口
.TCP網關的網絡結構
基于Netty構建TCP網關的長連接容器,作為網關接入層提供服務API請求調用。
客戶端通過域名+端口訪問TCP網關,域名不同的運營商對應不同的VIP,VIP發(fā)布在LVS上,LVS將請求轉發(fā)給后端的HAProxy,再由HAProxy把請求轉發(fā)給后端的Netty的IP+Port。
LVS轉發(fā)給后端的HAProxy,請求經過LVS,但是響應是HAProxy直接反饋給客戶端的,這也就是LVS的DR模式。
TCP網關執(zhí)行時序圖
其中步驟一至步驟九是 Netty 服務端的創(chuàng)建時序,步驟十至步驟十三是 TCP 網關容器創(chuàng)建的時序。
- 步驟一:創(chuàng)建 ServerBootstrap 實例,ServerBootstrap 是 Netty 服務端的啟動輔助類。
- 步驟二:設置并綁定 Reactor 線程池,EventLoopGroup 是 Netty 的 Reactor 線程池,EventLoop 負責所有注冊到本線程的 Channel。
- 步驟三:設置并綁定服務器 Channel,Netty Server 需要創(chuàng)建 NIOServerSocketChannel 對象。
- 步驟四:TCP 鏈接建立時創(chuàng)建 ChannelPipeline,ChannelPipeline 本質上是一個負責和執(zhí)行 ChannelHandler 的職責鏈。
- 步驟五:添加并設置 ChannelHandler,ChannelHandler 串行的加入 ChannelPipeline 中。
- 步驟六:綁定監(jiān)聽端口并啟動服務端,將 NioServerSocketChannel 注冊到 Selector 上。
- 步驟七:Selector 輪訓,由 EventLoop 負責調度和執(zhí)行 Selector 輪詢操作。
- 步驟八:執(zhí)行網絡請求事件通知,輪詢準備就緒的 Channel,由 EventLoop 執(zhí)行 ChannelPipeline。
- 步驟九:執(zhí)行 Netty 系統(tǒng)和業(yè)務 ChannelHandler,依次調度并執(zhí)行 ChannelPipeline 的 ChannelHandler。
- 步驟十:通過 Proxy 代理調用后端服務,ChannelRead 事件后,通過發(fā)射調度后端 Service。
- 步驟十一:創(chuàng)建 Session,Session 與 Connection 是相互依賴關系。
- 步驟十二:創(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
先轉發(fā) 加關注,然后私信“網關”即可免費獲取下載鏈接
如果物聯網平臺定制開發(fā)請加關注后私信私聊






