本發(fā)明涉及數(shù)據(jù)采集領域,具體涉及一種工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法及系統(tǒng)。
背景技術:
1、工業(yè)物聯(lián)網(wǎng)將各類用于采集、控制傳感器或控制器等終端設備,以及移動通信、智能分析等技術不斷融入到工業(yè)生產(chǎn)過程各個環(huán)節(jié),從而大幅提高制造效率,改善產(chǎn)品質(zhì)量,降低產(chǎn)品成本和資源消耗,最終實現(xiàn)將傳統(tǒng)工業(yè)提升到智能化的新階段,廣泛應用于智能制造業(yè)、供應鏈管理、能源管理等工業(yè)領域。隨著智能化升級,大批量終端設備需要接入物聯(lián)網(wǎng)系統(tǒng),設備的并發(fā)接入,資源開銷巨大,常常出現(xiàn)響應遲鈍甚至崩潰的問題,導致系統(tǒng)可靠性不高。
2、目前,為了解決大批量設備接入造成的響應問題,在每個設備接入時會生成一個單獨的線程來進行數(shù)據(jù)得排序、采集、分析與存儲,但是,大量設備并發(fā)接入時,平臺瞬間生成大量的線程,物聯(lián)網(wǎng)系統(tǒng)同樣會出現(xiàn)響應慢的問題。公開號為cn110868349b,公開了一種物聯(lián)網(wǎng)環(huán)境下分布式高并發(fā)數(shù)據(jù)采集與處理方法及系統(tǒng),終端設備的數(shù)據(jù)通過物聯(lián)網(wǎng)網(wǎng)關發(fā)送給數(shù)據(jù)采集模塊,數(shù)據(jù)采集模塊根據(jù)數(shù)據(jù)的通信協(xié)議格式生成不同協(xié)議的處理器接入系統(tǒng),當設備消息進入系統(tǒng)時,系統(tǒng)隨即生成工作線程與設備進行數(shù)據(jù)傳輸及通信。這種數(shù)據(jù)處理方法在多個設備進入系統(tǒng),系統(tǒng)會瞬間生成多個對應的工作線程對應處理這些設備的消息指令,嚴重影響系統(tǒng)響應速度,甚至會導致系統(tǒng)崩潰的問題,系統(tǒng)可靠性低。而且,工業(yè)設備數(shù)據(jù)處理過程中,經(jīng)常伴隨數(shù)據(jù)處理類型插隊的需求,系統(tǒng)需要先按照優(yōu)先級規(guī)則進行排序以及指令讀寫,再根據(jù)排序后的順序進行數(shù)據(jù)采集,消息較少時,系統(tǒng)能夠很好的按照規(guī)則進行排序和數(shù)據(jù)采集,但是,當消息較多時,這種先排序按照排序結果進行數(shù)據(jù)采集的方式會使加劇物聯(lián)網(wǎng)系統(tǒng)響應卡頓的問題。
技術實現(xiàn)思路
1、本發(fā)明的一個目的是針對現(xiàn)有技術存在的不足,提供一種工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,按照調(diào)度優(yōu)先級規(guī)則輪詢各設備指令隊列,將每次輪詢結果放入工作線程池消息隊列中作為待處理消息,各空閑工作線程直接從工作線程池消息隊列中取出待處理消息與對應設備進行通信,實現(xiàn)數(shù)據(jù)采集,有效提高系統(tǒng)響應速度,消息指令優(yōu)先級處理與數(shù)據(jù)采集處理并行,解決多個設備并發(fā)接入、消息指令插隊需求導致系統(tǒng)卡頓的問題,提高了系統(tǒng)的穩(wěn)定性和可靠性。
2、本發(fā)明的一個目的是采用下述方案實現(xiàn)的:一種工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,具體包括以下步驟:
3、s1:通過設備接入模塊的連接池,對開啟的多個通信協(xié)議插件端口進行監(jiān)聽,當連接池監(jiān)聽到設備連接請求時,將請求連接設備依次接入物聯(lián)網(wǎng)系統(tǒng)中,并將請求連接的設備信息傳遞給設備接入模塊的內(nèi)存池;
4、s2:內(nèi)存池根據(jù)設備的通信協(xié)議類型為每個設備分配存儲資源,所述存儲資源的存儲內(nèi)容包括設備名稱、slaveid、套接字、指令隊列;
5、s3:采集分析模塊輪詢各設備的指令隊列,每次輪詢時按照調(diào)度優(yōu)先級規(guī)則分別取出各設備指令隊列內(nèi)優(yōu)先級最高的一條指令,將取出指令的類型轉(zhuǎn)換為消息,并壓入工作線程池消息隊列中作為待處理消息;
6、s4:采集分析模塊線程池內(nèi)處于空閑狀態(tài)的工作線程依次從工作線程池消息隊列取出待處理消息,并讀取待處理消息中設備的套接字信息,通過套接字信息向?qū)O備發(fā)送指令,同時接收設備返回的響應數(shù)據(jù),對響應數(shù)據(jù)進行解析,得到解析結果,將解析結果存入數(shù)據(jù)庫中;
7、s5:業(yè)務應用根據(jù)設備信息從數(shù)據(jù)庫中獲取設備對應數(shù)據(jù)。
8、優(yōu)選地,所述指令隊列包括寫指令隊列、讀設備狀態(tài)隊列、讀歷史數(shù)據(jù)隊列,所述調(diào)度優(yōu)先級規(guī)則根據(jù)指令隊列所對應業(yè)務的重要性來設置。
9、進一步優(yōu)選地,所述調(diào)度優(yōu)先級規(guī)則具體為,若寫指令隊列中有指令,則從寫指令隊列中取出一個指令;否則,判斷讀歷史數(shù)據(jù)隊列中是否有指令,若讀歷史數(shù)據(jù)隊列中有指令,則從讀歷史數(shù)據(jù)隊列中取出一個指令;否則,判斷讀設備狀態(tài)隊列是否有指令,若讀設備狀態(tài)隊列有指令則從讀設備狀態(tài)隊列中取出一個指令;否則,繼續(xù)等待下一次輪詢。
10、優(yōu)選地,所述通信協(xié)議插件端口的通信協(xié)議為長連接通信協(xié)議。
11、進一步優(yōu)選地,所述長連接通信協(xié)議包括tcp、http、mqtt、modbus?rtu、modbustcp。
12、優(yōu)選地,所述數(shù)據(jù)庫為時序數(shù)據(jù)庫。
13、本發(fā)明的另一個目的是針對現(xiàn)有技術存在的不足,提供一種工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)處理系統(tǒng),利用調(diào)度線程單元負責消息排序,利用工作線程構建指令、數(shù)據(jù)采集及解析處理,提高數(shù)據(jù)處理效率,解決大量設備接入瞬間產(chǎn)生大量線程導致系統(tǒng)響應慢的問題。
14、本發(fā)明的另一個目的是采用下述方案實現(xiàn)的:工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法的系統(tǒng),包括設備接入模塊、采集分析模塊、工作線程池消息隊列、數(shù)據(jù)庫、業(yè)務應用以及多個設備,所述設備接入模塊包括連接池、內(nèi)存池,所述連接池用于監(jiān)聽并連接各設備實現(xiàn)各工作線程與設備之間的通信,所述內(nèi)存池用于為各連接設備分配存儲資源,并存儲各設備信息;所述采集分析模塊包括調(diào)度線程單元、線程池,所述調(diào)度線程單元用于按照調(diào)度優(yōu)先級規(guī)則取出各設備指令,所述線程池內(nèi)設置多個工作線程,所述工作線程用于從工作線程池消息隊列取出指令,按照指令與對應設備進行通信,并將處理結果放入數(shù)據(jù)庫中;所述工作線程池消息隊列用于存放取出的各設備指令,并對指令進行類型轉(zhuǎn)換;所述數(shù)據(jù)庫用于存儲工作線程的處理結果;所述業(yè)務應用用于查詢設備處理后的信息并通過設備接入模塊、采集分析模塊對設備內(nèi)存參數(shù)進行修改。
15、優(yōu)選地,所述業(yè)務應用與設備接入模塊的內(nèi)存池連接用于對設備內(nèi)存參數(shù)進行修改。
16、本發(fā)明通過連接池對通信協(xié)議插件端口監(jiān)聽的方式識別設備連接請求,并接入多個設備,能夠按照實際需求選擇不同插件,適用不同通信協(xié)議的物聯(lián)網(wǎng)設備,通用性較高;利用內(nèi)存池為接入設備分配存儲資源并存儲設備信息,通過調(diào)度線程單元對設備輪詢,進行設備消息指令的排序和調(diào)度并放入工作線程池消息隊列中等待處理,多個工作線程根據(jù)自身狀態(tài)取出待處理消息與對應設備進行數(shù)據(jù)采集并處理數(shù)據(jù),消息指令優(yōu)先級處理與數(shù)據(jù)采集處理并行,解決大量設備接入瞬間產(chǎn)生大量線程導致系統(tǒng)響應慢的問題;消息排序及數(shù)據(jù)采集及處理分別通過調(diào)度線程單元以及線程池進行處理,各工作線程只負責構建指令和解析消息,不用關注消息互斥和排序規(guī)則,處理效率更高,有效提高系統(tǒng)響應速度;同時,多個工作線程的數(shù)量根據(jù)服務器的硬件配置,這種預先初始化固定數(shù)量的線程池,在有大批量設備并發(fā)接入的情況下,工作線程按照自身狀態(tài)處理消息,不會突然生成大量線程,避免系統(tǒng)資源消耗的劇烈波動,系統(tǒng)的穩(wěn)定性較高。
17、下面結合說明書附圖和具體實施例對本發(fā)明作進一步說明。
1.一種工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,其特征在于,具體包括以下步驟:
2.根據(jù)權利要求1所述的工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,其特征在于,所述指令隊列包括寫指令隊列、讀設備狀態(tài)隊列、讀歷史數(shù)據(jù)隊列,所述調(diào)度優(yōu)先級規(guī)則根據(jù)指令隊列所對應業(yè)務的重要性來設置。
3.根據(jù)權利要求2所述的工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,其特征在于,所述調(diào)度優(yōu)先級規(guī)則具體為,若寫指令隊列中有指令,則從寫指令隊列中取出一個指令;否則,判斷讀歷史數(shù)據(jù)隊列中是否有指令,若讀歷史數(shù)據(jù)隊列中有指令,則從讀歷史數(shù)據(jù)隊列中取出一個指令;否則,判斷讀設備狀態(tài)隊列是否有指令,若讀設備狀態(tài)隊列有指令則從讀設備狀態(tài)隊列中取出一個指令;否則,繼續(xù)等待下一次輪詢。
4.根據(jù)權利要求1所述的工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,其特征在于,所述通信協(xié)議插件端口的通信協(xié)議為長連接通信協(xié)議。
5.根據(jù)權利要求4所述的工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,其特征在于,所述長連接通信協(xié)議包括tcp、http、mqtt、modbus?rtu、modbus?tcp。
6.根據(jù)權利要求1所述的工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法,其特征在于,所述數(shù)據(jù)庫為時序數(shù)據(jù)庫。
7.用于權利要求1所述的工業(yè)物聯(lián)網(wǎng)高并發(fā)接入與數(shù)據(jù)采集方法的系統(tǒng),其特征在于,包括設備接入模塊、采集分析模塊、工作線程池消息隊列、數(shù)據(jù)庫、業(yè)務應用以及多個設備,所述設備接入模塊包括連接池、內(nèi)存池,所述連接池用于監(jiān)聽并連接各設備實現(xiàn)各工作線程與設備之間的通信,所述內(nèi)存池用于為各連接設備分配存儲資源,并存儲各設備信息;所述采集分析模塊包括調(diào)度線程單元、線程池,所述調(diào)度線程單元用于按照調(diào)度優(yōu)先級規(guī)則取出各設備指令,所述線程池內(nèi)設置多個工作線程,所述工作線程用于從工作線程池消息隊列取出指令,按照指令與對應設備進行通信,并將處理結果放入數(shù)據(jù)庫中;所述工作線程池消息隊列用于存放取出的各設備指令,并對指令進行類型轉(zhuǎn)換;所述數(shù)據(jù)庫用于存儲工作線程的處理結果;所述業(yè)務應用用于查詢設備處理后的信息并通過設備接入模塊、采集分析模塊對設備內(nèi)存參數(shù)進行修改。
8.根據(jù)權利要求7所述的系統(tǒng),其特征在于,所述業(yè)務應用與設備接入模塊的內(nèi)存池連接用于對設備內(nèi)存參數(shù)進行修改。