本申請屬于通訊領(lǐng)域,特別涉及一種基于雙數(shù)組前綴樹的通訊方法、服務(wù)器及存儲介質(zhì)。
背景技術(shù):
1、在物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)等領(lǐng)域的服務(wù)器與若干設(shè)備之間的通訊連接中,需要對設(shè)備id進行編碼,以查詢與定位該設(shè)備的信息、狀態(tài)與地理位置,通常編碼方式為uuid、雪花算法等id生成方法,將設(shè)備信息、狀態(tài)以及地理位置信息與設(shè)備id進行映射,也以區(qū)域編碼位基礎(chǔ)的設(shè)備id編碼方式,當(dāng)設(shè)備非常多時設(shè)備id會占用大量的內(nèi)存,且查詢效率低。
2、當(dāng)前設(shè)備id編碼存儲方式大有兩種,一種是以算法生成設(shè)備唯一編號方式存證在內(nèi)存和數(shù)據(jù)庫中,地理位置信息作為其屬性。第二種是將位置信息編碼進設(shè)備id中,并以前綴樹(trie)的結(jié)構(gòu)存儲在內(nèi)存中。
3、第一種用唯一編號算法生成的id不包含任何設(shè)備的信息,以映射的方式存儲于內(nèi)存中,當(dāng)設(shè)備很多時不僅會浪費大量內(nèi)存,在以地理位置查詢時效率很低。
4、第二種雖然也將設(shè)備的位置信息進行了編碼,但按普通的鏈表方式實現(xiàn)的trie樹存儲設(shè)備信息,由于實現(xiàn)的影響同樣會有大量的內(nèi)存浪費,且在設(shè)備很多的情況下,查詢效率較低。
5、因此,需要一種針對服務(wù)器與大體量設(shè)備之間的通訊方法,能夠解決上述問題。
技術(shù)實現(xiàn)思路
1、為了解決所述現(xiàn)有技術(shù)的不足,本申請?zhí)峁┝艘环N基于雙數(shù)組前綴樹的通訊方法、服務(wù)器及存儲介質(zhì),相較于映射和普通的trie樹,有效提高了查詢效率。
2、本申請所要達到的技術(shù)效果通過以下方案實現(xiàn):
3、根據(jù)本申請的第一方面,提供一種基于雙數(shù)組前綴樹的通訊方法,包括如下步驟:
4、步驟1:終端設(shè)備連接服務(wù)器,并向服務(wù)器發(fā)送心跳包,所述心跳包中攜帶終端設(shè)備的設(shè)備id;
5、步驟2:服務(wù)器接收所述心跳包,并解析所述心跳包得到設(shè)備id,將所述設(shè)備id、終端設(shè)備的連接信息以及基本信息構(gòu)建雙數(shù)組前綴樹并存儲;
6、步驟3:終端設(shè)備與服務(wù)器之間通訊時,服務(wù)器通過所述雙數(shù)組前綴樹中的base和check數(shù)組查詢相關(guān)終端設(shè)備的所需信息。
7、優(yōu)選地,所述設(shè)備id采用設(shè)備類型、區(qū)域編碼加設(shè)備序列號的方式進行編碼。
8、優(yōu)選地,步驟2中構(gòu)建雙數(shù)組前綴樹的具體方法為:
9、將設(shè)備id作為key,終端設(shè)備在服務(wù)器中的連接信息與終端設(shè)備基本信息作為值形成鍵值對組合,將所述鍵值對組合通過修改base和check數(shù)組放到雙數(shù)組前綴樹中,通過葉子節(jié)點進行存儲。
10、優(yōu)選地,構(gòu)建所述雙數(shù)組前綴樹后還包括:終端設(shè)備向服務(wù)器發(fā)送周期性的心跳包,服務(wù)器周期性的接收到所述心跳包,將該終端設(shè)備標(biāo)記為運行狀態(tài);在指定周期內(nèi)未接收到所述心跳包,則將該終端設(shè)備標(biāo)記為異常狀態(tài)。
11、優(yōu)選地,在步驟3中,終端設(shè)備與服務(wù)器之間的通訊包括終端設(shè)備上報的運行事件,所述運行事件中包括所述設(shè)備id,所述服務(wù)器通過所述雙數(shù)組前綴樹中的base和check數(shù)組定位相關(guān)終端設(shè)備后,存儲所述運行事件并進行對應(yīng)的事件處理。
12、優(yōu)選地,在步驟3中,終端設(shè)備與服務(wù)器之間的通訊包括服務(wù)器向區(qū)域內(nèi)發(fā)送廣播消息或下發(fā)指令,具體的:
13、所述服務(wù)器通過查詢所有與之連接的終端設(shè)備的設(shè)備id,解析各設(shè)備id中雙數(shù)組前綴樹對應(yīng)的base和check數(shù)組,查詢該區(qū)域內(nèi)所有的終端設(shè)備;
14、向該區(qū)域內(nèi)所有的終端設(shè)備發(fā)送廣播消息或下發(fā)指令。
15、優(yōu)選地,在所述雙數(shù)組前綴樹中,base數(shù)組存儲的是當(dāng)前節(jié)點的基礎(chǔ)值,check數(shù)組保存當(dāng)前狀態(tài)的父狀態(tài),用于驗證位置索引的正確性,采用下述狀態(tài)轉(zhuǎn)移方程來存儲設(shè)備id:
16、?state[t]?=?base[s]?+?code;
17、其中:state[t]為遷移后的狀態(tài),base[s]為狀態(tài)遷移時的基數(shù),code為遷移量,code的取值為設(shè)備id中的每一位數(shù)字。
18、優(yōu)選地,當(dāng)服務(wù)器接收到上游服務(wù)的廣播消息時,解析所述廣播消息并提取系統(tǒng)編碼與區(qū)域編碼,通過所述狀態(tài)轉(zhuǎn)移方程在base數(shù)組中找到對應(yīng)的位置,根據(jù)所述位置查詢到check數(shù)組中的葉子節(jié)點,從所述葉子節(jié)點中計算得出所有相關(guān)的設(shè)備id。
19、根據(jù)本申請的第二方面,提供一種服務(wù)器,包括:存儲器和至少一個處理器;
20、所述存儲器存儲計算機程序,所述至少一個處理器執(zhí)行所述存儲器存儲的計算機程序,以實現(xiàn)上述基于雙數(shù)組前綴樹的通訊方法。
21、根據(jù)本申請的第三方面,提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有計算機程序,所述計算機程序被執(zhí)行時實現(xiàn)上述基于雙數(shù)組前綴樹的通訊方法。
22、根據(jù)本申請的一個實施例,采用本申請的基于雙數(shù)組前綴樹的通訊方法的有益效果在于:本方法將設(shè)備的位置于類型等信息編碼進設(shè)備id,并使用雙數(shù)組前綴樹(dat)的結(jié)構(gòu)進行存儲,實現(xiàn)了高效的設(shè)備編碼存儲,有效的降低了內(nèi)存使用率,并且提高了查詢效率。
1.基于雙數(shù)組前綴樹的通訊方法,其特征在于,包括如下步驟:
2.根據(jù)權(quán)利要求1所述的基于雙數(shù)組前綴樹的通訊方法,其特征在于,在步驟2中,構(gòu)建雙數(shù)組前綴樹的具體方法為:
3.根據(jù)權(quán)利要求1所述的基于雙數(shù)組前綴樹的通訊方法,其特征在于,構(gòu)建所述雙數(shù)組前綴樹后還包括:終端設(shè)備向服務(wù)器發(fā)送周期性的心跳包,服務(wù)器周期性的接收到所述心跳包,將該終端設(shè)備標(biāo)記為運行狀態(tài);在指定周期內(nèi)未接收到所述心跳包,則將該終端設(shè)備標(biāo)記為異常狀態(tài)。
4.根據(jù)權(quán)利要求2所述的基于雙數(shù)組前綴樹的通訊方法,其特征在于,在步驟3中,終端設(shè)備與服務(wù)器之間的通訊包括終端設(shè)備上報的運行事件,所述運行事件中包括所述設(shè)備id,所述服務(wù)器通過所述雙數(shù)組前綴樹中的base和check數(shù)組定位相關(guān)終端設(shè)備后,存儲所述運行事件并進行對應(yīng)的事件處理。
5.根據(jù)權(quán)利要求2所述的基于雙數(shù)組前綴樹的通訊方法,其特征在于,在步驟3中,終端設(shè)備與服務(wù)器之間的通訊包括服務(wù)器向區(qū)域內(nèi)發(fā)送廣播消息或下發(fā)指令,具體的:
6.根據(jù)權(quán)利要求5所述的基于雙數(shù)組前綴樹的通訊方法,其特征在于,在所述雙數(shù)組前綴樹中,base數(shù)組存儲的是當(dāng)前節(jié)點的基礎(chǔ)值,check數(shù)組保存當(dāng)前狀態(tài)的父狀態(tài),用于驗證位置索引的正確性,采用下述狀態(tài)轉(zhuǎn)移方程來存儲設(shè)備id:
7.根據(jù)權(quán)利要求6所述的基于雙數(shù)組前綴樹的通訊方法,其特征在于,當(dāng)服務(wù)器接收到上游服務(wù)的廣播消息時,解析所述廣播消息并提取系統(tǒng)編碼與區(qū)域編碼,通過所述狀態(tài)轉(zhuǎn)移方程在base數(shù)組中找到對應(yīng)的位置,根據(jù)所述位置查詢到check數(shù)組中的葉子節(jié)點,從所述葉子節(jié)點中計算得出所有相關(guān)的設(shè)備id。
8.一種服務(wù)器,其特征在于,包括:存儲器和至少一個處理器;
9.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)中存儲有計算機程序,所述計算機程序被執(zhí)行時實現(xiàn)權(quán)利要求1至7中任一項所述的基于雙數(shù)組前綴樹的通訊方法。