SSM+Netty實(shí)現(xiàn)軟硬件通信,真實(shí)項(xiàng)目案例

前言

今天分享的是MySelf自己以前工作項(xiàng)目中的一個模塊實(shí)例實(shí)現(xiàn)的思路還有流程,在這過程中也是遇到了很多問題,能過順利解決也是團(tuán)隊(duì)溝通的結(jié)果。

項(xiàng)目模擬背景:假設(shè)我們有一個軟件平臺,我們的線下產(chǎn)品是一些探測器(傳感器)硬件,它們需要在一定范圍下定時上傳數(shù)據(jù)給服務(wù)器,而且服務(wù)器可能還需要對他們下達(dá)命令(針對單個),或者廣播指令(針對全部),且可能是在管理員的后臺下令,也可能是在用戶的小程序(APP)等前端應(yīng)用下令,這樣我們就需要一個雙向,并發(fā),異步的通信模塊,且產(chǎn)品量大,需要考慮到連接池的狀態(tài),所以就考慮到了線程的作用。對于連接的監(jiān)聽端口,最好只能一個。

好,通過以上模擬場景,我們在構(gòu)建思路時,需要將主要的核心點(diǎn)給理解清楚: 1、單端口多連接 2、雙向、并發(fā)、異步 3、下令、廣播 4、數(shù)據(jù)對數(shù)據(jù)庫的寫操作 5、對鏈接的實(shí)例做安全排查 6、系統(tǒng)自保功能(不是所有人都能鏈接)

整理了這幾個點(diǎn)后,由于項(xiàng)目開始時選用了SSM的底層框架(后期遷移Spring Boot)所以需要考慮到最簡易的模塊化配置方式,在搜羅了幾天的開源項(xiàng)目后,我決定使用Netty來幫助我們解決這一問題。

架構(gòu)

接下來我直接進(jìn)入主題,由于平時工作時間長(9小時,研究2小時)所以寫技術(shù)分享時,可能不會所有點(diǎn)都細(xì)講。

我們先看看我畫的項(xiàng)目架構(gòu)圖,算是一個流程吧。

5bdba32800016f2410800556.png.jpg

恰如SSM也是運(yùn)行在Tomcat容器的一個Server項(xiàng)目,我在web.xml添加了一個新的監(jiān)聽器,監(jiān)聽器將啟動Netty的線程服務(wù)啟動類,其將運(yùn)行Netty的主配置類,BossGroup是處理連接進(jìn)來的鏈接實(shí)例,WorkerGroup是工作運(yùn)行的鏈接,我們對業(yè)務(wù)的處理就放在TCPServerHandler里面,我對每個實(shí)例做了唯一ID的存儲,這樣Service層可以通過ID獲取到鏈接實(shí)例,然后進(jìn)行下令或廣播指令,同時TCPServerHandler也有數(shù)據(jù)庫寫的操作,這要針對不同的指令頭參數(shù)而言。

項(xiàng)目目錄

5bdba34e0001e3db03260547.png

以上是我們項(xiàng)目的目錄,這是引入的關(guān)于netty的包。

有關(guān)于通信的協(xié)議定義還有安全性,這個要看你們項(xiàng)目的業(yè)務(wù)或要求吧,我們項(xiàng)目采用的是:幀頭+ID+指令類型+指令內(nèi)容+CRC16+幀尾 服務(wù)器和單片機(jī)那邊都以這種協(xié)議做處理,保證了數(shù)據(jù)的安全性。

5bdba36b0001215810800395.png.jpg

最后,我截圖了測試服務(wù)器的日志,可以看到連接的實(shí)例ID 還有API下令的廣播測試事件。

GitHub

本項(xiàng)目的功能已經(jīng)整合為開源項(xiàng)目,InChat
項(xiàng)目介紹:【預(yù)計(jì)終版仿騰訊IM項(xiàng)目,目前迭代中....】基于Netty4與SpringBoot,聊天室WebSocket(文字圖片)加API調(diào)用Netty長鏈接執(zhí)行發(fā)送消息(在線數(shù)、用戶列表)、Iot物聯(lián)網(wǎng)-MQTT協(xié)議、TCP/IP協(xié)議單片機(jī)通信,異步存儲聊天數(shù)據(jù)


1787897575-5b6fb1bf2b46f_articlex.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,942評論 1 92
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,309評論 2 89
  • 最近追電視劇太多,甚覺空虛! 看完《人民的名義》,接著《歡樂頌》,然后昨天追《深夜食堂》。 怎么說呢,《人民的名義...
    小么么噠閱讀 189評論 0 0
  • 燈光太暗了,感覺調(diào)色好了一點(diǎn),實(shí)物更美喲
    粽貓閱讀 410評論 0 0

友情鏈接更多精彩內(nèi)容