两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法

文檔序號:7795343閱讀:238來源:國知局
一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法
【專利摘要】本發(fā)明提供一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法,通過在每個(gè)嵌入式設(shè)備上部署客戶端,在云端部署服務(wù)器組,同步數(shù)據(jù)從一個(gè)客戶端通過一個(gè)或多個(gè)服務(wù)器同步到另一個(gè)客戶端上,其中客戶端不保存數(shù)據(jù),而是提供數(shù)據(jù)同步的接口,服務(wù)器組包括相互連接的主用服務(wù)器和至少一個(gè)備用服務(wù)器,主用服務(wù)器對接收的數(shù)據(jù)進(jìn)行保存,且在其他的客戶端取走所述接收的數(shù)據(jù)后刪除所述接收的數(shù)據(jù),所述備用服務(wù)器在所述主用服務(wù)器故障后會(huì)升級成主用服務(wù)器。利用服務(wù)器組與客戶端的通信和服務(wù)器組之間的通信,實(shí)現(xiàn)了不同網(wǎng)絡(luò)節(jié)點(diǎn)間的數(shù)據(jù)實(shí)時(shí)同步和可靠傳輸,同時(shí)利服務(wù)器組的存儲轉(zhuǎn)發(fā)機(jī)制減少了資源消耗以及降低了因系統(tǒng)故障而導(dǎo)致的數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
【專利說明】一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)多媒體通信【技術(shù)領(lǐng)域】,尤其涉及一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著IT產(chǎn)業(yè)的進(jìn)步和物聯(lián)網(wǎng)的發(fā)展,越來越多的傳統(tǒng)設(shè)備正在變得更加“智能”。智能設(shè)備能夠自動(dòng)判斷場景并做出響應(yīng),能夠與其他的設(shè)備聯(lián)網(wǎng)并傳輸數(shù)據(jù)。智能手機(jī)、智能電視已經(jīng)極大的改變了人們的生活,未來智能家電、智能交通管理系統(tǒng)、車聯(lián)網(wǎng)、智能監(jiān)控系統(tǒng)等等會(huì)得到更為廣泛的應(yīng)用。通過固定網(wǎng)絡(luò)和移動(dòng)網(wǎng)絡(luò),越來越多的嵌入式設(shè)備會(huì)接入到互聯(lián)網(wǎng),這些設(shè)備之間的數(shù)據(jù)同步成為一個(gè)比較核心的問題,例如,在智能會(huì)議系統(tǒng)中,如何將與會(huì)人員的列表實(shí)時(shí)同步到不同的會(huì)議終端(包括傳統(tǒng)PC終端、智能手機(jī)終端、平板電腦終端等)。
[0003]傳統(tǒng)的分布式數(shù)據(jù)同步方法主要有基于數(shù)據(jù)庫的同步和基于內(nèi)存的同步。在基于數(shù)據(jù)庫的同步方法中,多個(gè)設(shè)備連接到一個(gè)或者多個(gè)數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)共享,這樣做帶來的問題有:
[0004]( I)實(shí)時(shí)性差,數(shù)據(jù)和節(jié)點(diǎn)的增多會(huì)導(dǎo)致訪問越來越慢;
[0005](2)通用性差,當(dāng)有新增的業(yè)務(wù)需求時(shí)就需要重新設(shè)計(jì)數(shù)據(jù)庫,業(yè)務(wù)經(jīng)常變更時(shí)基本無法使用。
[0006]在基于內(nèi)存的同步方法中,設(shè)備將數(shù)據(jù)維護(hù)在自己的內(nèi)存中,通過網(wǎng)絡(luò)連接同步到其他設(shè)備,這種方法的問題有:
[0007](I)可靠性差,當(dāng)內(nèi)存中含有關(guān)鍵數(shù)據(jù)的設(shè)備發(fā)生故障丟失數(shù)據(jù)時(shí),會(huì)帶來損失;
[0008](2)可擴(kuò)展性差,處于不同網(wǎng)絡(luò)內(nèi)部節(jié)點(diǎn)之間的通信變得異常復(fù)雜。
[0009]同時(shí),由于嵌入式系統(tǒng)的特殊性,例如CPU、內(nèi)存、存儲資源受限,網(wǎng)絡(luò)環(huán)境復(fù)雜,普通的分布式數(shù)據(jù)同步方法移植到嵌入式系統(tǒng)上會(huì)不能兼容。
[0010]因此,需要一種新的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法,以避免上述缺陷。
【發(fā)明內(nèi)容】

[0011]本發(fā)明的目的在于提供一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法,能夠?qū)崿F(xiàn)嵌入式設(shè)備之間的數(shù)據(jù)同步,同時(shí)達(dá)到傳輸可靠、實(shí)時(shí)同步的要求。
[0012]為解決上述問題,本發(fā)明提出一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),包括:客戶端和服務(wù)器組;所述客戶端運(yùn)行在每個(gè)嵌入式設(shè)備上,用于提供數(shù)據(jù)同步的接口,實(shí)現(xiàn)客戶端將數(shù)據(jù)上傳到服務(wù)器組以及從服務(wù)器組上取走數(shù)據(jù);所述服務(wù)器組用于從客戶端或者其他服務(wù)器組接收數(shù)據(jù),并提供存儲轉(zhuǎn)發(fā)的功能,每個(gè)服務(wù)器組包括相互連接的主用服務(wù)器和至少一個(gè)備用服務(wù)器,主用服務(wù)器對接收的數(shù)據(jù)進(jìn)行保存,且在其他的客戶端取走所述接收的數(shù)據(jù)后刪除所述接收的數(shù)據(jù),所述備用服務(wù)器在所述主用服務(wù)器故障后會(huì)升級成主用服務(wù)器。[0013]進(jìn)一步的,在所述客戶端將多條數(shù)據(jù)上傳并再進(jìn)行一次提交操作后,所述主用服務(wù)器將多條數(shù)據(jù)作為一組數(shù)據(jù)保存并同步到其他客戶端,且在當(dāng)所述一組數(shù)據(jù)中的一條數(shù)據(jù)同步失敗后讓客戶端對所述一組數(shù)據(jù)重新同步。
[0014]進(jìn)一步的,所述客戶端上設(shè)有消息觸發(fā)器,用于在接收數(shù)據(jù)過程中監(jiān)視所述客戶端上到達(dá)的消息,并在有新消息到達(dá)時(shí)調(diào)用客戶端上的應(yīng)用程序進(jìn)行處理。
[0015]進(jìn)一步的,所述客戶端向服務(wù)器組發(fā)出操作請求,然后等待服務(wù)器組返回響應(yīng)消息,若超時(shí)仍未得到響應(yīng),則返回失敗。
[0016]進(jìn)一步的,所述客戶端與服務(wù)器組之間通過局域網(wǎng)連接,服務(wù)器組之間通過互聯(lián)網(wǎng)、局域網(wǎng)或廣域網(wǎng)連接。
[0017]進(jìn)一步的,所述主用服務(wù)器包括:
[0018]日志管理模塊,用于將其他模塊在調(diào)試運(yùn)行過程中產(chǎn)生的日志記錄下來;
[0019]內(nèi)存管理模塊,用于從所在服務(wù)器的操作系統(tǒng)中申請一塊大內(nèi)存以組織成大小不等的內(nèi)存塊供其他模塊調(diào)用;
[0020]系統(tǒng)管理模塊,用于管理各個(gè)模塊初始化順序以及主用服務(wù)器和備用服務(wù)器之間狀態(tài)維護(hù);
[0021]內(nèi)部連接管理模塊,用于維護(hù)管理其所在的服務(wù)器與各個(gè)客戶端之間的連接關(guān)系;
[0022]外部連接管理模塊,用于維護(hù)管理其所在的服務(wù)器與外部服務(wù)器之間的連接關(guān)系;
[0023]發(fā)送路由管理模塊,用于維護(hù)管理數(shù)據(jù)發(fā)送者與數(shù)據(jù)目的地隊(duì)列之間的路由關(guān)系,該路由關(guān)系由數(shù)據(jù)發(fā)送者在發(fā)送之前創(chuàng)建;
[0024]接收路由管理模塊,用于維護(hù)管理數(shù)據(jù)接收者與數(shù)據(jù)接收隊(duì)列之間的路由關(guān)系,該路由關(guān)系由數(shù)據(jù)接收者在接收之前創(chuàng)建;
[0025]數(shù)據(jù)隊(duì)列管理模塊,用于管理客戶端創(chuàng)建的數(shù)據(jù)隊(duì)列,負(fù)責(zé)在數(shù)據(jù)轉(zhuǎn)發(fā)的過程中緩存數(shù)據(jù);
[0026]數(shù)據(jù)存儲模塊,用于通過嵌入式數(shù)據(jù)庫將收到的數(shù)據(jù)保存在存儲介質(zhì)中。
[0027]進(jìn)一步的,所述系統(tǒng)管理模塊在初始化階段會(huì)向其所在的服務(wù)器組中的另一個(gè)服務(wù)器發(fā)送主備競爭消息以確定主備關(guān)系,并在運(yùn)行階段會(huì)與其所在的服務(wù)器組中的另一個(gè)服務(wù)器互發(fā)心跳,當(dāng)系統(tǒng)管理模塊所在服務(wù)器為備用服務(wù)器且丟失主用服務(wù)器的心跳,則會(huì)啟動(dòng)主備切換,系統(tǒng)管理模塊所在服務(wù)器取代主用服務(wù)器。
[0028]進(jìn)一步的,所述數(shù)據(jù)隊(duì)列管理模塊在數(shù)據(jù)目的地是外部服務(wù)器組時(shí)會(huì)自動(dòng)創(chuàng)建通向外部服務(wù)器組的數(shù)據(jù)隊(duì)列。
[0029]本發(fā)明還提出一種應(yīng)用上述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)進(jìn)行嵌入式設(shè)備的分布式數(shù)據(jù)同步的方法,包括:
[0030]在云端部署至少一個(gè)服務(wù)器組并在每個(gè)嵌入式設(shè)備部署客戶端;
[0031]其中一數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端將需要同步的數(shù)據(jù)發(fā)給連接的主用服務(wù)器,并當(dāng)數(shù)據(jù)發(fā)送完畢后發(fā)送數(shù)據(jù)提交消息;
[0032]數(shù)據(jù)發(fā)送方的主用服務(wù)器收到數(shù)據(jù)提交消息后,查找路由,以與數(shù)據(jù)接收方的主用服務(wù)器或者嵌入式設(shè)備的客戶端通信;[0033]所述數(shù)據(jù)接收方的嵌入式設(shè)備的客戶端從連接的主用服務(wù)器上獲取所述需要同步的數(shù)據(jù)。
[0034]進(jìn)一步的,所述數(shù)據(jù)發(fā)送方的主用服務(wù)器與數(shù)據(jù)接收方的主用服務(wù)器處在不同的網(wǎng)絡(luò)中,數(shù)據(jù)發(fā)送方的主用服務(wù)器收到客戶端數(shù)據(jù)提交消息后,查找路由,轉(zhuǎn)發(fā)數(shù)據(jù)到數(shù)據(jù)接收方的局域網(wǎng)的主用服務(wù)器,數(shù)據(jù)接收方的主用服務(wù)器收到數(shù)據(jù)后,檢查路由,確定數(shù)據(jù)接收方局域網(wǎng)內(nèi)接收數(shù)據(jù)的客戶端,并將數(shù)據(jù)緩存至該接收數(shù)據(jù)的客戶端的接收隊(duì)列;所述接收數(shù)據(jù)的客戶端的接收線程從數(shù)據(jù)接收方的主用服務(wù)器上接收數(shù)據(jù),并將接收好的數(shù)據(jù)呈現(xiàn)在嵌入式設(shè)備上。
[0035]進(jìn)一步的,其中一數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端將需要同步的數(shù)據(jù)發(fā)給連接的主用服務(wù)器,并當(dāng)數(shù)據(jù)發(fā)送完畢后發(fā)送數(shù)據(jù)提交消息,具體包括:
[0036]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端在本地主用服務(wù)器上創(chuàng)建數(shù)據(jù)發(fā)送隊(duì)列;
[0037]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端在本地主用服務(wù)器上創(chuàng)建發(fā)送路由關(guān)系;
[0038]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端發(fā)起同步,將同步數(shù)據(jù)通過其客戶端發(fā)送至本地主用服務(wù)器,本地主用服務(wù)器的發(fā)送數(shù)據(jù)隊(duì)列收到數(shù)據(jù)以后首先保存在內(nèi)存中;
[0039]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端發(fā)起提交操作,本地主用服務(wù)器收到提交消息以后,將緩存在內(nèi)存中的數(shù)據(jù)寫入嵌入式數(shù)據(jù)庫當(dāng)中。
[0040]進(jìn)一步的,數(shù)據(jù)發(fā)送方的主用服務(wù)器收到數(shù)據(jù)提交消息后,查找路由,以與數(shù)據(jù)接收方的主用服務(wù)器或者嵌入式設(shè)備的客戶端通信,具體包括:
[0041]數(shù)據(jù)發(fā)送方的本地主用服務(wù)器在收到數(shù)據(jù)提交消息后將前面收到的一組數(shù)據(jù)保存到存儲介質(zhì);
[0042]數(shù)據(jù)發(fā)送方的本地主用服務(wù)器查找路由表,判斷數(shù)據(jù)同步的目的地是本地客戶端還是外部客戶端,若是本地客戶端,則自動(dòng)創(chuàng)建發(fā)送隊(duì)列和接收隊(duì)列之間的路由關(guān)系;若是外地客戶端,則在外部連接表之中找到對應(yīng)的外部連接,并創(chuàng)建到遠(yuǎn)端接收隊(duì)列的路由通道,并檢查其與數(shù)據(jù)接收方的服務(wù)器組之間的鏈路是否可用,若可用則轉(zhuǎn)發(fā)數(shù)據(jù),若不可用則緩存數(shù)據(jù),待鏈路建立成功后轉(zhuǎn)發(fā);
[0043]數(shù)據(jù)轉(zhuǎn)發(fā)成功后,數(shù)據(jù)發(fā)送方的本地主用服務(wù)器從存儲介質(zhì)中刪除消息。
[0044]進(jìn)一步的,所述數(shù)據(jù)發(fā)送方的本地主用服務(wù)器若未收到數(shù)據(jù)提交消息或者一組數(shù)據(jù)不全,則向數(shù)據(jù)發(fā)送方的客戶端發(fā)送提交失敗消息,并丟棄收到的數(shù)據(jù)。
[0045]進(jìn)一步的,所述數(shù)據(jù)接收方的嵌入式設(shè)備的客戶端從連接的主用服務(wù)器上獲取所述需要同步的數(shù)據(jù),具體包括:
[0046]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端注冊數(shù)據(jù)處理的回調(diào)方法;
[0047]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端在其本地主用服務(wù)器上創(chuàng)建數(shù)據(jù)接收隊(duì)列;
[0048]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端在其本地主用服務(wù)器上創(chuàng)建接收路由關(guān)系;
[0049]數(shù)據(jù)接收方的本地服務(wù)器組根據(jù)所述路由關(guān)系將數(shù)據(jù)發(fā)送方發(fā)送的同步數(shù)據(jù)轉(zhuǎn)發(fā)至數(shù)據(jù)接收方的客戶端;
[0050]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端接收所述同步數(shù)據(jù);
[0051]待數(shù)據(jù)轉(zhuǎn)發(fā)完畢后,數(shù)據(jù)接收方的本地主用服務(wù)器向數(shù)據(jù)接收方的客戶端發(fā)送一個(gè)提交消息,數(shù)據(jù)接收方的客戶端在收到提交消息以后,驗(yàn)證收到的消息的完整性,并回復(fù)給數(shù)據(jù)接收方的本地主用服務(wù)器;所述數(shù)據(jù)接收方的本地主用服務(wù)器待客戶端返回提交成功消息后,從本地的存儲介質(zhì)中刪除數(shù)據(jù);
[0052]數(shù)據(jù)接收方的客戶端調(diào)用所述用戶注冊的回調(diào)方法,對接收的同步數(shù)據(jù)進(jìn)行處理。
[0053]與現(xiàn)有技術(shù)相比,本發(fā)明提供的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法,通過在每個(gè)嵌入式設(shè)備上部署客戶端,在云端部署服務(wù)器組,同步數(shù)據(jù)從一個(gè)客戶端通過一個(gè)或多個(gè)服務(wù)器同步到另一個(gè)客戶端上,其中客戶端不保存數(shù)據(jù),而是提供數(shù)據(jù)同步的接口,服務(wù)器組包括相互連接的主用服務(wù)器和至少一個(gè)備用服務(wù)器,主用服務(wù)器對接收的數(shù)據(jù)進(jìn)行保存,且在其他的客戶端取走所述接收的數(shù)據(jù)后刪除所述接收的數(shù)據(jù),所述備用服務(wù)器在所述主用服務(wù)器故障后會(huì)升級成主用服務(wù)器。利用服務(wù)器組與客戶端的通信和服務(wù)器組之間的通信,實(shí)現(xiàn)了不同網(wǎng)絡(luò)節(jié)點(diǎn)間的數(shù)據(jù)實(shí)時(shí)同步和可靠傳輸,同時(shí)利服務(wù)器組的存儲轉(zhuǎn)發(fā)機(jī)制減少了資源消耗以及降低了因系統(tǒng)故障而導(dǎo)致的數(shù)據(jù)丟失的風(fēng)險(xiǎn);進(jìn)一步地采用用戶程序注冊數(shù)據(jù)處理函數(shù)的方式,可以方便的擴(kuò)展用戶支持的業(yè)務(wù)。
【專利附圖】

【附圖說明】
[0054]圖1是本發(fā)明具體實(shí)施例的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)的架構(gòu)圖;
[0055]圖2是本發(fā)明具體實(shí)施例的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)的服務(wù)器組的架構(gòu)圖;
[0056]圖3是本發(fā)明具體實(shí)施例的嵌入式設(shè)備的分布式數(shù)據(jù)同步方法的流程圖。
【具體實(shí)施方式】
[0057]本發(fā)明的核心思想是公開一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)及方法,通過在每個(gè)嵌入式設(shè)備上部署客戶端,在云端部署服務(wù)器組,同步數(shù)據(jù)從一個(gè)客戶端通過一個(gè)或多個(gè)服務(wù)器同步到另一個(gè)客戶端上,其中客戶端不保存數(shù)據(jù),而是提供數(shù)據(jù)同步的接口,月艮務(wù)器組包括相互連接的主用服務(wù)器和至少一個(gè)備用服務(wù)器,主用服務(wù)器對接收的數(shù)據(jù)進(jìn)行保存,且在其他的客戶端取走所述接收的數(shù)據(jù)后刪除所述接收的數(shù)據(jù),所述備用服務(wù)器在所述主用服務(wù)器故障后會(huì)升級成主用服務(wù)器。利用服務(wù)器組與客戶端的通信和服務(wù)器組之間的通信,實(shí)現(xiàn)了不同網(wǎng)絡(luò)節(jié)點(diǎn)間的數(shù)據(jù)實(shí)時(shí)同步和可靠傳輸,同時(shí)利服務(wù)器組的存儲轉(zhuǎn)發(fā)機(jī)制減少了資源消耗以及降低了因系統(tǒng)故障而導(dǎo)致的數(shù)據(jù)丟失的風(fēng)險(xiǎn);進(jìn)一步地采用用戶程序注冊數(shù)據(jù)處理函數(shù)的方式,可以方便的擴(kuò)展用戶支持的業(yè)務(wù)。
[0058]為使本發(fā)明的目的、特征更明顯易懂,下面結(jié)合附圖對本發(fā)明的【具體實(shí)施方式】作進(jìn)一步的說明,然而,本發(fā)明可以用不同的形式實(shí)現(xiàn),不應(yīng)認(rèn)為只是局限在所述的實(shí)施例。
[0059]請參考圖1,本發(fā)明提供一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),在需要保持?jǐn)?shù)據(jù)同步的每個(gè)嵌入式設(shè)備上運(yùn)行一個(gè)同步客戶端,簡稱Client,Client負(fù)責(zé)將數(shù)據(jù)發(fā)送到數(shù)據(jù)服務(wù)器,簡稱Server, Server再轉(zhuǎn)發(fā)給需要被同步的Client。所述嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)包括:客戶端和服務(wù)器組;所述客戶端運(yùn)行在每個(gè)嵌入式設(shè)備上,用于提供數(shù)據(jù)同步的接口,實(shí)現(xiàn)客戶端將數(shù)據(jù)上傳到服務(wù)器組以及從服務(wù)器組上取走數(shù)據(jù);所述服務(wù)器組用于從客戶端或者其他服務(wù)器組接收數(shù)據(jù),并提供存儲轉(zhuǎn)發(fā)的功能,每個(gè)服務(wù)器組包括相互連接的主用服務(wù)器和至少一個(gè)備用服務(wù)器,主用服務(wù)器對接收的數(shù)據(jù)進(jìn)行保存,且在其他的客戶端取走所述接收的數(shù)據(jù)后刪除所述接收的數(shù)據(jù),所述備用服務(wù)器在所述主用服務(wù)器故障后會(huì)升級成主用服務(wù)器。
[0060]需要說明的是,Client并不存儲數(shù)據(jù),Client主要職責(zé)是提供用戶進(jìn)行數(shù)據(jù)同步的接口,并將數(shù)據(jù)上傳到Server,因此需要Client和Server部署在同一個(gè)穩(wěn)定、可靠的網(wǎng)絡(luò)環(huán)境中。Server主要負(fù)責(zé)從Client或者其他Server接收消息,并提供存儲轉(zhuǎn)發(fā)的功能。Server和Server之間具有可靠傳輸機(jī)制,可以部署在不同網(wǎng)絡(luò)中,不同的網(wǎng)絡(luò)可以是不同的局域網(wǎng)、互聯(lián)網(wǎng)、廣域網(wǎng)。由于嵌入式設(shè)備系統(tǒng)上資源受限的特殊性,Client的設(shè)計(jì)需要盡量輕量化,并且需要支持多種類型的CPU和操作系統(tǒng)。Client與Server之間采用同步消息的機(jī)制,即Client向Server發(fā)出操作請求,然后等待Server返回響應(yīng)消息,若超時(shí)仍未得到響應(yīng),則返回失敗。Server部署在能力較強(qiáng)的計(jì)算機(jī)上,負(fù)責(zé)消息的可靠存儲與轉(zhuǎn)發(fā)。Server與Client應(yīng)部署在同一個(gè)可靠穩(wěn)定的網(wǎng)絡(luò)之內(nèi),以保證系統(tǒng)運(yùn)行的效率。當(dāng)不同網(wǎng)絡(luò)之間的嵌入式智能節(jié)點(diǎn)需要進(jìn)行數(shù)據(jù)同步時(shí),需要在每個(gè)網(wǎng)絡(luò)中部署Server,每個(gè)節(jié)點(diǎn)與本地的Server進(jìn)行通信,網(wǎng)絡(luò)與網(wǎng)絡(luò)之間的通信由Server進(jìn)行維護(hù)。
[0061]請參考圖1中,本實(shí)施例中,存在兩個(gè)網(wǎng)絡(luò):局域網(wǎng)I和局域網(wǎng)2,局域網(wǎng)I中部署了智能節(jié)點(diǎn)a、b、m (即安裝了客戶端Client的嵌入式設(shè)備)以及該網(wǎng)絡(luò)的本地服務(wù)器組(即主用服務(wù)器Sever A和備用服務(wù)器Sever A’組成的服務(wù)器組),局域網(wǎng)2中部署了智能節(jié)點(diǎn)X、y (嵌入式設(shè)備X、y)以及該網(wǎng)絡(luò)的本地服務(wù)器組(即主用服務(wù)器Sever B和備用服務(wù)器Sever B’組成的服務(wù)器組),智能節(jié)點(diǎn)a、b、m與其本地服務(wù)器組之間通過局域網(wǎng)I連接,智能節(jié)點(diǎn)X、y與其本地服務(wù)器組之間通過局域網(wǎng)2連接,兩個(gè)服務(wù)器組之間通過IP網(wǎng)(可以是互聯(lián)網(wǎng)、局域網(wǎng)或者廣域網(wǎng))連接。本實(shí)施例中,局域網(wǎng)I中的智能節(jié)點(diǎn)a、b、m之間可以進(jìn)行本地?cái)?shù)據(jù)同步,局域網(wǎng)2中部署了智能節(jié)點(diǎn)x、y之間也可以進(jìn)行本地?cái)?shù)據(jù)同步;智能節(jié)點(diǎn)a、b、m中的任意一個(gè)節(jié)點(diǎn)可以與智能節(jié)點(diǎn)X、y中的任意一個(gè)節(jié)點(diǎn)之間可以外地?cái)?shù)據(jù)同步。
[0062]當(dāng)局域網(wǎng)I中的嵌入式智能節(jié)點(diǎn)a要與局域網(wǎng)2中的嵌入式智能節(jié)點(diǎn)x進(jìn)行數(shù)據(jù)同步,過程如下:
[0063](I)嵌入式智能節(jié)點(diǎn)a通過客戶端Client在Server A上創(chuàng)建數(shù)據(jù)發(fā)送隊(duì)列以及發(fā)送路由關(guān)系,然后嵌入式智能節(jié)點(diǎn)a通過客戶端Client將需要同步的一組數(shù)據(jù)發(fā)給ServerA,當(dāng)這組數(shù)據(jù)發(fā)送完畢以后發(fā)送數(shù)據(jù)提交消息(commit);
[0064](2) Server A收到嵌入式智能節(jié)點(diǎn)a發(fā)送的數(shù)據(jù)提交消息以后,依次進(jìn)行下列操作:
[0065]將前面收到的一組數(shù)據(jù)保存到存儲介質(zhì),避免數(shù)據(jù)丟失;如果當(dāng)由于某些原因未提交或者提交失敗,未收到數(shù)據(jù)提交消息或者一組數(shù)據(jù)不全,則向嵌入式智能節(jié)點(diǎn)a發(fā)送提交失敗消息,并丟棄收到的數(shù)據(jù),這是一種事務(wù)操作,可以讓Client對一組數(shù)據(jù)進(jìn)行提交,一組中的一個(gè)數(shù)據(jù)失敗,整組都失敗,可以防止Client收到?jīng)]有形成完整功能的數(shù)據(jù);
[0066]Server A查找路由表,判斷同步目的地是本地還是外部Server,本例中需要同步到外部Server B ;
[0067]檢查鏈路是否可用,本例中檢查Server A與Server B之間的鏈路,若可用則轉(zhuǎn)發(fā)數(shù)據(jù),若不可用則緩存數(shù)據(jù),待鏈路建立成功后轉(zhuǎn)發(fā);
[0068]數(shù)據(jù)轉(zhuǎn)發(fā)成功后,Server A從存儲介質(zhì)中刪除消息,Server支持主備操作,當(dāng)Server A故障時(shí)Server A’會(huì)升級成主用Server ;
[0069](3)Server B收到數(shù)據(jù)以后,檢查路由表,判斷出同步目的地嵌入式智能節(jié)點(diǎn)x是本地客戶端Client,則將數(shù)據(jù)緩存至嵌入式智能節(jié)點(diǎn)x Client的接收隊(duì)列中,待Client將數(shù)據(jù)取出以后從本地接收隊(duì)列中刪除數(shù)據(jù);
[0070](4)嵌入式智能節(jié)點(diǎn)X Client的接收線程不斷嘗試從Server B上接收數(shù)據(jù),當(dāng)獲取到一組完整的同步數(shù)據(jù)以后,嵌入式智能節(jié)點(diǎn)X Client觸發(fā)用戶回調(diào)方法,將數(shù)據(jù)呈現(xiàn)給用戶的應(yīng)用程序,由于接收數(shù)據(jù)的回調(diào)機(jī)制,嵌入式智能節(jié)點(diǎn)X Client的應(yīng)用程序不必一直等待消息接收函數(shù)返回接收到的消息,嵌入式智能節(jié)點(diǎn)X Client上的消息接收觸發(fā)器會(huì)監(jiān)視本Client上消息到達(dá)的情況,當(dāng)有新消息到達(dá)時(shí),調(diào)用用戶注冊的應(yīng)用程序進(jìn)行處理。
[0071]請參考圖2,本實(shí)施例的主用服務(wù)器A和B,均包括:日志管理模塊、內(nèi)存管理模塊、系統(tǒng)管理模塊、內(nèi)部連接管理模塊、外部連接管理模塊、發(fā)送路由管理模塊、接收路由管理模塊、數(shù)據(jù)隊(duì)列管理模塊以及數(shù)據(jù)存儲介質(zhì)。
[0072]日志管理模塊:負(fù)責(zé)將其他模塊在調(diào)試運(yùn)行過程中產(chǎn)生的日志記錄下來。支持日志分級功能,通過函數(shù)開關(guān)可以控制打印詳細(xì)日志還是概要日志;支持日志容量管理,當(dāng)日志文件大小超過配額則自動(dòng)清理;采用獨(dú)立線程,不會(huì)因?yàn)檫M(jìn)行IO操作而阻塞主要的線程;
[0073]內(nèi)存管理模塊:負(fù)責(zé)從操作系統(tǒng)申請一塊大內(nèi)存,然后組織成大小不等的內(nèi)存塊供其他模塊調(diào)用,防止頻繁的申請、釋放內(nèi)存操作導(dǎo)致內(nèi)存碎片的產(chǎn)生。
[0074]系統(tǒng)管理模塊:負(fù)責(zé)各個(gè)模塊初始化順序以及主備之間狀態(tài)維護(hù)。本模塊在初始化階段會(huì)向伙伴服務(wù)器(同一服務(wù)器組的主用服務(wù)器與備用服務(wù)器相互成為伙伴服務(wù)器)發(fā)送主備競爭消息(例如Server A向Server A’發(fā)送主備競爭消息),確定主備關(guān)系;在運(yùn)行階段會(huì)與伙伴服務(wù)器互發(fā)心跳,當(dāng)備用服務(wù)器丟失主用服務(wù)器的心跳后,會(huì)啟動(dòng)主備切換,取代主用服務(wù)器。
[0075]內(nèi)部連接管理模塊:負(fù)責(zé)維護(hù)管理服務(wù)器與各個(gè)本地Client之間的連接關(guān)系。
[0076]外部連接管理模塊:負(fù)責(zé)維護(hù)管理服務(wù)器與外部服務(wù)器之間的連接關(guān)系。
[0077]發(fā)送路由管理模塊:負(fù)責(zé)維護(hù)管理數(shù)據(jù)發(fā)送者與數(shù)據(jù)目的隊(duì)列之間的路由關(guān)系,該路由關(guān)系由數(shù)據(jù)發(fā)送者在發(fā)送之前創(chuàng)建。
[0078]接收路由管理模塊:負(fù)責(zé)維護(hù)管理數(shù)據(jù)接收者與數(shù)據(jù)接收隊(duì)列之間的路由關(guān)系,該路由關(guān)系由數(shù)據(jù)接收者在接收之前創(chuàng)建。
[0079]數(shù)據(jù)隊(duì)列管理模塊:數(shù)據(jù)隊(duì)列由Client創(chuàng)建,負(fù)責(zé)在數(shù)據(jù)轉(zhuǎn)發(fā)的過程中緩存數(shù)據(jù)。數(shù)據(jù)發(fā)送者發(fā)出的數(shù)據(jù)經(jīng)過一個(gè)或者多個(gè)數(shù)據(jù)隊(duì)列以后才會(huì)轉(zhuǎn)發(fā)到數(shù)據(jù)接收者,如果Server判斷數(shù)據(jù)目的地是外部Server,則會(huì)自動(dòng)創(chuàng)建通向外部Server的數(shù)據(jù)隊(duì)列。
[0080]數(shù)據(jù)存儲介質(zhì):為了防止Server因?yàn)楣收匣蛘叩綦姸鴣G失數(shù)據(jù),采用嵌入式數(shù)據(jù)庫將收到的數(shù)據(jù)保存在存儲介質(zhì)中。[0081]應(yīng)用圖1所示的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)和圖2所示的服務(wù)器進(jìn)行一個(gè)完整的數(shù)據(jù)同步的流程描述如下:
[0082]SI,數(shù)據(jù)發(fā)送方和數(shù)據(jù)接收方均有安裝Client,數(shù)據(jù)接收方注冊數(shù)據(jù)處理的回調(diào)方法;
[0083]S2,數(shù)據(jù)接收方通過Client在本地Server上創(chuàng)建數(shù)據(jù)接收隊(duì)列;
[0084]S3,數(shù)據(jù)接收方通過Cl ient在本地Server上創(chuàng)建接收路由關(guān)系,表示哪個(gè)Cl ient可以從哪個(gè)數(shù)據(jù)隊(duì)列上獲取消息;一個(gè)數(shù)據(jù)接收隊(duì)列可以支持多個(gè)接收的Client,當(dāng)有多個(gè)Client接收時(shí),支持兩種接收模式:(I)多個(gè)Client會(huì)輪流收到數(shù)據(jù),適用于負(fù)載均衡的場合;(2)每個(gè)Client都會(huì)收到一份數(shù)據(jù)的拷貝,適用于發(fā)布訂閱的場合;
[0085]S4,數(shù)據(jù)發(fā)送方通過Client在本地Server上創(chuàng)建數(shù)據(jù)發(fā)送隊(duì)列;
[0086]S5,數(shù)據(jù)發(fā)送方通過Cli ent在本地Server上創(chuàng)建發(fā)送路由關(guān)系,表示哪個(gè)Cli ent可以在哪個(gè)數(shù)據(jù)隊(duì)列上發(fā)送消息;server會(huì)根據(jù)發(fā)送隊(duì)列的名稱判斷轉(zhuǎn)發(fā)目的地是本地隊(duì)列還是外部Server上的隊(duì)列,如果是本地隊(duì)列,則自動(dòng)創(chuàng)建發(fā)送隊(duì)列和接收隊(duì)列之間的路由關(guān)系;如果是外地隊(duì)列,則在外部連接表之中找到對應(yīng)的外部連接,并創(chuàng)建到遠(yuǎn)端接收隊(duì)列的路由通道;
[0087]S6,數(shù)據(jù)發(fā)送方發(fā)起同步,將同步數(shù)據(jù)通過Client發(fā)送至本地Server,本地Server的發(fā)送數(shù)據(jù)隊(duì)列收到數(shù)據(jù)以后首先保存在內(nèi)存中;
[0088]S7,數(shù)據(jù)發(fā)送方發(fā)起提交操作,本地Server收到提交消息以后,將緩存在內(nèi)存中的數(shù)據(jù)寫入嵌入式數(shù)據(jù)庫當(dāng)中;
[0089]S8,根據(jù)S5中創(chuàng)建的路由關(guān)系,本地Server上的發(fā)送數(shù)據(jù)隊(duì)列將緩存的數(shù)據(jù)轉(zhuǎn)發(fā)至目標(biāo)接收隊(duì)列,目標(biāo)接收隊(duì)列可能是在本地,也可能是在外部的Server上;當(dāng)目標(biāo)在外部的Server上時(shí),可能因?yàn)榫W(wǎng)絡(luò)故障導(dǎo)致傳輸中斷,此時(shí)發(fā)送數(shù)據(jù)隊(duì)列繼續(xù)緩存數(shù)據(jù),待網(wǎng)絡(luò)恢復(fù)以后繼續(xù)發(fā)送緩存的數(shù)據(jù);數(shù)據(jù)接收隊(duì)列在收到數(shù)據(jù)以后,緩存在內(nèi)存中;
[0090]S9,待本地Server上的發(fā)送數(shù)據(jù)隊(duì)列中的數(shù)據(jù)全部轉(zhuǎn)發(fā)至目標(biāo)接收隊(duì)列以后,向目標(biāo)接收隊(duì)列發(fā)送提交消息,并將數(shù)據(jù)從本地發(fā)送隊(duì)列中刪除;
[0091]S10,目標(biāo)數(shù)據(jù)接收隊(duì)列收到提交消息以后,將前面緩存在內(nèi)存中的數(shù)據(jù)寫入存儲介質(zhì)中;
[0092]Sll,目標(biāo)數(shù)據(jù)接收隊(duì)列根據(jù)S3創(chuàng)建的路由關(guān)系,將數(shù)據(jù)轉(zhuǎn)發(fā)至數(shù)據(jù)接收方的Client ;
[0093]S12,待數(shù)據(jù)轉(zhuǎn)發(fā)完畢以后,數(shù)據(jù)接收隊(duì)列向接收的Client發(fā)送一個(gè)提交消
[0094]息,待Client端返回提交成功以后,從本地的存儲介質(zhì)中刪除數(shù)據(jù);
[0095]S13,數(shù)據(jù)接收方的CI i ent在收到提交消息以后,驗(yàn)證S11中收到的消息的完整性,并回復(fù)給數(shù)據(jù)接收隊(duì)列;
[0096]S14,數(shù)據(jù)接收方的Client調(diào)用SI中用戶注冊的回調(diào)方法,對數(shù)據(jù)進(jìn)行處理。
[0097]由上可見,本實(shí)施例的同步方法適用于嵌入式系統(tǒng),每個(gè)嵌入式設(shè)備部署Client,數(shù)據(jù)同步方法的過程是將數(shù)據(jù)從一個(gè)Client,通過一個(gè)或多個(gè)Server,同步到另一個(gè)Client的過程,這個(gè)過程中Server需要負(fù)責(zé)存儲與轉(zhuǎn)發(fā),并保證消息的可靠性。數(shù)據(jù)同步流程主要包括=Client A將需要同步的數(shù)據(jù)發(fā)給Server A,當(dāng)數(shù)據(jù)發(fā)送完畢后發(fā)送數(shù)據(jù)提交消息;Server A收到數(shù)據(jù)提交消息后,查找路由,并轉(zhuǎn)發(fā)數(shù)據(jù)到Server B ;Server B收到數(shù)據(jù)后,檢查路由并判斷出同步目的地是本地Client X,則將數(shù)據(jù)緩存至本地Client的接收隊(duì)列;Client X的接收線程從Server B上接收數(shù)據(jù),并觸發(fā)用戶回調(diào)將數(shù)據(jù)呈現(xiàn)給用戶的應(yīng)用程序。
[0098]綜上所述,本實(shí)施例提供的嵌入式設(shè)備的分布式數(shù)據(jù)同步方法,包括以下步驟:
[0099]在云端部署至少一個(gè)服務(wù)器組并在每個(gè)嵌入式設(shè)備部署客戶端;
[0100]其中一數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端將需要同步的數(shù)據(jù)發(fā)給連接的主用服務(wù)器,并當(dāng)數(shù)據(jù)發(fā)送完畢后發(fā)送數(shù)據(jù)提交消息;
[0101]數(shù)據(jù)發(fā)送方的主用服務(wù)器收到數(shù)據(jù)提交消息后,查找路由,以與數(shù)據(jù)接收方的主用服務(wù)器或者嵌入式設(shè)備的客戶端通信;
[0102]所述數(shù)據(jù)接收方的嵌入式設(shè)備的客戶端從連接的主用服務(wù)器上獲取所述需要同步的數(shù)據(jù)。
[0103]進(jìn)一步的,所述數(shù)據(jù)發(fā)送方的主用服務(wù)器與數(shù)據(jù)接收方的主用服務(wù)器處在不同局域網(wǎng)中,數(shù)據(jù)發(fā)送方的主用服務(wù)器收到客戶端數(shù)據(jù)提交消息后,查找路由,轉(zhuǎn)發(fā)數(shù)據(jù)到數(shù)據(jù)接收方的局域網(wǎng)的主用服務(wù)器,數(shù)據(jù)接收方的主用服務(wù)器收到數(shù)據(jù)后,檢查路由,確定數(shù)據(jù)接收方局域網(wǎng)內(nèi)接收數(shù)據(jù)的客戶端,并將數(shù)據(jù)緩存至該接收數(shù)據(jù)的客戶端的接收隊(duì)列;所述接收數(shù)據(jù)的客戶端的接收線程從數(shù)據(jù)接收方的主用服務(wù)器上接收數(shù)據(jù),并將接收好的數(shù)據(jù)呈現(xiàn)在嵌入式設(shè)備上。
[0104]進(jìn)一步的,其中一數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端將需要同步的數(shù)據(jù)發(fā)給連接的主用服務(wù)器,并當(dāng)數(shù)據(jù)發(fā)送完畢后發(fā)送數(shù)據(jù)提交消息,具體包括:
[0105]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端在本地主用服務(wù)器上創(chuàng)建數(shù)據(jù)發(fā)送隊(duì)列;
[0106]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端在本地主用服務(wù)器上創(chuàng)建發(fā)送路由關(guān)系;
[0107]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端發(fā)起同步,將同步數(shù)據(jù)通過其客戶端發(fā)送至本地主用服務(wù)器,本地主用服務(wù)器的發(fā)送數(shù)據(jù)隊(duì)列收到數(shù)據(jù)以后首先保存在內(nèi)存中;
[0108]作為數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端發(fā)起提交操作,本地主用服務(wù)器收到提交消息以后,將緩存在內(nèi)存中的數(shù)據(jù)寫入嵌入式數(shù)據(jù)庫當(dāng)中。
[0109]進(jìn)一步的,數(shù)據(jù)發(fā)送方的主用服務(wù)器收到數(shù)據(jù)提交消息后,查找路由,以與數(shù)據(jù)接收方的主用服務(wù)器或者嵌入式設(shè)備的客戶端通信,具體包括:
[0110]數(shù)據(jù)發(fā)送方的本地主用服務(wù)器在收到數(shù)據(jù)提交消息后將前面收到的一組數(shù)據(jù)保存到存儲介質(zhì);
[0111]數(shù)據(jù)發(fā)送方的本地主用服務(wù)器查找路由表,判斷數(shù)據(jù)同步的目的地是本地客戶端還是外部客戶端,若是本地客戶端,則自動(dòng)創(chuàng)建發(fā)送隊(duì)列和接收隊(duì)列之間的路由關(guān)系;若是外地客戶端,則在外部連接表之中找到對應(yīng)的外部連接,并創(chuàng)建到遠(yuǎn)端接收隊(duì)列的路由通道,并檢查其與數(shù)據(jù)接收方的服務(wù)器組之間的鏈路是否可用,若可用則轉(zhuǎn)發(fā)數(shù)據(jù),若不可用則緩存數(shù)據(jù),待鏈路建立成功后轉(zhuǎn)發(fā);
[0112]數(shù)據(jù)轉(zhuǎn)發(fā)成功后,數(shù)據(jù)發(fā)送方的本地主用服務(wù)器從存儲介質(zhì)中刪除消息。
[0113]進(jìn)一步的,所述數(shù)據(jù)發(fā)送方的本地主用服務(wù)器若未收到數(shù)據(jù)提交消息或者一組數(shù)據(jù)不全,則向數(shù)據(jù)發(fā)送方的客戶端發(fā)送提交失敗消息,并丟棄收到的數(shù)據(jù)。
[0114]進(jìn)一步的,所述數(shù)據(jù)接收方的嵌入式設(shè)備的客戶端從連接的主用服務(wù)器上獲取所述需要同步的數(shù)據(jù),具體包括:
[0115]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端注冊數(shù)據(jù)處理的回調(diào)方法;
[0116]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端在其本地主用服務(wù)器上創(chuàng)建數(shù)據(jù)接收隊(duì)列;
[0117]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端在其本地主用服務(wù)器上創(chuàng)建接收路由關(guān)系;
[0118]數(shù)據(jù)接收方的本地服務(wù)器組根據(jù)所述路由關(guān)系將數(shù)據(jù)發(fā)送方發(fā)送的同步數(shù)據(jù)轉(zhuǎn)發(fā)至數(shù)據(jù)接收方的客戶端;
[0119]數(shù)據(jù)接收方的嵌入式設(shè)備通過客戶端接收所述同步數(shù)據(jù);
[0120]待數(shù)據(jù)轉(zhuǎn)發(fā)完畢后,數(shù)據(jù)接收方的本地主用服務(wù)器向數(shù)據(jù)接收方的客戶端發(fā)送一個(gè)提交消息,數(shù)據(jù)接收方的客戶端在收到提交消息以后,驗(yàn)證收到的消息的完整性,并回復(fù)給數(shù)據(jù)接收方的本地主用服務(wù)器;所述數(shù)據(jù)接收方的本地主用服務(wù)器待客戶端返回提交成功消息后,從本地的存儲介質(zhì)中刪除數(shù)據(jù);
[0121]數(shù)據(jù)接收方的客戶端調(diào)用所述用戶注冊的回調(diào)方法,對接收的同步數(shù)據(jù)進(jìn)行處理。
[0122]綜上所述,本發(fā)明針對嵌入式系統(tǒng)中`資源受限、網(wǎng)絡(luò)不穩(wěn)定的特點(diǎn),提出一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)和方法,以實(shí)現(xiàn)嵌入式設(shè)備系統(tǒng)之間的數(shù)據(jù)同步,同時(shí)達(dá)到可靠,實(shí)時(shí)同步的要求。本發(fā)明的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng)和方法具有以下優(yōu)
占-
^ \\\.[0123]1.適用于嵌入式系統(tǒng)。由于嵌入式系統(tǒng)資源受限,因此只部署Client,采用數(shù)據(jù)服務(wù)器來存儲和轉(zhuǎn)發(fā),減少了資源消耗;同時(shí)由于Client簡單,適用于多種操作系統(tǒng)。
[0124]2.傳輸可靠。由于采用了存儲轉(zhuǎn)發(fā)機(jī)制,就算網(wǎng)絡(luò)故障,數(shù)據(jù)服務(wù)器也會(huì)將數(shù)據(jù)緩存下來,待網(wǎng)絡(luò)恢復(fù)以后再送達(dá)至目的地。
[0125]3.采用可擴(kuò)展機(jī)制。采用用戶程序注冊數(shù)據(jù)處理函數(shù)的方式,可以方便的擴(kuò)展用戶支持的業(yè)務(wù)。
[0126]顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,包括:客戶端和服務(wù)器組;所述客戶端運(yùn)行在每個(gè)嵌入式設(shè)備上,用于提供數(shù)據(jù)同步的接口,實(shí)現(xiàn)客戶端將數(shù)據(jù)上傳到服務(wù)器組以及從服務(wù)器組上取走數(shù)據(jù);所述服務(wù)器組用于從客戶端或者其他服務(wù)器組接收數(shù)據(jù),并提供存儲轉(zhuǎn)發(fā)的功能,每個(gè)服務(wù)器組包括一個(gè)主用服務(wù)器和一個(gè)備用服務(wù)器,主用服務(wù)器對接收的數(shù)據(jù)進(jìn)行保存,且在其他的客戶端取走所述接收的數(shù)據(jù)后刪除所述接收的數(shù)據(jù),所述備用服務(wù)器在所述主用服務(wù)器故障后會(huì)升級成主用服務(wù)器。
2.如權(quán)利要求1所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,在所述客戶端將多條數(shù)據(jù)上傳并再進(jìn)行一次提交操作后,所述主用服務(wù)器將多條數(shù)據(jù)作為一組數(shù)據(jù)保存并同步到其他客戶端,且在當(dāng)所述一組數(shù)據(jù)中的一條數(shù)據(jù)同步失敗后讓客戶端對所述一組數(shù)據(jù)重新同步 。
3.如權(quán)利要求1所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,所述客戶端上設(shè)有消息觸發(fā)器,用于在接收數(shù)據(jù)過程中監(jiān)視所述客戶端上到達(dá)的消息,并在有新消息到達(dá)時(shí)調(diào)用嵌入式設(shè)備的應(yīng)用程序進(jìn)行處理。
4.如權(quán)利要求1所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,所述客戶端與服務(wù)器組之間通過局域網(wǎng)連接,服務(wù)器組之間通過互聯(lián)網(wǎng)、局域網(wǎng)或廣域網(wǎng)連接。
5.如權(quán)利要求1至4中任一項(xiàng)所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,所述主用服務(wù)器包括: 日志管理模塊,用于將其他模塊在調(diào)試運(yùn)行過程中產(chǎn)生的日志記錄下來; 內(nèi)存管理模塊,用于從所在服務(wù)器的操作系統(tǒng)中申請一塊大內(nèi)存以組織成大小不等的內(nèi)存塊供其他模塊調(diào)用; 系統(tǒng)管理模塊,用于管理各個(gè)模塊初始化順序以及主用服務(wù)器和備用服務(wù)器之間狀態(tài)維護(hù); 內(nèi)部連接管理模塊,用于維護(hù)管理其所在的服務(wù)器與各個(gè)客戶端之間的連接關(guān)系; 外部連接管理模塊,用于維護(hù)管理其所在的服務(wù)器與外部服務(wù)器之間的連接關(guān)系; 發(fā)送路由管理模塊,用于維護(hù)管理數(shù)據(jù)發(fā)送者與數(shù)據(jù)目的地隊(duì)列之間的路由關(guān)系,該路由關(guān)系由數(shù)據(jù)發(fā)送者在發(fā)送之前創(chuàng)建; 接收路由管理模塊,用于維護(hù)管理數(shù)據(jù)接收者與數(shù)據(jù)接收隊(duì)列之間的路由關(guān)系,該路由關(guān)系由數(shù)據(jù)接收者在接收之前創(chuàng)建; 數(shù)據(jù)隊(duì)列管理模塊,用于管理客戶端創(chuàng)建的數(shù)據(jù)隊(duì)列,負(fù)責(zé)在數(shù)據(jù)轉(zhuǎn)發(fā)的過程中緩存數(shù)據(jù); 數(shù)據(jù)存儲模塊,用于通過嵌入式數(shù)據(jù)庫將收到的數(shù)據(jù)保存在存儲介質(zhì)中。
6.如權(quán)利要求5所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,所述系統(tǒng)管理模塊在初始化階段會(huì)向其所在的服務(wù)器組中的另一個(gè)服務(wù)器發(fā)送主備競爭消息以確定主備關(guān)系,并在運(yùn)行階段會(huì)與其所在的服務(wù)器組中的另一個(gè)服務(wù)器互發(fā)心跳,當(dāng)系統(tǒng)管理模塊所在服務(wù)器為備用服務(wù)器且丟失主用服務(wù)器的心跳,則會(huì)啟動(dòng)主備切換,系統(tǒng)管理模塊所在服務(wù)器取代主用服務(wù)器。
7.如權(quán)利要求5所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步系統(tǒng),其特征在于,所述數(shù)據(jù)隊(duì)列管理模塊在數(shù)據(jù)目的地是外部服務(wù)器組時(shí)會(huì)自動(dòng)創(chuàng)建通向外部服務(wù)器組的數(shù)據(jù)隊(duì)列。
8.一種應(yīng)用權(quán)利要求1至7中任一項(xiàng)所述的分布式數(shù)據(jù)同步系統(tǒng)進(jìn)行嵌入式設(shè)備的分布式數(shù)據(jù)同步的方法,其特征在于,包括: 在云端部署至少一個(gè)服務(wù)器組并在每個(gè)嵌入式設(shè)備部署客戶端; 其中一數(shù)據(jù)發(fā)送方的嵌入式設(shè)備通過其客戶端將需要同步的數(shù)據(jù)發(fā)給連接的主用服務(wù)器,并當(dāng)數(shù)據(jù)發(fā)送完畢后發(fā)送數(shù)據(jù)提交消息; 數(shù)據(jù)發(fā)送方的主用服務(wù)器收到數(shù)據(jù)提交消息后,查找路由,以與數(shù)據(jù)接收方的主用服務(wù)器或者嵌入式設(shè)備的客戶端通信; 所述數(shù)據(jù)接收方的嵌入式設(shè)備的客戶端從連接的主用服務(wù)器上獲取所述需要同步的數(shù)據(jù)。
9.如權(quán)利要求8所述的嵌入式設(shè)備的分布式數(shù)據(jù)同步方法,其特征在于,所述數(shù)據(jù)發(fā)送方的主用服務(wù)器與數(shù)據(jù)接收方的主用服務(wù)器處在不同的網(wǎng)絡(luò)中,數(shù)據(jù)發(fā)送方的主用服務(wù)器收到客戶端數(shù)據(jù)提交消息后,查找路由,轉(zhuǎn)發(fā)數(shù)據(jù)到數(shù)據(jù)接收方的局域網(wǎng)的主用服務(wù)器,數(shù)據(jù)接收方的主用服務(wù)器收到數(shù)據(jù)后,檢 查路由,確定數(shù)據(jù)接收方局域網(wǎng)內(nèi)接收數(shù)據(jù)的客戶端,并將數(shù)據(jù)緩存至該接收數(shù)據(jù)的客戶端的接收隊(duì)列;所述接收數(shù)據(jù)的客戶端的接收線程從數(shù)據(jù)接收方的主用服務(wù)器上接收數(shù)據(jù),并將接收好的數(shù)據(jù)呈現(xiàn)在嵌入式設(shè)備上。
【文檔編號】H04L29/08GK103747091SQ201410020536
【公開日】2014年4月23日 申請日期:2014年1月16日 優(yōu)先權(quán)日:2014年1月16日
【發(fā)明者】鄒振強(qiáng), 居然, 張永華 申請人:電信科學(xué)技術(shù)第一研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
凉城县| 扶沟县| 城口县| 宁晋县| 林周县| 高青县| 静宁县| 阿克苏市| 东源县| 沂源县| 永川市| 时尚| 咸阳市| 商城县| 镇江市| 南宁市| 石河子市| 南昌县| 水富县| 翁牛特旗| 炎陵县| 行唐县| 石台县| 祁东县| 色达县| 临猗县| 伽师县| 兴隆县| 阿尔山市| 鸡东县| 犍为县| 师宗县| 镇远县| 和平县| 漠河县| 墨玉县| 玛多县| 西充县| 房山区| 苍溪县| 正阳县|