專利名稱:一種基于分布式ale的rfid中間件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬丁 RFID中間件技術(shù)領(lǐng)域,特別是提供--種基于分布式ALE的RFID中間件。
背景技術(shù):
RFID中間件(Radio Frequency Identification middleware)可以自動識別和收集信息而廣泛 應(yīng)用于各種領(lǐng)域。RFID中間件在自動識別設(shè)備(比如RFID閱讀器)和應(yīng)用系統(tǒng)之間架起了數(shù) 據(jù)通信的橋梁。應(yīng)用層事件(ApplicationLevel Event)規(guī)范定義出RPID中間件對上層應(yīng)用系 統(tǒng)應(yīng)該提供的一組標準接口,以及RFID中間件最基本的功能收集/過濾(Collect/Filter)。 應(yīng)用層事件(Application Level Event)規(guī)范于2005年,由EPCglobal組織正式對外發(fā)布。 它定義出RFID中間件對上層應(yīng)用系統(tǒng)應(yīng)該提供的一組標準接口,以及RFID中間件最基本的 功能收集/過濾(Collect/Filter)。 ALE層介于應(yīng)用業(yè)務(wù)邏輯和原始標簽讀取層之間。它接 收從數(shù)據(jù)源(一個或多個讀寫器)中發(fā)來的原始標簽數(shù)據(jù),而后,按照時間間隔等條件累計 (Accumulate)數(shù)據(jù),將重復或不敢興趣的EPCs剔除過濾(Filter),同時可以進行計數(shù)及組合 (Count/Group)等操作,最后,將這些信息向應(yīng)用系統(tǒng)進行匯報。它管理設(shè)備以及向設(shè)備 訂閱標簽數(shù)據(jù)。
閱讀器工作時候,會不停地讀取標簽。因而,會造成同一個標簽在一分鐘之內(nèi)可能被讀 取到幾十次,這些數(shù)據(jù)如果直接發(fā)送給應(yīng)用程序,將帶來很大的資源浪費。而ALE的出現(xiàn)主 要是為了減少原始數(shù)據(jù)的冗余性,從大量數(shù)據(jù)中提煉出有效的業(yè)務(wù)邏輯。
ALE (Application Level Event)規(guī)范詳細闡述了 RFID中間件的框架,如附圖1所示,在 這個框架中,將多個物理閱讀器組成一個邏輯閱讀器。ALE看到的只是邏輯閱讀器,而不會 面向物理閱讀器。當某些邏輯閱讀器讀取的標簽數(shù)過多,或者有很多個邏輯閱讀器的時候, 一個ALE就無法處理那么多標簽信息,就會導致ALE的延遲或者故障。
附圖2所示為分布式模型,啟動多個ALE。新啟動的ALE和原來的ALE是映像關(guān)系, 也就是說它們的過濾規(guī)則、分組規(guī)則等等都是一樣的。然后將原來負載過度的ALE部分邏輯 閱讀器,根據(jù)各個邏輯閱讀器的負載情況,分配給新啟動的ALE。這樣就能快速處理標簽信 息,通過過濾、分組標簽信息,生成報表反饋給應(yīng)用層,。
這個模型雖然解決了負載過度的問題,但是引發(fā)了其它新問題。
第一,不符合ALE去除數(shù)據(jù)冗余的原則。因為閱讀器是不停地讀取標簽信息, 一個標簽 可能被同一個或者多個閱讀器讀到好多次。而上面模型中,ALE1和ALE2之間的數(shù)據(jù)處理是 相互獨立的,當一個標簽都邏輯閱讀器0和邏輯閱讀器2讀到的話,它們都會向應(yīng)用層提交 這個標簽信息。而應(yīng)用層并不需要重復標簽信息。ALE的主要功能就是過濾這些重復標簽, 根據(jù)應(yīng)用層的規(guī)則提煉許多業(yè)務(wù)邏輯。
第二,該模型對應(yīng)用層不透明。假設(shè)應(yīng)用層向第一個模型的ALE0以及第二個模型的 ALE1和ALE2,分別輸入一個同樣的事件周期規(guī)范ECSpec(Event Cycle Specification),也就 是業(yè)務(wù)邏輯定義。經(jīng)過一定的時間后,它們向應(yīng)用層提供的報表分別是報表O,報表l,報表 2.而報表1和報表2并不能完全整合成報表0。也就是說用戶輸入同樣業(yè)務(wù)邏輯,卻得到不同 的報表。
由上面分析,可見只有一個ALE的RFID中間件連接的閱讀器過多,或者閱讀器讀到的 標簽數(shù)過多就會導致RFID中間件延遲或者崩潰。但是如果以分布式的形式,啟動多個ALE, 而在各個ALE之間對邏輯閱讀器進行簡單的負載調(diào)度,又會導致新的問題不符合ALE去 除數(shù)據(jù)冗余的原則和對應(yīng)用層不透明。因此本發(fā)明提出了在RFID中間件中的分布式ALE的 設(shè)計方法將中間件中的ALE的機制分解為多個ALE并行執(zhí)行,并引入負載均衡的機制, 協(xié)調(diào)各ALE的工作負荷。分布式ALE的方案,在完全實現(xiàn)了標準ALE規(guī)定的功能的同時, 對用戶以及設(shè)備管理層是透明的。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決現(xiàn)有方法的不足,提出了分布式的ALE體系結(jié)構(gòu),通過子任務(wù)的 劃分,標簽信息的分配,充分利用分布式資源來并行計算,解決了負載過度問題,同時還維 護了報表的一致性,從而實現(xiàn)了對應(yīng)用層是透明的。
為了實現(xiàn)發(fā)明目的,采用的技術(shù)方案如下
一種基于分布式ALE的RFID中間件,包括從上到下依次連接的Global-ALE模塊、 Sub-ALE模塊和連接池模塊,所述Global-ALE模塊向上與應(yīng)用業(yè)務(wù)邏輯層連接,所述連接池 模塊向下與閱讀標簽層連接,所述Sub-ALE模塊包括多個Sub-ALE,每一個Sub-ALE都具 有ALE的功能,而且每個Sub-ALE之間都是映像關(guān)系,即采用一樣的業(yè)務(wù)規(guī)則。 所述Global-ALE模塊設(shè)置有業(yè)務(wù)邏輯模塊、命令接口模塊和報表集成模塊。
所述Sub-ALE模塊的每個Sub-ALE均設(shè)置有標簽處理模塊和負載探針模塊。 所述連接池模塊設(shè)有Sub-ALE池和標簽池,以及用于管理Sub-ALE池、標簽池的 Sub-ALE池管理模塊和標簽池管理模塊。
所述中間件設(shè)有負載均衡機制,該負載均衡機制包括標簽分發(fā)、負載更新、負載調(diào)度。 所述標簽分發(fā)包括分發(fā)標簽單周期以及循環(huán)周期;
所述分發(fā)標簽單周期是對所有的Sub-ALE進行了一次完整的標簽分發(fā),其對Sub-ALE 池的所有Sub-ALE進行遍歷,只對可用的Sub-ALE進行分配標簽,當有可用的Sub-ALE的 時候,就到標簽池讀取標簽,如果標簽池沒有標簽,就以稍停頓可終止的循環(huán)方式,來探詢 標簽池,當標簽池有標簽,就一次讀取K個標簽,其中K是發(fā)生標簽的上閥值,當然如果標 簽池里面的標簽數(shù)少于K,則讀取標簽池剩下的所有標簽,當讀取到標簽的時候,就將上面 讀取的所有標簽,根據(jù)當前可用Sub-ALE的網(wǎng)絡(luò)地址,發(fā)送出去。
所述循環(huán)周期以稍停頓可終止的循環(huán)方式,調(diào)用單周期,對各個Sub-ALE進行分配標簽。
所述負載更新具體如下
對各個可用Sub-ALE建立通道也就是要先和各個Sub-ALE建立負載通道,以方便各 個Sub-ALE將各自的負載信息及時反饋回來;
遍歷Sub-ALE:對Sub-ALE池的所有Sub-ALE進行遍歷,只對可用的Sub-ALE進行負 載更新;
建立通道與對應(yīng)的Sub-ALE建立負載通道,如果建立負載通道失敗,則將該Sub-ALE 設(shè)置成不可用;
監(jiān)聽并且更新負載信息對各個Sub-ALE進行負載監(jiān)聽,當監(jiān)聽到負載信息,包括 Sub-ALE的網(wǎng)絡(luò)地址和對應(yīng)的CPU使用率,就根據(jù)IP網(wǎng)絡(luò)地址,在Sub-ALE池中遍歷查找 到對應(yīng)的Sub-ALE,然后更新該Sub-ALE的CPU使用率。
所述負載調(diào)度具體如下
負載調(diào)度初始化主要是初始化負載調(diào)度要使用到的閥值以及負載的參數(shù)信息,其中初
始化Sub-ALE的標識符n=0,用來循環(huán)遍歷所有Sub-ALE;設(shè)置負載上閥值highLoad,默認 是80,就是當Sub-ALE對應(yīng)的CPU利用率高于highLoad的時候,表示該Sub-ALE負載過 度;設(shè)置負載下閥值lowLoad,默認是20,就是當Sub-ALE對應(yīng)的CPU利用率低于lowLoad
的時候,表示該Sub-ALE處于空閑狀態(tài);設(shè)置可用Sub-ALE的個數(shù)kK),便于統(tǒng)計當前可用 Sub-ALE的個數(shù);設(shè)置大于highLoad的Sub-ALE的個數(shù)hn=0和小于lowLoad的Sub-ALE
的個數(shù)111=0,分別是為了統(tǒng)計信息;
負載分析在初始化的基礎(chǔ)上,統(tǒng)計可用Sub-ALE的個數(shù)k、大于highLoad的Sub-ALE 的個數(shù)hn和小于lowLoad的Sub-ALE的個數(shù)In;
負載調(diào)度根據(jù)負載分析,調(diào)用調(diào)度算法,執(zhí)行調(diào)度,具體調(diào)度算法為當可用Sub-ALE
的個數(shù)k等于大于highLoad的Sub-ALE的個數(shù)hn的時候,如果還有未啟動的Sub-ALE,則 啟動一個Sub-ALE;當可用Sub-ALE的個數(shù)k等于小于lowLoad的Sub-ALE的個數(shù)In的時 候,如果還有已經(jīng)啟動的Sub-ALE,則停止一個Sub-ALE。
所述中間件設(shè)有報表整合機制,由Global-ALE的報表整合模塊對各個Sub-ALE發(fā)送上 來的報表進行整合,具體如下
報表監(jiān)聽首先讀取配置信息,得到Sub-ALE的個數(shù)k;為每一個Sub-ALE初始化一 個代數(shù)生成器,并且將代數(shù)初始化為0,接著就是以稍暫??山K止的循環(huán)方式,監(jiān)聽各個 Sub-ALE的報表;
報表處理對監(jiān)聽到的報表,進行暫時存儲到報表緩沖池;當該代的報表都到齊的時候, 就進行報表整合;當產(chǎn)生總報表的時候,就執(zhí)行維和數(shù)據(jù)一致性模塊;最后,將該總報表發(fā) 送給應(yīng)用業(yè)務(wù)邏輯層;
報表存儲當監(jiān)聽到報表的時候,調(diào)用發(fā)送該報表的Sub-ALE對應(yīng)的代數(shù)生成器,獲 取一個代數(shù)標識符g, g為唯一的整數(shù)值;將這個代數(shù)標識符賦給該報表;將該報表存儲在報 表緩沖池;
報表整合遍歷報表緩沖池,統(tǒng)計代數(shù)標識符是g的報表的個數(shù)n;如果n等于可用 Sub-ALE的個數(shù)k,則將報表緩沖池里面,所有代數(shù)標識符是g的報表提取出來,進行整合, 得到總報表;
最后進行維護數(shù)據(jù)一致性以及將該總報表發(fā)送給應(yīng)用業(yè)務(wù)邏輯層。 所述中間件設(shè)有維護數(shù)據(jù)一致性的機制,具體如下 初始化讀取總報表,并且清空上一個事件周期標簽集合;
標簽提取讀取總報表的每一個標簽,并且刪除原記錄;并且判斷該標簽是否存在于上 一個事件周期標簽集合中,如果存在,就跳過該標簽,如果不存在,就將該標簽添加到上一
個事件周期標簽集合;
同步上一個事件周期標簽當將總報表的所有標簽,都整理好給上一個事件周期標簽集 合后,就將上一個事件周期標簽集合,通過網(wǎng)絡(luò)接口調(diào)用,同步到各個Sub-ALE中。
本發(fā)明所設(shè)計的一種基于分布式ALE的RFID中間件方法,其功能特點可以細分為如下 幾個方面
1、 閱讀器"即插即用"在分布式ALE的體系結(jié)構(gòu)中,由于引入了連接池,使得該結(jié) 構(gòu)體系層次清晰,層與層之間是相互透明的。由于分布式ALE對閱讀器的變化是透明的,因 此閱讀器具有很強的靈活性。對已經(jīng)連接上的閱讀器可以很靈活地啟動與停止,而分布式ALE 并不受任何影響。對動態(tài)添加或者移除閱讀器,只需與連接池建立或者關(guān)閉標簽通道,而不 影響分布式ALE的其他運作。
2、 Sub-ALE(包括標簽處理器和負載探針器)"即插即用"每一個Sub-ALE在分布式ALE 系統(tǒng)結(jié)構(gòu)中是相對獨立的,與各個模塊的耦合性比較低。因此可以動態(tài)增加或者刪除Sub-ALE。 Sub-ALE與Global-ALE的關(guān)聯(lián)只有命令通道和報表通道,與連接池的關(guān)聯(lián)只有標簽通道和負 載均衡通道。所以動態(tài)增加或者刪除S油-ALE的時候,只需建立或者關(guān)閉上面四個通道即可。
3、 智能分發(fā)標簽由于標簽都根據(jù)相應(yīng)的存儲算法存儲在標簽池中,并且Sub-ALE池 里面有各個Sub-ALE的網(wǎng)絡(luò)地址、CPU利用率以及可用標識符。標簽池管理模塊可以選擇標 簽分發(fā)算法,將標簽池的標簽分發(fā)給各個Sub-ALE。標簽分發(fā)算法有兩種 一就是對Sub-ALE 池的所有可用的Sub-ALE進行輪詢發(fā)送標簽;二就是根據(jù)Sub-ALE池的所有可用的Sub-ALE 的CPU利用率,建立優(yōu)先級;CPU利用率越高,優(yōu)先級越低;優(yōu)先級越低, 一次分配的標簽 數(shù)越少。這樣就能很好地根據(jù)各個Sub-ALE的負載情況進行分配標簽,從而實現(xiàn)良好的負載 均衡。
4、 動態(tài)負載均衡各個Sub-ALE的負載探針模塊負載探測本機的負載情況,也就是本 機的CPU利用率,并且將該值發(fā)送給連接池。連接池的Sub-ALE池管理模塊,接收各個Sub-ALE 的負載信息,并且更新到Sub-ALE池。Sub-ALE池管理模塊,先設(shè)置負載上閥值(High Load) 和負載下閥值(Low Load);當Sub-ALE的CPU利用率超過上閥值,就表示該Sub-ALE處于高 負載,當Sub-ALE的CPU利用率低于下閥值,就表示該Sub-ALE處于空閑狀態(tài)。Sub-ALE池 管理模塊會根據(jù)相應(yīng)的負載調(diào)度算法來啟動和停止各個Sub-ALE。
5、 整合報表。
6、維護數(shù)據(jù)一致性。
圖1為現(xiàn)有RFID中間件的框架示意圖; 圖2為現(xiàn)有RFID中間件的分布式框架示意圖; 圖3為基于分布式ALE的RFID中間件的總體架構(gòu)邏輯示意圖; 圖4為分布式ALE的標簽分發(fā)的流程示意圖; 圖5為分布式ALE的負載更新的流程示意圖; 圖6為分布式ALE的負載調(diào)度的流程示意圖; 圖7為分布式ALE的報表整合的流程示意圖; 圖8為分布式ALE的維護數(shù)據(jù)一致性的流程示意圖。
具體實施例方式
下面結(jié)合附圖,對本發(fā)明的具體實施做進一步的詳細描述。
附圖3展示了基于分布式ALE的RFID中間件的總體架構(gòu),該框架包括的模塊有 Global-ALE, Sub-ALE ,連接池(Connection Pool)。具體如下 Global-ALE負責響應(yīng)應(yīng)用層的請求以及協(xié)調(diào)各個Sub-ALE。
Global-ALE可以接受應(yīng)用層的業(yè)務(wù)規(guī)則的輸入,并且將這些業(yè)務(wù)規(guī)則也同步給各個 Sub-ALE。這些業(yè)務(wù)規(guī)則包括過濾標簽?zāi)J?,分組標簽?zāi)J剑@取報表的頻率以及定義報表 格式等等。由于處理標簽信息的依據(jù)是業(yè)務(wù)規(guī)則,而各個Sub-ALE的業(yè)務(wù)規(guī)則都實現(xiàn)了同步, 所以為報表的一致性奠定了基礎(chǔ)。
應(yīng)用層可以通過調(diào)用Global-ALE的接口 ,和Global-ALE交互。在和Global-ALE交互中, 有幾個最基本的方法defme/undefme, subscribe/unsubscribe, poll/Immediate 。所以Global-ALE 在響應(yīng)應(yīng)用層的交互命令后,應(yīng)該通過網(wǎng)絡(luò)接口調(diào)用,來協(xié)調(diào)各個Sub-ALE的響應(yīng),從而維 護命令操作的一致性。
在接收了應(yīng)用層的業(yè)務(wù)規(guī)則以及經(jīng)過一定時間的標簽處理后,Global-ALE應(yīng)該向應(yīng)用層 提供一份報表。而各個Sub-ALE已經(jīng)根據(jù)業(yè)務(wù)規(guī)則處理了標簽信息并且生產(chǎn)了子報表。所以 Global-ALE只需將這些子報表集成之后發(fā)給應(yīng)用層。
Sub-ALE負責從連接池接收標簽信息,過濾分組標簽信息后,將處理后的數(shù)據(jù)提交給 Global-ALE 。
每一個Sub-ALE都具有原來ALE的功能。而且各個Sub-ALE之間都是映像關(guān)系。即它 們的業(yè)務(wù)規(guī)則都是一樣的。所以連接池向任意一個Sub-ALE發(fā)送標簽信息,處理的結(jié)果都是 一樣的。因此可以通過將標簽信息分給多個Sub-ALE來并行處理,就可以解決負載過度問題。 每一個Sub-ALE都有一個負載探針?!姥?,它負責檢測當前處理器的負載問題。檢測負載的指 數(shù)是CPU的使用率。
連接池(Connection Pool)負責接收閱讀器發(fā)送的標簽信息,并保存到標簽池(EPC Pool)中, 然后根據(jù)調(diào)度信息將標簽發(fā)送給各個Sub-ALE。
連接池的主要模塊包括標簽池(EPC Pool) 、 Sub-ALE池、標簽池管理(EPC Pool Manager) 以及Sub-ALE池管理(Sub-ALE Pool Manager)。標簽池保存了所有閱讀器讀取的標簽信息, 其實現(xiàn)機制是FIFO的隊列。Sub-ALE池保存了所有Sub-ALE的信息,其實現(xiàn)機制是單循環(huán) 鏈表。每一個節(jié)點描述一個Sub-ALE。其中標識符表示這個Sub-ALE的序號;IP地址代表這 個Sub-ALE的網(wǎng)絡(luò)地址;Is Used的值是True表示當前這個Sub-ALE正在運行,否則就是閑 置;CPU利用率表示運行這個Sub-ALE的處理器的使用率,它有兩個靜態(tài)常量上閥值(High Load)和下閥值(LowLoad)。 CPU利用率值大于High Load的值,表示當前處理器負載過度; CPU利用率值小于Low Load的值,表示當前處理器空閑;標簽池管理負責從閱讀器那里接 收標簽信息保存到標簽池,以及讀取標簽池的標簽信息發(fā)送給各個已經(jīng)啟用的Sub-ALE。 Sub-ALE池管理負責接收各個Sub-ALE的負載探針的信息,并且及時更新到Sub-ALE ,最 后根據(jù)這些探針消息來執(zhí)行負載調(diào)度程序。
圖4展示了分布式ALE的負載均衡的子功能標簽分發(fā)的流程示意圖。標簽分發(fā)其實 擔任著分配負載的角色,它將連接池里面的全部負載,也就是所有標簽信息,按照某種分配 算法,分配給各個Sub-ALE進行處理。這樣解決了負載分配問題,就為負載均衡奠定了基礎(chǔ)。 其中標簽分發(fā)具體如下
單周期分發(fā)標簽。也就是對所有的Sub-ALE進行了一次完整的標簽分發(fā)。
遍歷Sub-ALE:對Sub-ALE池的所有Sub-ALE進行遍歷,只對可用的Sub-ALE進行分 配標簽。
讀取標簽當有可用的Sub-ALE的時候,就到標簽池讀取標簽。如果標簽池沒有標簽, 就以稍停頓可終止的循環(huán)方式,來探詢標簽池。當標簽池有標簽,就一次讀取K個標簽(其中 K是發(fā)生標簽的上閥值),當然如果標簽池里面的標簽數(shù)少于K,則讀取標簽池剩下的所有標簽。
發(fā)送標簽當讀取到標簽的時候,就將上面讀取的所有標簽,根據(jù)當前可用Sub-ALE的 網(wǎng)絡(luò)地址,發(fā)送出去。
循環(huán)調(diào)用單周期這里以稍停頓可終止的循環(huán)方式,調(diào)用單周期,對各個Sub-ALE進 行分配標簽。
附圖5展示了分布式ALE的負載均衡的子功能負載更新的流程示意圖。負載更新就 是將各個Sub-ALE的負載信息,也就是CPU的利用率,及時反饋給連接池的Sub-ALE池管 理模塊。為負載調(diào)度提供及時的負載信息,從而為實現(xiàn)動態(tài)負載均衡提供了數(shù)據(jù)依據(jù)。負載 更新具體如下
對各個可用Sub-ALE建立通道也就是要先和各個Sub-ALE建立負載通道,以方便各 個Sub-ALE將各自的負載信息及時反饋回來。
遍歷Sub-ALE:對Sub-ALE池的所有Sub-ALE進行遍歷,只對可用的Sub-ALE進行負 載更新。
建立通道這里與對應(yīng)的Sub-ALE建立負載通道,如果建立負載通道失敗,則將該 Sub-ALE設(shè)置成不可用。
監(jiān)聽并且更新負載信息對各個Sub-ALE進行負載監(jiān)聽,當監(jiān)聽到負載信息(包括 Sub-ALE的網(wǎng)絡(luò)地址和對應(yīng)的CPU使用率),就根據(jù)IP網(wǎng)絡(luò)地址,在Sub-ALE池中遍歷查找 到對應(yīng)的Sub-ALE,然后更新該Sub-ALE的CPU使用率。
附圖6展示了分布式ALE的負載均衡的子功能負載調(diào)度的流程示意圖。負載調(diào)度就 是根據(jù)各個Sub-ALE的負載情況,調(diào)用調(diào)度算法所有Sub-ALE進行調(diào)度。負載調(diào)度具體如 下
負載調(diào)度初始化主要是初始化負載調(diào)度要使用到的閥值以及負載的參數(shù)信息。其中初
始化Sub-ALE的標識符n=0,用來循環(huán)遍歷所有Sub-ALE;設(shè)置負載上閥值highLoad(默認是 80),就是當Sub-ALE對應(yīng)的CPU利用率高于highLoad的時候,表示該Sub-ALE負載過度; 設(shè)置負載下閥值lowLoad(默認是20), 就是當Sub-ALE對應(yīng)的CPU利用率低于lowLoad的 時候,表示該Sub-ALE處于空閑狀態(tài);設(shè)置可用Sub-ALE的個數(shù)k=0,便于統(tǒng)計當前可用 Sub-ALE的個數(shù);設(shè)置大于highLoad的Sub-ALE的個數(shù)hn=0和小于lowLoad的Sub-ALE 的個數(shù)1if0,分別是為了統(tǒng)計信息。
負載分析該模塊是在上模塊初始化的基礎(chǔ)上,統(tǒng)計可用Sub-ALE的個數(shù)k、大于 highLoad的Sub-ALE的個數(shù)hn和小于lowLoad的Sub-ALE的個數(shù)ln。
負載調(diào)度該模塊根據(jù)上面的負載分析,調(diào)用調(diào)度算法,執(zhí)行調(diào)度。譬如下面調(diào)度算法:
當可用Sub-ALE的個數(shù)k等于大于highLoad的Sub-ALE的個數(shù)hn的時候,如果還有未啟 動的Sub-ALE,則啟動一個Sub-ALE;當可用Sub-ALE的個數(shù)k等于小于lowLoad的Sub-ALE 的個數(shù)ln的時候,如果還有已經(jīng)啟動的Sub-ALE,則停止一個Sub-ALE。
附圖7展示了分布式ALE的報表整合的流程示意圖。報表整合是由Global-ALE的報表 整合模塊對各個Sub-ALE發(fā)送上來的報表進行整合。具體如下
報表監(jiān)聽首先讀取配置信息,得到Sub-ALE的個數(shù)k;為每一個Sub-ALE初始化一 個代數(shù)生成器,并且將代數(shù)初始化為0。接著就是以稍暫??山K止的循環(huán)方式,監(jiān)聽各個 Sub-ALE的報表。
報表處理對監(jiān)聽到的報表,進行暫時存儲到報表緩沖池;當該代的報表都到齊的時候, 就進行報表整合;當產(chǎn)生總報表的時候,就執(zhí)行維和數(shù)據(jù)一致性模塊;最后,將該總報表發(fā) 送給應(yīng)用業(yè)務(wù)邏輯層。
報表存儲當監(jiān)聽到報表的時候,調(diào)用發(fā)送該報表的Sub-ALE對應(yīng)的代數(shù)生成器,獲 取一個代數(shù)標識符g(唯一的整數(shù)值);將這個代數(shù)標識符賦給該報表;將該報表存儲在報表緩 沖池。
報表整合遍歷報表緩沖池,統(tǒng)計代數(shù)標識符是g的報表的個數(shù)n;如果n等于可用 Sub-ALE的個數(shù)k,則將報表緩沖池里面,所有代數(shù)標識符是g的報表提取出來,進行整合, 得到總報表;
維護數(shù)據(jù)一致性在下面詳細分析;
發(fā)送報表將該總報表發(fā)送給應(yīng)用業(yè)務(wù)邏輯層。
附圖8展示了分布式ALE的維護數(shù)據(jù)一致性的流程示意圖。所有Sub-ALE必須共享上 一個事件周期期間讀取的所有標簽信息,稱作previousEPCSet。 Global-ALE的總報表的所有 標簽的集合恰好就是全局的previousEPCSet。因此Global-ALE將總報表的所有標簽信息,添 加到Global-ALE的previousEPCSet,然后將這個previousEPCSet同步給每一個Sub-ALE。具
體如下
初始化讀取總報表,并且清空上一個事件周期標簽集合。
標簽提取讀取總報表的每一個標簽,并且刪除原記錄;并且判斷該標簽是否存在于上 一個事件周期標簽集合中,如果存在,就跳過該標簽,如果不存在,就將該標簽添加到上一 個事件周期標簽集合。
同步上一個事件周期標簽當將總報表的所有標簽,都整理好給上一個事件周期標簽集 合后,就將上一個事件周期標簽集合,通過網(wǎng)絡(luò)接口調(diào)用,同步到各個Sub-ALE中。
權(quán)利要求
1.一種基于分布式ALE的RFID中間件,其特征在于包括從上到下依次連接的Global-ALE模塊、Sub-ALE模塊和連接池模塊,所述Global-ALE模塊向上與應(yīng)用業(yè)務(wù)邏輯層連接,所述連接池模塊向下與閱讀標簽層連接,所述Sub-ALE模塊包括多個Sub-ALE,每一個Sub-ALE都具有ALE的功能,而且每個Sub-ALE之間都是映像關(guān)系,即采用一樣的業(yè)務(wù)規(guī)則。
2、 根據(jù)權(quán)利要求1所述的基于分布式ALE的RFID中間件,其特征在于所述Global-ALE 模塊設(shè)置有業(yè)務(wù)邏輯模塊、命令接口模塊和報表集成模塊。
3、 根據(jù)權(quán)利要求l所述的基于分布式ALE的RFID中間件,其特征在于所述Sub-ALE 模塊的每個Sub-ALE均設(shè)置有標簽處理模塊和負載探針模塊。
4、 根據(jù)權(quán)利要求l所述的基于分布式ALE的RFID中間件,其特征在于所述連接池模 塊設(shè)有Sub-ALE池和標簽池,以及用于管理Sub-ALE池、標簽池的Sub-ALE池管理模塊和 標簽池管理模塊。
5、 根據(jù)權(quán)利要求1至4任一項所述的基于分布式ALE的RFID中間件,其特征在于所 述中間件設(shè)有負載均衡機制,該負載均衡機制包括標簽分發(fā)、負載更新、負載調(diào)度。
6、 根據(jù)權(quán)利要求5所述的基于分布式ALE的RFID中間件,其特征在于所述標簽分發(fā) 包括分發(fā)標簽單周期以及循環(huán)周期;所述分發(fā)標簽單周期是對所有的Sub-ALE進行了一次完整的標簽分發(fā),其對Sub-ALE 池的所有Sub-ALE進行遍歷,只對可用的Sub-ALE進行分配標簽,當有可用的Sub-ALE的 時候,就到標簽池讀取標簽,如果標簽池沒有標簽,就以稍停頓可終止的循環(huán)方式,來探詢 標簽池,當標簽池有標簽,就一次讀取K個標簽,其中K是發(fā)生標簽的上閥值,當然如果標 簽池里面的標簽數(shù)少于K,則讀取標簽池剩下的所有標簽,當讀取到標簽的時候,就將上面 讀取的所有標簽,根據(jù)當前可用Sub-ALE的網(wǎng)絡(luò)地址,發(fā)送出去。所述循環(huán)周期以稍停頓可終止的循環(huán)方式,調(diào)用單周期,對各個Sub-ALE進行分配標簽。
7、 根據(jù)權(quán)利要求5所述的基于分布式ALE的RFID中間件,其特征在于所述負載更新 具體如下對各個可用Sub-ALE建立通道也就是要先和各個Sub-ALE建立負載通道,以方便各 個Sub-ALE將各自的負載信息及時反饋回來;遍歷Sub-ALE:對Sub-ALE池的所有Sub-ALE進行遍歷,只對可用的Sub-ALE進行負 載更新;建立通道與對應(yīng)的Sub-ALE建立負載通道,如果建立負載通道失敗,則將該Sub-ALE 設(shè)置成不可用;監(jiān)聽并且更新負載信息對各個Sub-ALE進行負載監(jiān)聽,當監(jiān)聽到負載信息,包括 Sub-ALE的網(wǎng)絡(luò)地址和對應(yīng)的CPU使用率,就根據(jù)IP網(wǎng)絡(luò)地址,在Sub-ALE池中遍歷查找 到對應(yīng)的Sub-ALE,然后更新該Sub-ALE的CPU使用率。
8、 根據(jù)權(quán)利要求5所述的基于分布式ALE的RFID中間件,其特征在于所述負載調(diào)度 具體如下負載調(diào)度初始化主要是初始化負載調(diào)度要使用到的闊值以及負載的參數(shù)信息,其中初 始化Sub-ALE的標識符n=0,用來循環(huán)遍歷所有Sub-ALE;設(shè)置負載上閥值highLoad,默認 是80,就是當Sub-ALE對應(yīng)的CPU利用率高于highLoad的時候,表示該Sub-ALE負載過 度;設(shè)置負載下闊值lowLoad,默認是20,就是當Sub-ALE對應(yīng)的CPU利用率低于lowLoad 的時候,表示該Sub-ALE處于空閑狀態(tài);設(shè)置可用Sub-ALE的個數(shù)ki,便于統(tǒng)計當前可用 Sub-ALE的個數(shù);設(shè)置大于highLoad的Sub-ALE的個數(shù)hn=0和小于lowLoad的Sub-ALE 的個數(shù)111=0,分別是為了統(tǒng)計信息;負載分析在初始化的基礎(chǔ)上,統(tǒng)計可用Sub-ALE的個數(shù)k、大于highLoad的Sub-ALE 的個數(shù)hn和小于lowLoad的Sub-ALE的個數(shù)In;負載調(diào)度根據(jù)負載分析,調(diào)用調(diào)度算法,執(zhí)行調(diào)度,具體調(diào)度算法為當可用Sub-ALE的個數(shù)k等于大于highLoad的Sub-ALE的個數(shù)hn的時候,如果還有未啟動的Sub-ALE,則 啟動一個Sub-ALE;當可用Sub-ALE的個數(shù)k等于小于lowLoad的Sub-ALE的個數(shù)In的時 候,如果還有已經(jīng)啟動的Sub-ALE,則停止一個Sub-ALE。
9、 根據(jù)權(quán)利要求1至4任一項所述的基于分布式ALE的RFID中間件,其特征在于所 述中間件設(shè)有報表整合機制,由Global-ALE的報表整合模塊對各個Sub-ALE發(fā)送上來的報 表進行整合,具體如下報表監(jiān)聽首先讀取配置信息,得到Sub-ALE的個數(shù)k;為每一個Sub-ALE初始化一 個代數(shù)生成器,并且將代數(shù)初始化為0,接著就是以稍暫??山K止的循環(huán)方式,監(jiān)聽各個 Sub-ALE的報表;報表處理對監(jiān)聽到的報表,進行暫時存儲到報表緩沖池;當該代的報表都到齊的吋候, 就進行報表整合;當產(chǎn)生總報表的時候,就執(zhí)行維和數(shù)據(jù)一致性模塊;最后,將該總報表發(fā) 送給應(yīng)用業(yè)務(wù)邏輯層;報表存儲當監(jiān)聽到報表的時候,調(diào)用發(fā)送該報表的Sub-ALE對應(yīng)的代數(shù)生成器,獲 取一個代數(shù)標識符g, g為唯一的整數(shù)值;將這個代數(shù)標識符賦給該報表;將該報表存儲在報 表緩沖池;報表整合遍歷報表緩沖池,統(tǒng)計代數(shù)標識符是g的報表的個數(shù)n;如果n等于可用 Sub-ALE的個數(shù)k,則將報表緩沖池里面,所有代數(shù)標識符是g的報表提取出來,進行整合, 得到總報表;最后進行維護數(shù)據(jù)一致性以及將該總報表發(fā)送給應(yīng)用業(yè)務(wù)邏輯層。
10、根據(jù)權(quán)利要求1至4任一項所述的基于分布式ALE的RPID中間件,其特征在丁-所 述中間件設(shè)有維護數(shù)據(jù)一致性的機制,具體如下初始化讀取總報表,并且清空上一個事件周期標簽集合;標簽提取讀取總報表的每一個標簽,并且刪除原記錄;并且判斷該標簽是否存在于上 一個事件周期標簽集合中,如果存在,就跳過該標簽,如果不存在,就將該標簽添加到上一 個事件周期標簽集合;同步上一個事件周期標簽當將總報表的所有標簽,都整理好給上一個事件周期標簽集 合后,就將上一個事件周期標簽集合,通過網(wǎng)絡(luò)接口調(diào)用,同步到各個Sub-ALE中。
全文摘要
本發(fā)明提供了一種基于分布式ALE的RFID中間件,包括從上到下依次連接的Global-ALE模塊、Sub-ALE模塊和連接池模塊,所述Global-ALE模塊向上與應(yīng)用業(yè)務(wù)邏輯層連接,所述連接池模塊向下與閱讀標簽層連接,所述Sub-ALE模塊包括多個Sub-ALE,每一個Sub-ALE都具有ALE的功能,而且每個Sub-ALE之間都是映像關(guān)系,即采用一樣的業(yè)務(wù)規(guī)則。本發(fā)明采用了分布式的ALE體系結(jié)構(gòu),通過子任務(wù)的劃分,標簽信息的分配,充分利用分布式資源來并行計算,很好地解決了負載過度問題。同時,維護了報表的一致性,從而實現(xiàn)了對應(yīng)用層是透明的。
文檔編號G06K7/00GK101373509SQ20081019906
公開日2009年2月25日 申請日期2008年10月10日 優(yōu)先權(quán)日2008年10月10日
發(fā)明者劉發(fā)貴, 劉澤浩, 揭育柱, 維 申 申請人:華南理工大學