<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于集群技術(shù)的RFID 中間件研究與開(kāi)發(fā)

基于集群技術(shù)的RFID 中間件研究與開(kāi)發(fā)

作者: 時(shí)間:2011-02-05 來(lái)源:網(wǎng)絡(luò ) 收藏
1前言

  隨著(zhù)RFID(RadioFrequencyIdentification)技術(shù)的推廣,越來(lái)越多的企業(yè)開(kāi)始使用RFID技術(shù),并且正在被應用到很多著(zhù)名的ERP系統中去,例如EBS和SAP系統。在整合RFID中間件和ERP系統時(shí),我們遇到了很多挑戰。對于大多數的ERP系統,高可靠性、高可用性、高擴展性、高性能是至關(guān)重要的,因此在RFID中間件與ERP系統整合過(guò)程中,RFID中間件也必須像必須向上層應用系統提供高質(zhì)量的服務(wù),才能保證整個(gè)系統的高可靠性、高可用性、高擴展性、高性能。

為了解決這些問(wèn)題,我們將集群技術(shù)應用到中間件中來(lái)。RFID中間件是基于組件的形式開(kāi)發(fā)的,因此系統可以粗略的劃分為2個(gè)部分:數據和組件。對于數據,我們可以利用集群的分布式數據管理模塊來(lái)處理,通過(guò)分布式緩存服務(wù)形成同一的數據視圖,使得每個(gè)節點(diǎn)都可以訪(fǎng)問(wèn)到其他節點(diǎn)的數據;通過(guò)復制緩存服務(wù)為每一個(gè)數據在不同節點(diǎn)產(chǎn)生一個(gè)備份,使得數據具有高可靠性和高可用性。對于組件,我們通過(guò)組件調度策略是把所有的組件分配到不同的節點(diǎn)去,以實(shí)現系統的高擴展性和高性能。

2系統架構

2.1整體架構

設備管理層:RFID中間件的底層系統部分,完成對RFID系統中的所有硬件設備的管理與監控。為不同生產(chǎn)廠(chǎng)家的讀寫(xiě)設備提供了統一的接口,屏蔽了底層環(huán)境的異構性和復雜性;對各種硬件設備進(jìn)行統一的管理,極大地簡(jiǎn)化和加快了應用系統和設備的集成。

數據處理層:數據處理層需要對原始數據進(jìn)行處理,包括數據過(guò)濾以消除重復讀取產(chǎn)生的冗余數據,位過(guò)濾篩選感興趣的數據,數據聚合分組等等。從而減少數據量并且保留感興趣的數據。

應用程序級接口層:提供標準化的事件接口,應用系統可通過(guò)向其發(fā)送事件請求來(lái)訂閱需要的數據。事件請求中定義了數據處理的方式以及發(fā)送報告的格式。該層解析應用系統的事件請求,根據請求中的定義調用設備層獲取數據并對采集到的原始數據進(jìn)行數據緩存、數據編碼解析、數據過(guò)濾和數據歸并等基本數據處理操作。最后將處理結果封裝成報告,發(fā)送給應用系統。

信息服務(wù)層:提供各種RFID信息服務(wù),包括存儲捕獲的事件、對事件進(jìn)行推理、提供信息的查詢(xún)等,協(xié)助應用程序完成相應的業(yè)務(wù)操作。

業(yè)務(wù)集成層:用戶(hù)可以結合具體的業(yè)務(wù),定義相應的業(yè)務(wù)模型,由RFID中間件根據定義的業(yè)務(wù)模型來(lái)輔助完成相應業(yè)務(wù),最后將處理的結果與后臺應用系統進(jìn)行整合。

  集群服務(wù)層:為上層的應用系統提供一個(gè)統一的中間件視圖,管理集群節點(diǎn)狀態(tài),系統所有組件在各個(gè)節點(diǎn)間的分配,并且提供統一的分布式緩存視圖。

2.2集群服務(wù)層

集群服務(wù)層主要由以下4個(gè)部分組成:

跟蹤服務(wù):該模塊主要管理集群系統內的節點(diǎn)成員列表和注冊服務(wù)列表。當節點(diǎn)啟動(dòng)時(shí),該服務(wù)自動(dòng)啟動(dòng),并且將該節點(diǎn)加入到集群中,同時(shí)維護集群內其他節點(diǎn)列表,探測節點(diǎn)失敗狀態(tài),并且維護集群中所注冊的服務(wù)列表(主要就是分布式緩存服務(wù))。分布式緩存服務(wù):該模塊允許節點(diǎn)去訪(fǎng)問(wèn)其他節點(diǎn)的數據,這樣就可以使得數據只保存在一個(gè)節點(diǎn)中,另外通過(guò)悲觀(guān)鎖來(lái)實(shí)現分布式緩存的一致性。

復制緩存服務(wù):該模塊同步的復制分布式緩存服務(wù)中的數據,將復制數據保存在其他節點(diǎn)上。當數據發(fā)生變動(dòng)時(shí),復制數據自動(dòng)相應變動(dòng)。當集群節點(diǎn)增加時(shí),自動(dòng)將復制數據均攤到新增節點(diǎn)中,實(shí)現復制數據的負載平衡。當集群節點(diǎn)發(fā)生故障或者離開(kāi)集群時(shí),備份數據自動(dòng)變?yōu)榭稍L(fǎng)問(wèn)數據,并且在其他節點(diǎn)備份該數據。

組件管理:該RFID中間件是面向組件開(kāi)發(fā)設計的,每個(gè)層次都是由多個(gè)組件串行或者并行組合實(shí)現其功能。該模塊就是通過(guò)制定一定的策略,來(lái)決定組件如何分布在各個(gè)節點(diǎn),并且協(xié)同工作,來(lái)提高系統性能

3系統實(shí)現

3.1組件定義

組件是系統最基本的功能模塊,每個(gè)層次的服務(wù)都是通過(guò)多個(gè)組件串行或者并行組合來(lái)實(shí)現其功能的。設備管理層的基本組件就是device組件,每個(gè)device組件對應一個(gè)實(shí)際讀寫(xiě)器,所有的device組件并行工作就組成了設備管理層。數據處理層的基本組件是各種過(guò)濾器,包括冗余過(guò)濾器、位過(guò)濾器等等,多個(gè)過(guò)濾器串行工作,使得要處理的數據依次通過(guò)這些過(guò)濾器,則實(shí)現了數據處理層的工作。

3.2組件結構

每個(gè)組件都包含輸入和輸出,在這里輸入和輸出都要掛在數據緩存總線(xiàn)上,各個(gè)節點(diǎn)的數據緩存總線(xiàn)都有分布式緩存服務(wù)來(lái)管理,并且生成一致的數據視圖,這樣就把分布在各個(gè)節點(diǎn)的組件通過(guò)分布式緩存服務(wù)整合了起來(lái)。結構如下:

3.3組件類(lèi)型

在確定組件協(xié)同工作機制之前,首先需要定義一下組件的類(lèi)型:有狀態(tài)組件和無(wú)狀態(tài)組件。

有狀態(tài)組件:輸出結果的產(chǎn)生不只依賴(lài)當前的輸入數據,還依賴(lài)于之前的輸入數據。每一次輸入數據都會(huì )對后續結果的產(chǎn)生有影響。設備管理層的device組件就是一個(gè)有狀態(tài)組件,因為device組件中維護著(zhù)與讀寫(xiě)器之間的連接,該連接是有狀態(tài)的,所以device組件也是有狀態(tài)的。數據處理層的冗余過(guò)濾器也是有狀態(tài)的組件,因為每次輸出結果時(shí)都要判斷指定時(shí)間內是否存在相同的數據。應用程序級接口層的EventCycle組件CommandCycle組件也是有狀態(tài)的組件,因為產(chǎn)生的報告與指定時(shí)間段內的所有數據有關(guān)。

無(wú)狀態(tài)組件:輸出結果的產(chǎn)生只與當前的輸入數據有關(guān)。在輸入數據確定的情況下,輸出數據也是確定的。數據處理層中的位過(guò)濾器是無(wú)狀態(tài)組件,因為它只需要根據當前數據數據的EPC碼來(lái)判斷是否符合過(guò)濾條件,與之前狀態(tài)無(wú)關(guān)。應用程序級接口層的Dispatcher組件,負責將產(chǎn)生的報告分發(fā)至指定URI,也是一個(gè)無(wú)狀態(tài)組件。

3.4負載均衡

根據組件分類(lèi),有狀態(tài)組件和無(wú)狀態(tài)組件我們將采用不同的策略。

對于無(wú)狀態(tài)組件,由于不涉及之前輸入數據的狀態(tài),數據即時(shí)產(chǎn)生即時(shí)處理。因此,我們在集群每一個(gè)節點(diǎn)處都創(chuàng )建出所有的無(wú)狀態(tài)組件,每個(gè)節點(diǎn)的無(wú)狀態(tài)組件將通過(guò)一定負載均衡策略來(lái)獲得數據的處理權,從而將數據計算處理的工作量分散到各個(gè)節點(diǎn)。

可以采用的負載均衡策略目前有2種:

輪詢(xún)調度算法(Round-RobinScheduling):針對每一個(gè)層次,把來(lái)自數據緩存總線(xiàn)的數據輪流分配給集群中各個(gè)節點(diǎn),從1開(kāi)始,直到N(集群內節點(diǎn)數),然后重新開(kāi)始循環(huán)。由于無(wú)狀態(tài)組件不會(huì )占用高消耗的系統資源,如數據庫連結、Socket連接等(如果擁有連接,該組件應屬于有狀態(tài)組件),因此輪詢(xún)調度算法基本可以實(shí)現無(wú)狀態(tài)組件在各個(gè)節點(diǎn)上處理能力的負載均衡。

就近調度算法:在各個(gè)層次中,無(wú)狀態(tài)組件一般要與有狀態(tài)組件相結合,共同完成該層次所提供的功能。就近調度算法就是根據有狀態(tài)組件所處節點(diǎn)位置,來(lái)決定無(wú)狀態(tài)組件所處位置,使該層次中所有無(wú)狀態(tài)組件與有狀態(tài)組件處于同一個(gè)節點(diǎn)。這種算法的優(yōu)點(diǎn)就是當一個(gè)層次中所有串行操作的組件都處于同一個(gè)節點(diǎn)時(shí),數據在每一個(gè)組件處理完成時(shí)不必在不同的節點(diǎn)間遷移,大大減少了數據遷移時(shí)的時(shí)間延遲。該算法的缺點(diǎn)就是,負載均衡的效果很大程度上取決于有狀態(tài)組件的分布情況對于有狀態(tài)組件,參見(jiàn)后面的組件調度策略。

3.5組件調度策略

該策略主要用來(lái)分配有狀態(tài)組件在各個(gè)節點(diǎn)的分布,位于組件管理模塊中。

1)平均分配策略

平均分配策略即將每個(gè)層次中的有狀態(tài)組件平均的分配到各個(gè)節點(diǎn)中。

該策略的優(yōu)點(diǎn)是實(shí)現簡(jiǎn)單,在加入新節點(diǎn)或者節點(diǎn)故障時(shí)也比較容易在集群中重新分配組件。

該策略的缺點(diǎn)是大量的數據遷移帶來(lái)不可忽視的延遲。不同層次間的數據可能需要遷移到不同的節點(diǎn),來(lái)移交給下一個(gè)層次的組件來(lái)處。相同層次內,也有能由多個(gè)組件組成一個(gè)串行操作,當這些組件位于不同節點(diǎn)時(shí),也會(huì )帶來(lái)大量的層次內組件間的數據遷移。

2)流水分配策略

如上圖所示,流水分配策略就是類(lèi)似于流水線(xiàn)作業(yè),按層次分配組件,將相同層次的組件放在相同的節點(diǎn)中。

該策略的優(yōu)點(diǎn)是實(shí)現也相對比較簡(jiǎn)單。使得相同節點(diǎn)內串行操作組件的數據全部位于本地節點(diǎn)內,完全消除這類(lèi)數據操作遠程存儲和數據遷移的時(shí)間延遲。

該策略的缺點(diǎn)是不能做到負載均衡,不同層次間的計算量差異較大,也就導致了不同節點(diǎn)間的負載不均衡。不同節點(diǎn)層次間的數據遷移量很大,對于這一點(diǎn)可以利用分布式緩存服務(wù)的批量遷移功能,減少遷移次數,增大每次的遷移數據量,來(lái)減少時(shí)間延遲。

3)并行分配策略

并行分配策略就是類(lèi)似于并行作業(yè),將處理相同邏輯的讀寫(xiě)器定義為一個(gè)邏輯讀寫(xiě)器組,從邏輯讀寫(xiě)器組出發(fā),跟蹤數據流動(dòng)的路徑,將數據流經(jīng)的所有的組件都分配在同一個(gè)節點(diǎn)處。

該策略的優(yōu)點(diǎn)是使得數據的本地副本只在一個(gè)節點(diǎn)內傳遞,盡可能的消除數據遠程調用和數據遷移的時(shí)間延遲,復制緩存服務(wù)也可以批量異步的完成備份數據的更新操作。

該策略的缺點(diǎn)是程序實(shí)現的復雜度高,當邏輯不相關(guān)的組件之間的交叉引用增多時(shí),該策略的效率將會(huì )明顯下降。這種情況下,應當考慮重新設計組件架構,適當增加重復組件,以減少不相關(guān)組件之間的交叉引用關(guān)系。

4小結

本文第一次將集群技術(shù)引入到RFID中間件中來(lái)。并且討論了分布式數據管理和組件調度策略。分布式數據管理通過(guò)分布式緩存服務(wù)形成同一的數據視圖,使得每個(gè)節點(diǎn)都可以訪(fǎng)問(wèn)到其他節點(diǎn)的數據;通過(guò)復制緩存服務(wù)為每一個(gè)數據在不同節點(diǎn)產(chǎn)生一個(gè)備份,使得數據具有高可靠性和高可用性。組件調度策略是把所有的組件分配到不同的節點(diǎn)去,以實(shí)現系統的高擴展性和高性能。最終實(shí)現了RFID中間件的高可靠性、高可用性、高擴展性、高性能。

本文作者創(chuàng )新點(diǎn):本文第一次將集群技術(shù)引入到RFID中間件中來(lái),并且討論了分布式數據管理和組件調度策略在中間件中的實(shí)現,最終實(shí)現了RFID中間件的高可靠性、高可用性、高擴展性、高性能。

物聯(lián)網(wǎng)相關(guān)文章:物聯(lián)網(wǎng)是什么




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>