RFID技術挑戰和參考架構
本文將討論適用于與企業大型IT生態系統相接合的RFID基礎架構的架構。重點介紹通常被RFID供應商所忽略的幾個問題,闡述在選擇RFID基礎架構供應商時需要考慮的架構選項,并詳細研究這些選項的架構優點。
簡介無線射頻識別(Radio Frequency Identification,RFID)正在成為現實,因為現代供應鏈要求有更高的效能、更大的信息流和靈活性。RFID產品已在零售、醫藥、運輸、國防和帶包裝消費品等行業中得到廣泛應用。采用RFID技術可以改進血統追蹤,提高預測水平和集裝箱安全性,同時減少貨物皺縮、召回和脫銷等問題的發生,從而節約數十億美元的供應鏈成本。
沃爾瑪、Albertson's和Best Buy等零售商已要求他們的頂級供應商到2005年末全部啟用RFID。這些要求會擴展到數以千計的供應商、商店和配送中心,它們都需要裝配多功能分布式讀卡器,這樣就引發了幾個技術挑戰。現在,大部分采用RFID技術的企業都集中于小規模的試點和一站式概念驗證。但是,要真正實現RFID的優點,必須在整個企業范圍內采用該項技術。
基于長期與大流量分布式事務環境打交道的成功經驗,BEA已確定了企業要完全采用RFID技術必須解決的七項關鍵技術挑戰。在未來幾年內,RFID技術的廣泛采用將會在可伸縮性、可用性、安全性、互操作性、集成、管理和消息傳遞等IT領域產生重要的意義。而BEA提供了一個可作為當前和長期RFID解決方案基礎的參考架構。
本文適合對RFID技術具有一定了解的讀者閱讀。
RFID技術挑戰隨著RFID技術的應用日益廣泛,它的分布式特性與處理的大流量相結合,會在可伸縮性、可用性、安全性、互操作性、集成、管理和消息傳遞等七個重要領域引發一些嚴重的技術挑戰。本節將逐一介紹這些挑戰。
可伸縮性
隨著RFID技術的應用日益廣泛,企業需要處理分布在全球各個供應鏈中數以千計的讀卡器的輸入信息。快速發展將會挑戰可伸縮性。需要處理的數據量非常龐大(讀卡器每秒可捕獲120個到400個信號),這樣就產生了更大的挑戰。
要處理這種級別的數據流量,需要使用非阻塞(non-blocking)I/O機制。當眾多用戶同時使用RFID訪問一個應用程序時,大多數中間件解決方案為每個客戶端打開一個插口,并為每個用戶建立獨有的線程。這種阻塞I/O技術嚴重限制了性能和可伸縮性。與此相反,非阻塞I/O可以使BEA WebLogic Server之類的中間件能夠在多個并發用戶中復用少量的讀卡器線程,確保較高的性能和可伸縮性。
在處理讀卡器的大流量數據流和進行消息傳遞時,需要大量使用I/O和網絡。邊緣服務器的CPU利用主要用于邊緣服務器的復本檢測和模式匹配。在要處理的數據量確定的情況下,網絡帶寬也會成為一個問題。“批量數據傳輸”(Boxcarring)——即,將多個請求包裝在一個數據包中——可以舒緩網絡堵塞問題。它還可以減少多個請求通過安全層及其它代碼層所需的時間。
最后,邊緣層中央數據儲存庫的使用會產生系統瓶頸,影響可伸縮性。例如,如果將從一組RFID讀卡器捕獲的數據全部寫入數據庫,進入數據庫的巨大數據流會對性能產生嚴重影響。因此,應該在集成層處理數據庫交互,這樣就可以大大減少需要處理的數據。這種架構(如圖1所示),相對于事件儲存庫方法,可以定義為事件源方法。

圖1:在邊緣層使用數據庫會嚴重限制可伸縮性。邊緣應作為事件源而非事件儲存庫。
為確保數據穿越整個基礎架構和應用協議棧可靠地傳遞至正確的目的地,需要消除邊緣層、集成層以及二者之間所有端點的單點故障(single points of failure,SPOF)。
在捕獲數據和過濾數據的邊緣層,對中央數據庫的依賴性會影響可伸縮性和可用性。另一種做法是,系統可以將事件暫時保留在內存中,在使用之后刪除,或者需要的話,可以記錄在文件系統中。該實踐可以大大降低對數據庫可用性的依賴性。
在讀卡器層,搭接部分——例如,月臺門處的多功能讀卡器或天線——可以提高在物理層準確捕獲事件的可能性。邊緣層可以管理此層中的讀卡器,打開一些讀卡器而關閉另外的一些,消除副本等等。
由于邊緣不記錄它傳遞的事件,而業務邏輯包含在集成層中,因此集成層的可用性至關重要。必須將任何包含商業負載均衡系統的RFID解決方案的互操作性都考慮在內,因為需要負載均衡系統來分配負荷并保證故障轉移。集成層也必須能夠通過集群化的JMS(Java Message Service)提供高度可用的消息傳遞功能。
為確保各層不會出現單點故障,客戶可能希望使用集群化的數據庫來輔助數據層。當然了,在集成層使用數據庫比在邊緣層使用更有效。
安全性對于RFID來說,大量相關的潛在敏感數據使得安全性成為RFID系統至關重要的一個方面。最低級別,安全管理可以防止讀卡器被關閉以及記錄項被竊取。因此,必須通過驗證、授權或審計來保護管理接口,這也許會通過SSL(Secure Socket Layer,安全套接字層)來實現。
但是,大部分RFID中間件解決方案都無法使用SSL。SSL“握手”機制牽涉到CPU密集型的計算,而這會影響邊緣層處理其它CPU密集型作業(如:過濾)的能力。不使用SSL,邊緣層會不太安全。因此,整個堆棧——包括讀卡器層、邊緣層和集成層——通常應包裝到一個防火墻中,所有對堆棧的遠程訪問都要經過許可端口和協議。然后就可以實施周邊身份驗證(perimeter authentication),通過一個Web應用程序或Web服務遠程管理堆棧。
最后,所選擇的中間件平臺必須易于與第三方提供者的身份驗證、授權、LDAP和審計技術相集成,如圖2所示。

圖2:邊緣服務器需要支持可插入的安全提供者接口。
互操作性對于確保RFID的成功實現具有多重重要意義。或許,最迫切的需求是基于標準的JCA適配器要有效連接到諸如倉庫管理系統或運輸管理系統之類的應用程序。僅僅能夠以私有格式發布JMS消息或事件是遠遠不夠的;應用程序供應商,比如SAP、Yantra和Manhattan,要求事件以確定的格式呈現。適配器可以填平鴻溝,將信息以可接受的格式傳播至恰當的應用程序。中間件解決方案應能夠提供和支持適用于關鍵應用程序的適配器。
在其它方面,開箱即用的互操作性同樣至關重要。例如,中間件應能夠與防火墻提供者、身份驗證、授權和審計提供者、負載均衡系統和JMS供應商進行互操作。讀卡器的互操作性也非常重要。盡管讀卡器通信協議的標準化一直在進行,但在出現一個占據主導地位的標準之前,每個中間件供應商都必須提供一個讀卡器抽象層和互操作性解決方案。
設計良好的架構可以將讀卡器抽象層置于邊緣層,使得集成層具有讀卡器無關性。也就是說,集成層無需考慮特定的讀卡器協議或格式。
在讀卡器抽象層,重要的一點是要公開所有特定于讀卡器的命令(可能通過動態讀卡器接口發現),而不是僅僅公開最不常見的命令。抽象層也應能夠支持多種讀卡器版本或讀卡器供應商,而提供統一的抽象層,如圖3所示。

圖3:邊緣服務器需要在異構環境中進行互操作。
需要進行某種形式的企業應用集成(Enterprise Application Integration,EAI)才能實現RFID事件的全部價值。僅僅將事件從邊緣服務器分派至一系列的應用程序還不能成為完美的解決方案,因為它會產生與安全性、可靠消息傳遞、性能、可用性、適配器連接、業務流程界定等相關的問題。
比較而言,EAI解決方案可提供對一個問題的全面概覽。例如,一個在達拉斯和舊金山具有不同邊緣服務器的組織,可以將事件發送至共同的EAI解決方案。涉及連接至不同邊緣服務器的讀卡器或天線的事件需要組合并關聯到一個統一的EAI層。而且,復雜的事件組合不適用于這種情況,因為邊緣層需要占用CPU周期。隨著業務流程涉及到組織內部和外部越來越多的系統和人員,EAI層變得更為關鍵。
其它一些方面也使得集成解決方案更為必要。要連接至后端應用程序,需要使用基于標準的適配器;在可視化環境下匯編、監控和管理流程的能力也非常重要。通過通用抽象層(比如控件),在業務流程、門戶、Web服務、RFID讀卡器和其它元素之間構成復雜交互的能力可以大大提高。(有關控件的更多信息,請訪問dev2dev Beehive頁面)。最后,在傳遞事件時,必須在邊緣層和實際集成層之間實現無縫集成。
管理隨著RFID在各個供應鏈中啟用,管理整個架構的能力成為必要。以高級別來看,RFID的監控和管理包括兩個方面:設備管理和對讀卡器的配置。管理員需要一個管理整個架構的接口,該接口應該包含在一個集中式的門戶框架中。
RFID管理解決方案還應與現有的管理提供者(例如,HP OpenView或Tivoli)無縫集成,需要支持SNMP和JMX之類的標準協議。理想的情況是,一個中央配置主機應能夠將配置推行至邊緣和整個供應鏈中的讀卡器。
當配置內部復雜的分布式環境時,還會出現一些其它挑戰,例如保護單元素服務和消除網絡分區癥狀(split-brain syndrome)。要想RFID配置能夠執行良好,必須解決這些挑戰。
消息傳遞保證的exactly-once(只發送一次)消息處理語義非常難以實現。即使在干預式消息傳輸過程中,發送方和接收方也都存在著消息中斷的可能性。大部分中間件解決方案沒有考慮確保exactly-once消息語義的需求。但是,如果不考慮這個問題會產生一系列問題——例如,單次交付報告會被無意地交付多次。倉庫管理員就會認為向合作伙伴發送了兩份報告而非一份;在不同的時間和地點多次發生這種情況,其效果就會非常驚人。
另一個重要因素是確保對消息排隊和出隊的事務性保證。如果消息沒有按事務順序排隊,隊列就沒有保證;類似地,出隊的消息也無法保證經過完全處理。其它方面的考慮主要是圍繞操作冪等性——重新執行已部分完成的操作是否安全。
有時,需要進行連接的計算,特別是在發送方和接收方地理位置較遠時。在這種情況下,如果一方依賴于另一方的同步響應,則網絡中斷就會帶來整個操作的終止。這種情況下應該設為異步通信。
通常使用JMS進行異步通信。但是,如果JMS提供者在接收方,發送方如果無法對消息進行排隊就會阻塞(或者引發錯誤并負責重新嘗試發送)。因此,在發生這些問題的情況下,將JMS放在接收方不會對發送方有任何幫助。但是,如果要使用存儲-轉發消息傳遞機制,其中的許多問題都可以解決。這樣,異步通信就可以恢復,因為存儲-轉發系統會負責繼續發送消息、重試,等等。由于這個原因,JMS Bridge或存儲-轉發技術就顯得至為重要。
參考架構層BEA的參考架構由四個層組成:讀卡器層、邊緣服務器層、集成層和應用層。如圖4所示。

圖4:未來的參考架構
底層的讀卡器以每秒120和400次的速度輪詢標記,通常基于一個類似于運動傳感器的觸發器。無論在任何時間,IP可尋址的讀卡器應由一個且僅由一個邊緣服務器進行控制。該要求是避免與網絡分區相關的問題所必需的。
邊緣服務器定期輪詢讀卡器(例如每秒兩次),刪除復本,并進行篩選和設備管理。邊緣服務器還負責創建ALE事件并將其分派至集成層。這種分派通常需要exactly-once消息語義(參見上面的“消息傳遞”)。
集成層接收多個ALE事件并將其合并到涉及各種系統和人員的工作流中,這些系統和人員是更大的業務流程的一部分。集成層通過基于標準的JCA適配器與打包應用程序(如:倉庫管理系統或產品信息管理系統)交互。通過一些提供抽象層的控件和開源框架,該層也可以與系統一起工作,抽象層將后端組件公開為可重用組件。
集成層也可以通過Web服務接口與對象名解析服務(Object Naming Service,ONS)進行通信。類似于DNS服務器,ONS可以用于查尋獨有的RFID標記ID以及確認附加的產品信息。集成層還必須維護電子產品代碼信息服務(Electronic Product Code Information Service,EPC-IS)儲存庫,并從中查詢數據,該庫提供了ALE事件(如:通過供應鏈跟蹤和追蹤產品)的業務上下文。圍繞EPC-IS儲存庫的標準目前正在定義。
最后,集成層還可以利用B2B消息(如:查詢EPC-IS儲存庫的EDI或Web服務請求)通過防火墻中的網關與外部系統進行通信。
邊緣與集成層的分離可以提高可伸縮性并降低客戶成本,因為邊緣層既是輕量級的,成本又低。隨著應用服務器和數據庫連接池的使用日益流行,互聯網數據庫連接的快速增長,隨著業界從互聯網通信轉向RFID通信,需要有一個單獨的層進行篩選并將連接集中到集成層。
控制消息通過管理門戶流入系統,進入集成層,然后進入邊緣,最后進入讀卡器。自動配置和配置沿著這個鏈向下進行,而讀卡器數據逆鏈而上進行篩選和傳播。
結束語本文研究了RFID服務器的七個隱含挑戰:可伸縮性、可用性、安全性、互操作性、管理、消息傳遞和集成。本文還提供了一種參考架構,它包括整個生態系統,其中RFID起著重要作用。還討論了常見的架構差異(如:數據庫位于邊緣層)及其產生的結果。
總而言之,當考慮RFID邊緣服務器時,重要的是要選擇一種輕量級的、可遠程管理和遠程自動配置的安全可靠并具有可伸縮性的RFID邊緣服務器。其它特定于RFID的關鍵考慮事項包括:邊緣服務器架構如何解決高I/O和網絡帶寬問題,由密集的模式匹配所引發的極高的CPU占用量,以及這些如何與邊緣層的低CPU和內存占用量要求相配合。事務性可靠的消息,消息的有序性,exactly-once消息傳遞保證,以及在斷開模式下執行的能力,這些對選擇RFID服務器來說也是重要的考慮事項,特別是對于斷開模式操作。
本文的參考架構和上述各注意事項在WebLogic RFID Server中均已實現。