SSM+Netty項目結合思路

最近正忙於搬家,面試,整理團隊開發計劃等工做,因此沒有什麼時間登錄我的公衆號,今天上線看到有粉絲想了解下Netty結合通用SSM框架的案例,因爲公衆號時間限制,我不能和此粉絲單獨溝通,再此寫一篇手記分享下。面試

對於Netty大體以爲是邁向中級開發的必備通訊框架,它是輕量級的,且其架構的演進也是至關的出色。對於更多的Netty基礎知識我也在去年開發中作了記錄,你們能夠閱歷公衆號歷史查看Netty相關技術知識,案例項目是我主導開發的上一個大型項目,相似共享充電寶的共享應用,一樣主體是小程序,而其中硬件中,嵌入式選用單片機做爲主體開發,我則在IOT與Netty中糾結,最後選用Netty也是大部分通訊架構都是基於Netty進行重構設計的,相似京東內部應用通訊架構也是Netty爲基礎。數據庫

Netty與傳統的通訊架構不同,它採用了雙層概念,這是我本身身實現都的一種白話型理解,兩個工做流或容器(ChannelGroup)一個來處理鏈接實例,一個來處理正在鏈接通訊。小程序

使用Netty個人容器能夠僅開啓監聽一個端口,以後的鏈接通訊均交給Netty來實現,固然通訊的數據格式也要統一,幀頭、幀尾、加密(項目採用CRC16)等等。架構

以上是真實項目的netty包下的目錄截圖,一些基本工具類是爲了解密與雙向通訊發送的實現,因爲單片機使用TCP,因此咱們要自定義一個TCP的Handler,加入Netty的handler鏈中,心跳機制就多說了,主要還有Db層,這是用於在接收到數據,當即進行數據庫的讀寫操做,因爲項目自己使用MyBatis做爲數據的持久層,可是在Handler中並不能很好的處理,因此我使用了原生的數據庫鏈接,並在數據通訊的不一樣類型中,使用線程來執行數據庫操做。框架

如上圖的示例,還有就是連接對象的惟一性,channelId與channel自己的對應要作好處理,我使用了全局的map來收集,並作了防禦機制,同一channel示例,若是連接成功後,出現不一致的channelId發送信息時,系統會自動斷開此危險連接。工具

對於netty的使用還不是很深刻,還須要更多的反覆推敲,但願這位朋友能夠有所收穫或有什麼問題從新與公衆號聯繫。加密

關於本項目案例的源碼,我須要必定時間進行部分抽離,畢竟netty在本項目中只是通訊的小部分,還有不少模塊不能徹底分享出來,涉及商務信息保密,請見諒。線程

相關文章
相關標籤/搜索