幫助IT團隊快速構建符合jt808協議部標的基于java技術的GPS和視頻平臺(2379423771@qq.com)

          Netty4 + SpringBoot2 + RabbitMq + Redis + AliOSS 構建高性能粵標主動安全平臺

          蘇標主動安全協議在2021年迎來一個新的版本粵標主動安全協議標準, 這個標準是基于jt/t808-2019協議框架的. 作為一個面向全國的主動安全平臺不可能只能接入粵標, 還要兼容蘇標.蘇標主動安全協議本身就是一個比較復雜的混合協議, 808協議指令和報警文件數據流混合在一起給開發者造成了不小的麻煩有點燒腦同時由于其本身業務的復雜度使得開發人員必須要有一定的開發經驗結合比較好的設計模式才能構建出來性能良好的網關一般需要幾個版本的迭代必須要在實際的大規模車輛接入運營一段時間積累足夠多的設備經驗才能逐步的成熟穩定下來沒有一定規模的設備接入, 就能做出高性能的網關是不可能的事情.單純的采用SpringBoot + Netty,只是一個基礎, 后面的代碼我們仍然要有扎實良好的設計功底,才能做出一個優秀的主動安全平臺.

                  作為開發者我們必須要解決一下五個設計挑戰:

                  1) 高性能的主動安全協議通信網關通信框架設計

                  2) 蘇標主動安全協議和粵標主動安全協議的兼容性設計;

                  3) 大數據量高并發存儲設計;

                  4) 及時的報警推送和處理;
           如需購買源碼 , 請先聯系: 2379423771@qq.com, 詳細內容請參考: 

          Netty4 + SpringBoot2 + RabbitMq + Redis + AliOSS 構建高性能粵標主動安全平臺

           1.高性能的主動安全協議通信網關通信框架設計

                  Netty框架當然是首選, 這個不用多言, 作為基礎框架, 我們一般用SpringBoot2整合Netty4框架, 先為我們的平臺打下一個堅實的基礎.

                 Netty4 + SpringBoot2 主動安全平臺

           

                 基于Netty4進行協議解析, 我們必須要清楚設備與服務器之間的通信協議, 及通信數據格式. 一個粵標設備一次報警, 可能與平臺直接建立三個連接, 一個是指令連接, 兩個是數據傳輸的連接.如下圖所示:

          設備與主動安全平臺直接的連接

          2.  蘇標主動安全協議和粵標主動安全協議的兼容性設計;

                  兼容性設計主要是對于接入設備的報文,由程序自動識別出協議的版本并以此來決定后續的報文數據解析和指令下發如果是粵標的設備,下發的指令亦應是粵標協議格式. 實際上蘇標是采用jt/t 808-2013協議, 粵標是采用jt/t 808-2019協議, 所以就是要區分是2013版本還是2019版本.     

          3.大數據量高并發存儲設計

                  粵標主動安全報警文件上傳,本質上就是多個設備同時并發連續上傳多個文件,對磁盤的IO操作非常的頻繁.磁盤存儲的成本也非常的昂貴.在阿里云上面擴容一個100G的硬盤每月的成本需要千元.而這對于海量的主動安全報警文件來說都不夠塞牙縫.

                  一次報警如果平均是4個文件,1M大小,則如果在線有1000臺車則每天平均報警一次將會上傳1G的文件如果每個車平均上報10則每日有10G的存儲需求如果有1萬臺車就自己算去吧.

                  而目前的主動安全設備廠商來說芯片算法很多并不掌握, 報警的準確性和誤報率非常的高. 如車道偏離報警車距過近報警等這些誤報的報警文件,基本上都是垃圾數據卻會占用服務器大量的帶寬資源和存儲成本.

          對于平臺不存也不行, 萬一里面真有一次車輛碰撞事故呢? 為了節省存儲成本采用云廠商提供的云存儲服務阿里云,騰訊云,華為云的OSS云存儲費用相對較低但是存儲容量也不能一直增長如果一直增長,阿里云也不是活菩薩也會有很多收費陷阱最好30天的生命周期過期數據自動銷毀,或者歸檔.

                  所以在設計的時候,要提供和支持本地存儲,本地訪問,OSS存儲和OSS服務.

                 主動安全參數設置

          4.報警消息的及時推送和報警數據的及時展現.

                 這里用到及時, 是因為一次主動安全的報警, 我們需要等待所有的報警附件全部上傳完畢后, 進行報警消息的推送. 做不到實時的推送, 只能在前端能夠及時的展現出來, 這就要求我們不能等待數據存儲完畢才進行消息推送, 我們在數據接收完畢后進行消息推送. 這就用到redis框架. 接收到數據后,及時的放入redis當中. 前端展現的時候, 從redis中獲取, 而不從存儲服務中獲取.

           

          posted on 2021-04-02 11:11 Speed 閱讀(881) 評論(0)  編輯  收藏 所屬分類: jt808協議和java技術

          導航

          留言簿(15)

          隨筆分類

          值得一看的博客

          積分與排名

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 合作市| 阳朔县| 新野县| 长宁县| 托克逊县| 玉门市| 永春县| 沈丘县| 化隆| 拜泉县| 醴陵市| 勐海县| 定西市| 读书| 巴林右旗| 平舆县| 金堂县| 望谟县| 潞城市| 金湖县| 桐乡市| 阿拉善左旗| 鄂温| 噶尔县| 华宁县| 栖霞市| 斗六市| 汝城县| 周宁县| 芒康县| 桂阳县| 正宁县| 辽宁省| 平安县| 安徽省| 泸水县| 罗城| 阳江市| 澜沧| 化德县| 和平县|