RFID中間件基于集群技術(shù)的研究與開(kāi)發(fā)
3.3 組件類(lèi)型
在確定組件協(xié)同工作機(jī)制之前, 首先需要定義一下組件的類(lèi)型:有狀態(tài)組件和無(wú)狀態(tài)組件。
有狀態(tài)組件:輸出結(jié)果的產(chǎn)生不只依賴(lài)當(dāng)前的輸入數(shù)據(jù),還依賴(lài)于之前的輸入數(shù)據(jù)。每一次輸入數(shù)據(jù)都會(huì)對(duì)后續(xù)結(jié)果的產(chǎn)生有影響。設(shè)備管理層的device 組件就是一個(gè)有狀態(tài)組件,因?yàn)閐evice 組件中維護(hù)著與讀寫(xiě)器之間的連接, 該連接是有狀態(tài)的,所以device 組件也是有狀態(tài)的。數(shù)據(jù)處理層的冗余過(guò)濾器也是有狀態(tài)的組件, 因?yàn)槊看屋敵鼋Y(jié)果時(shí)都要判斷指定時(shí)間內(nèi)是否存在相同的數(shù)據(jù)。應(yīng)用程序級(jí)接口層的EventCycle 組件CommandCycle組件也是有狀態(tài)的組件, 因?yàn)楫a(chǎn)生的報(bào)告與指定時(shí)間段內(nèi)的所有數(shù)據(jù)有關(guān)。
無(wú)狀態(tài)組件:輸出結(jié)果的產(chǎn)生只與當(dāng)前的輸入數(shù)據(jù)有關(guān)。在輸入數(shù)據(jù)確定的情況下,輸出數(shù)據(jù)也是確定的。數(shù)據(jù)處理層中的位過(guò)濾器是無(wú)狀態(tài)組件, 因?yàn)樗恍枰鶕?jù)當(dāng)前數(shù)據(jù)數(shù)據(jù)的EPC 碼來(lái)判斷是否符合過(guò)濾條件,與之前狀態(tài)無(wú)關(guān)。應(yīng)用程序級(jí)接口層的Dispatcher 組件, 負(fù)責(zé)將產(chǎn)生的報(bào)告分發(fā)至指定URI,也是一個(gè)無(wú)狀態(tài)組件。
3.4 負(fù)載均衡
根據(jù)組件分類(lèi), 有狀態(tài)組件和無(wú)狀態(tài)組件我們將采用不同的策略。
對(duì)于無(wú)狀態(tài)組件,由于不涉及之前輸入數(shù)據(jù)的狀態(tài),數(shù)據(jù)即時(shí)產(chǎn)生即時(shí)處理。因此,我們?cè)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/集群">集群每一個(gè)節(jié)點(diǎn)處都創(chuàng)建出所有的無(wú)狀態(tài)組件, 每個(gè)節(jié)點(diǎn)的無(wú)狀態(tài)組件將通過(guò)一定負(fù)載均衡策略來(lái)獲得數(shù)據(jù)的處理權(quán), 從而將數(shù)據(jù)計(jì)算處理的工作量分散到各個(gè)節(jié)點(diǎn)。
可以采用的負(fù)載均衡策略目前有2 種:
輪詢調(diào)度算法(Round-Robin Scheduling):針對(duì)每一個(gè)層次,把來(lái)自數(shù)據(jù)緩存總線的數(shù)據(jù)輪流分配給集群中各個(gè)節(jié)點(diǎn), 從1開(kāi)始,直到N(集群內(nèi)節(jié)點(diǎn)數(shù)),然后重新開(kāi)始循環(huán)。由于無(wú)狀態(tài)組件不會(huì)占用高消耗的系統(tǒng)資源, 如數(shù)據(jù)庫(kù)連結(jié)、Socket 連接等(如果擁有連接,該組件應(yīng)屬于有狀態(tài)組件),因此輪詢調(diào)度算法基本可以實(shí)現(xiàn)無(wú)狀態(tài)組件在各個(gè)節(jié)點(diǎn)上處理能力的負(fù)載均衡。
就近調(diào)度算法:在各個(gè)層次中,無(wú)狀態(tài)組件一般要與有狀態(tài)組件相結(jié)合,共同完成該層次所提供的功能。就近調(diào)度算法就是根據(jù)有狀態(tài)組件所處節(jié)點(diǎn)位置,來(lái)決定無(wú)狀態(tài)組件所處位置,使該層次中所有無(wú)狀態(tài)組件與有狀態(tài)組件處于同一個(gè)節(jié)點(diǎn)。這種算法的優(yōu)點(diǎn)就是當(dāng)一個(gè)層次中所有串行操作的組件都處于同一個(gè)節(jié)點(diǎn)時(shí), 數(shù)據(jù)在每一個(gè)組件處理完成時(shí)不必在不同的節(jié)點(diǎn)間遷移, 大大減少了數(shù)據(jù)遷移時(shí)的時(shí)間延遲。該算法的缺點(diǎn)就是,負(fù)載均衡的效果很大程度上取決于有狀態(tài)組件的分布情況對(duì)于有狀態(tài)組件,參見(jiàn)后面的組件調(diào)度策略。
評(píng)論