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