本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及視頻云存儲技術(shù)。
背景技術(shù):
gb/t28181是一種基于會話發(fā)起協(xié)議(sessioninitiationprotocol,sip)的監(jiān)控信令傳輸標(biāo)準(zhǔn)協(xié)議。本發(fā)明的發(fā)明人發(fā)現(xiàn),在gb/t28181協(xié)議中,系統(tǒng)通過一個(gè)sip代理設(shè)備與sip服務(wù)器建立通信,一旦該sip代理設(shè)備宕機(jī),系統(tǒng)就無法與sip服務(wù)器進(jìn)行通信,整個(gè)交互過程就會因?yàn)閱吸c(diǎn)故障而無法繼續(xù)進(jìn)行。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種視頻存儲系統(tǒng)及其視頻數(shù)據(jù)發(fā)送方法,有效避免了單點(diǎn)故障,保證了系統(tǒng)的穩(wěn)定性。
為解決上述技術(shù)問題,本發(fā)明的實(shí)施例公開了一種視頻存儲系統(tǒng),包括第一控制節(jié)點(diǎn)、第二控制節(jié)點(diǎn)和至少兩個(gè)存儲節(jié)點(diǎn):
所述的至少兩個(gè)存儲節(jié)點(diǎn),用于存儲視頻數(shù)據(jù);并且
每個(gè)控制節(jié)點(diǎn)包括信令代理模塊,每個(gè)存儲節(jié)點(diǎn)包括數(shù)據(jù)代理模塊;
第一控制節(jié)點(diǎn)的信令代理模塊,用于使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議與第三方平臺交互;
第二控制節(jié)點(diǎn)用于在確定第一控制節(jié)點(diǎn)不可用后,啟動(dòng)第二控制節(jié)點(diǎn)的信令代理模塊;
第二控制節(jié)點(diǎn)的信令代理模塊,用于使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議接收來自第三方平臺的業(yè)務(wù)請求,并根據(jù)業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令;
指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊,用于根據(jù)接收到的指令,基于預(yù)定的信令協(xié)議將視頻數(shù)據(jù)發(fā)送給第三方平臺。
這樣,因?yàn)楸景l(fā)明實(shí)施例在多個(gè)控制節(jié)點(diǎn)中均設(shè)置了信令代理模塊,在多個(gè)存儲節(jié)點(diǎn)中均設(shè)置了數(shù)據(jù)代理模塊,在第一控制節(jié)點(diǎn)不可用后,系統(tǒng)就可以切換到其它的控制節(jié)點(diǎn)的信令代理模塊,繼續(xù)基于同一個(gè)虛擬ip地址和信令協(xié)議,實(shí)現(xiàn)與第三方平臺的交互,所以有效避免了單點(diǎn)故障,保證了系統(tǒng)的穩(wěn)定性;再者,多個(gè)控制節(jié)點(diǎn)都使用同一個(gè)虛擬ip地址與存儲節(jié)點(diǎn)進(jìn)行控制,因此,在第一控制節(jié)點(diǎn)不可用后,存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊無需重新注冊到新的ip地址,簡化了切換過程,縮短了切換時(shí)間。
在本發(fā)明的一個(gè)實(shí)施例中,所述第一控制節(jié)點(diǎn)和/或第二控制節(jié)點(diǎn)還包括:
ip獲取單元,用于周期性地獲取本控制節(jié)點(diǎn)的ip地址;
信令代理控制單元,用于根據(jù)所述ip獲取單元所獲取的ip地址和本控制節(jié)點(diǎn)的信令代理模塊的當(dāng)前狀態(tài)對本控制節(jié)點(diǎn)的信令代理模塊進(jìn)行控制,其中,如果本控制節(jié)點(diǎn)的ip地址與所述預(yù)先設(shè)置的虛擬ip地址相同,且本控制節(jié)點(diǎn)的信令代理模塊當(dāng)前未啟動(dòng),則啟動(dòng)本控制節(jié)點(diǎn)的信令代理模塊,如果本控制節(jié)點(diǎn)的ip地址與所述預(yù)先設(shè)置的虛擬ip地址不同,且本控制節(jié)點(diǎn)的信令代理模塊已被啟動(dòng),則停止本控制節(jié)點(diǎn)的信令代理模塊。
在本發(fā)明的一個(gè)實(shí)施例中,所述信令代理模塊包括:
系統(tǒng)壓力信息采集單元,用于周期性地從各存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊接收存儲節(jié)點(diǎn)的系統(tǒng)壓力信息;
業(yè)務(wù)分配單元,用于在接收到來自所述第三方平臺的獲取視頻數(shù)據(jù)的業(yè)務(wù)請求時(shí),根據(jù)所述系統(tǒng)壓力信息采集單元所接收的各存儲節(jié)點(diǎn)的系統(tǒng)壓力信息,選擇當(dāng)前系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從所述n個(gè)存儲節(jié)點(diǎn)中,選擇已分配業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn),通知該存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊向所述第三方平臺發(fā)送視頻數(shù)據(jù),其中n為正整數(shù),且小于所述視頻存儲系統(tǒng)中的存儲節(jié)點(diǎn)的總數(shù)。
這樣,由于業(yè)務(wù)分配單元先找到系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從中選擇已分配業(yè)務(wù)數(shù)量最小的存儲節(jié)點(diǎn)處理業(yè)務(wù),發(fā)送視頻數(shù)據(jù),可以防止業(yè)務(wù)被分配到非視頻業(yè)務(wù)占用過多資源(如cpu、內(nèi)存等資源)的存儲節(jié)點(diǎn),而使得視頻數(shù)據(jù)業(yè)務(wù)無法繼續(xù)或業(yè)務(wù)分配失敗。
在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)代理模塊包括:
壓力信息上報(bào)單元,用于向信令代理模塊發(fā)送數(shù)據(jù)代理模塊所在存儲節(jié)點(diǎn)的系統(tǒng)壓力信息。
在本發(fā)明的一個(gè)實(shí)施例中,所述虛擬ip地址是基于linux虛擬服務(wù)器技術(shù)預(yù)先設(shè)置的。
在本發(fā)明的一個(gè)實(shí)施例中,所述預(yù)定的信令協(xié)議是gb/t28181協(xié)議。
本發(fā)明的實(shí)施例還公開了一種基于視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法,該視頻存儲系統(tǒng)包括:第一控制節(jié)點(diǎn)、第二控制節(jié)點(diǎn)和用于存儲視頻數(shù)據(jù)的至少兩個(gè)存儲節(jié)點(diǎn);每個(gè)控制節(jié)點(diǎn)包括信令代理模塊;每個(gè)存儲節(jié)點(diǎn)包括數(shù)據(jù)代理模塊;第一控制節(jié)點(diǎn)的信令代理模塊使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議與第三方平臺交互,方法包括:
在確定第一控制節(jié)點(diǎn)不可用后,第二控制節(jié)點(diǎn)啟動(dòng)第二控制節(jié)點(diǎn)的信令代理模塊;
第二控制節(jié)點(diǎn)的信令代理模塊,使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定 的信令協(xié)議,接收來自第三方平臺的業(yè)務(wù)請求,并根據(jù)業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令;
指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊根據(jù)接收到的指令,基于預(yù)定的信令協(xié)議將視頻數(shù)據(jù)發(fā)送給第三方平臺。
這樣,因?yàn)楸景l(fā)明實(shí)施例在多個(gè)控制節(jié)點(diǎn)中均設(shè)置了信令代理模塊,在多個(gè)存儲節(jié)點(diǎn)中均設(shè)置了數(shù)據(jù)代理模塊,在第一控制節(jié)點(diǎn)不可用后,系統(tǒng)就可以切換到其它的控制節(jié)點(diǎn)的信令代理模塊,繼續(xù)基于同一個(gè)虛擬ip地址和信令協(xié)議,實(shí)現(xiàn)與第三方平臺的交互,所以有效避免了單點(diǎn)故障,保證了系統(tǒng)的穩(wěn)定性;再者,多個(gè)控制節(jié)點(diǎn)都使用同一個(gè)虛擬ip地址與存儲節(jié)點(diǎn)進(jìn)行控制,因此,在第一控制節(jié)點(diǎn)不可用后,存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊無需重新注冊到新的ip地址,簡化了切換過程,縮短了切換時(shí)間。
在本發(fā)明的一個(gè)實(shí)施例中,該基于視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法還包括以下步驟:
每一個(gè)控制節(jié)點(diǎn)周期性地獲取本控制節(jié)點(diǎn)的ip地址,如果本控制節(jié)點(diǎn)的ip地址與所述預(yù)先設(shè)置的虛擬ip地址相同且本控制節(jié)點(diǎn)的信令代理模塊當(dāng)前未啟動(dòng),則啟動(dòng)本控制節(jié)點(diǎn)的信令代理模塊,如果本控制節(jié)點(diǎn)的ip地址與所述預(yù)先設(shè)置的虛擬ip地址不同且本控制節(jié)點(diǎn)的信令代理模塊已被啟動(dòng),則停止本控制節(jié)點(diǎn)的信令代理模塊。
在本發(fā)明的一個(gè)實(shí)施例中,該視頻數(shù)據(jù)發(fā)送方法包括:通過linux虛擬服務(wù)器技術(shù)對所述虛擬ip地址進(jìn)行預(yù)先設(shè)置。
在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令,包括:
周期性地從各存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊接收存儲節(jié)點(diǎn)的系統(tǒng)壓力信息;
接收到來自第三方平臺的獲取視頻數(shù)據(jù)的業(yè)務(wù)請求時(shí),根據(jù)各存儲節(jié)點(diǎn) 的系統(tǒng)壓力信息,選擇當(dāng)前系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從n個(gè)存儲節(jié)點(diǎn)中,選擇已分配業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn),通知該存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊向第三方平臺發(fā)送視頻數(shù)據(jù),其中n為正整數(shù),且小于視頻存儲系統(tǒng)中的存儲節(jié)點(diǎn)的總數(shù)。
這樣,由于業(yè)務(wù)分配單元先找到系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從中選擇已分配業(yè)務(wù)數(shù)量最小的存儲節(jié)點(diǎn)處理業(yè)務(wù),發(fā)送視頻數(shù)據(jù),可以防止業(yè)務(wù)被分配到非視頻業(yè)務(wù)占用過多資源(如cpu、內(nèi)存等資源)的存儲節(jié)點(diǎn),而使得視頻數(shù)據(jù)業(yè)務(wù)無法繼續(xù)或業(yè)務(wù)分配失敗。
在本發(fā)明的一個(gè)實(shí)施例中,所述預(yù)定的信令協(xié)議是gb/t28181協(xié)議。
附圖說明
圖1是本發(fā)明第一實(shí)施方式中一種視頻存儲系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明第二實(shí)施方式中一種基于視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法的流程示意圖;
圖3是本發(fā)明的另一較佳實(shí)施例的視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法的具體步驟示意圖;
圖4是本發(fā)明第二實(shí)施方式中一種視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法的流程示意圖;
圖5是本發(fā)明第三實(shí)施方式中一種視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法的流程示意圖;
圖6是本發(fā)明第三實(shí)施方式中一種視頻存儲系統(tǒng)的負(fù)載均衡原理示意圖;
圖7是本發(fā)明第三實(shí)施例的視頻數(shù)據(jù)發(fā)送方法所運(yùn)行的視頻存儲系統(tǒng)示意圖。
具體實(shí)施方式
在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。
本發(fā)明第一實(shí)施方式涉及一種視頻存儲系統(tǒng)。圖1是該視頻存儲系統(tǒng)100的結(jié)構(gòu)示意圖。本發(fā)明第一實(shí)施方式的視頻存儲系統(tǒng)100使用預(yù)定的信令協(xié)議與第三方平臺140交互??梢岳斫猓撘曨l存儲系統(tǒng)100將多個(gè)節(jié)點(diǎn)集中起來同時(shí)對外提供服務(wù)。
如圖1所示,該視頻存儲系統(tǒng)100包括:
第一控制節(jié)點(diǎn)101、第二控制節(jié)點(diǎn)102和至少兩個(gè)存儲節(jié)點(diǎn)121:其中,至少兩個(gè)存儲節(jié)點(diǎn)121,用于存儲視頻數(shù)據(jù);并且,每個(gè)控制節(jié)點(diǎn)包括信令代理模塊,每個(gè)存儲節(jié)點(diǎn)包括數(shù)據(jù)代理模塊131;第一控制節(jié)點(diǎn)101的信令代理模塊111,用于使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議與第三方平臺140交互;第一控制節(jié)點(diǎn)101的信令代理模塊111在正常工作時(shí)基于所述預(yù)定的信令協(xié)議接收來自第三方平臺140的業(yè)務(wù)請求,并根據(jù)該業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令;第二控制節(jié)點(diǎn)102用于在確定第一控制節(jié)點(diǎn)101不可用后,啟動(dòng)第二控制節(jié)點(diǎn)102的信令代理模塊112;第二控制節(jié)點(diǎn)102的信令代理模塊112,用于使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議接收來自第三方平臺140的業(yè)務(wù)請求,并根據(jù)業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令;指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊,用于根據(jù)接收到的指令,基于預(yù)定的信令協(xié)議將視頻數(shù)據(jù)發(fā)送給 第三方平臺140。
本發(fā)明實(shí)施例中,視頻存儲節(jié)點(diǎn)中控制節(jié)點(diǎn)的個(gè)數(shù)可以是兩個(gè)或更多,在此不做限定。指定的存儲節(jié)點(diǎn)可以為一個(gè)或多個(gè)存儲節(jié)點(diǎn)。
在本發(fā)明實(shí)施例中,存儲節(jié)點(diǎn)存儲的視頻數(shù)據(jù)可以來自監(jiān)控?cái)z像機(jī),存儲節(jié)點(diǎn)以分段方式存儲視頻數(shù)據(jù),每一段是一個(gè)監(jiān)控?cái)z像機(jī)在一個(gè)時(shí)間段(如10分鐘、或半小時(shí))中的記錄結(jié)果。存儲節(jié)點(diǎn)存儲的視頻數(shù)據(jù)可以是原始視頻,也可以是在視頻的基礎(chǔ)上增一些分析信息后的數(shù)據(jù),例如增加了車牌信息(通過圖像識別得到)后的視頻數(shù)據(jù)等等。
上述的至少兩個(gè)控制節(jié)點(diǎn),用于對各存儲節(jié)點(diǎn)進(jìn)行管理。例如,指示一個(gè)存儲節(jié)點(diǎn)向第三方平臺發(fā)送視頻數(shù)據(jù)。又例如,指示一個(gè)存儲節(jié)點(diǎn)停止存儲視頻數(shù)據(jù)。
如上所述,每個(gè)控制節(jié)點(diǎn)包括信令代理模塊(signalagent,簡稱“sa”),用于基于信令協(xié)議與第三方平臺進(jìn)行信令交互。具體地說,可選地,預(yù)定的信令協(xié)議是gb/t28181協(xié)議。此外,可以理解,在本申請的其它實(shí)施方式也可應(yīng)用其它的信令協(xié)議,只要可以實(shí)現(xiàn)第三方平臺與視頻存儲系統(tǒng)的通信即可,例如sip協(xié)議等。
上述每個(gè)存儲節(jié)點(diǎn)包括數(shù)據(jù)代理模塊(dataagent,簡稱“da”),用于基于信令協(xié)議將視頻數(shù)據(jù)發(fā)送給第三方平臺。此外,可以理解,在一個(gè)實(shí)施例中,信令代理模塊和數(shù)據(jù)代理模塊可以是服務(wù)進(jìn)程。在其它例子中,也可以是線程、或硬件模塊等形式,只要實(shí)現(xiàn)的功能與本申請中所描述的功能一致即可。
可選地,上述的至少兩個(gè)控制節(jié)點(diǎn)中,在任一時(shí)刻只有一個(gè)控制節(jié)點(diǎn)的信令代理模塊注冊在同一個(gè)第三方平臺。注冊到第三方平臺的控制節(jié)點(diǎn)對各存儲節(jié)點(diǎn)進(jìn)行控制。
此外,可以理解,一個(gè)視頻存儲系統(tǒng)可以同時(shí)與一個(gè)或多個(gè)第三方平臺 交互,但在任一時(shí)刻,該視頻存儲系統(tǒng)中只有一個(gè)控制節(jié)點(diǎn)的信令代理模塊注冊到同一個(gè)第三方平臺。如果原先注冊到某個(gè)第三方平臺的控制節(jié)點(diǎn)的信令代理模塊無法正常工作了,該視頻存儲系統(tǒng)中的另一個(gè)控制節(jié)點(diǎn)的信令代理模塊會重新注冊到這個(gè)第三方平臺。
因?yàn)樵诙鄠€(gè)控制節(jié)點(diǎn)中實(shí)現(xiàn)了信令代理模塊,在多個(gè)存儲節(jié)點(diǎn)中實(shí)現(xiàn)了數(shù)據(jù)代理模塊,所以有效避免了單點(diǎn)故障,保證了系統(tǒng)的穩(wěn)定性。
在一個(gè)實(shí)施例中,由于同一個(gè)系統(tǒng)中的控制節(jié)點(diǎn)使用統(tǒng)一虛擬ip地址應(yīng)對各數(shù)據(jù)代理模塊的注冊,因此,在第一控制節(jié)點(diǎn)無法正常工作,切換到其它控制節(jié)點(diǎn)時(shí),不需要各數(shù)據(jù)代理模塊再進(jìn)行重新注冊。
上述控制節(jié)點(diǎn)還可以包括下述單元,以控制信令代理模塊的啟動(dòng)和停止:
ip獲取單元,用于周期性地獲取本控制節(jié)點(diǎn)的ip地址;以及
信令代理控制單元,用于根據(jù)ip獲取單元所獲取的ip地址和本控制節(jié)點(diǎn)的信令代理模塊的當(dāng)前狀態(tài)對本控制節(jié)點(diǎn)的信令代理模塊進(jìn)行控制,其中,如果本控制節(jié)點(diǎn)的ip地址與預(yù)先設(shè)置的虛擬ip地址相同,且本控制節(jié)點(diǎn)的信令代理模塊當(dāng)前未啟動(dòng),則啟動(dòng)本控制節(jié)點(diǎn)的信令代理模塊,如果本控制節(jié)點(diǎn)的ip地址與預(yù)先設(shè)置的虛擬ip地址不同,且本控制節(jié)點(diǎn)的信令代理模塊已被啟動(dòng),則停止本控制節(jié)點(diǎn)的信令代理模塊。
在另一個(gè)實(shí)施例中,可以先找到系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從中選擇已分配業(yè)務(wù)數(shù)量最小的存儲節(jié)點(diǎn),系統(tǒng)將視頻相關(guān)業(yè)務(wù)分配到被非視頻業(yè)務(wù)占用過多資源的存儲節(jié)點(diǎn),而使得視頻數(shù)據(jù)業(yè)務(wù)無法繼續(xù)或業(yè)務(wù)分配失敗。具體地說:
上述信令代理模塊可以包括:
系統(tǒng)壓力信息采集單元,用于周期性地從各存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊接 收存儲節(jié)點(diǎn)的系統(tǒng)壓力信息;以及
業(yè)務(wù)分配單元,用于在接收到來自所述第三方平臺的獲取視頻數(shù)據(jù)的業(yè)務(wù)請求時(shí),根據(jù)所述系統(tǒng)壓力信息采集單元所接收的各存儲節(jié)點(diǎn)的系統(tǒng)壓力信息,選擇當(dāng)前系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從所述n個(gè)存儲節(jié)點(diǎn)中,選擇已分配業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn),通知該存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊向所述第三方平臺發(fā)送視頻數(shù)據(jù),其中n為正整數(shù),且小于所述視頻存儲系統(tǒng)中的存儲節(jié)點(diǎn)的總數(shù)。
具體地說,上文中“先擇當(dāng)前系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn)”是指將所有的存儲節(jié)點(diǎn)(假定共有x個(gè)節(jié)點(diǎn))按當(dāng)前系統(tǒng)壓力的值進(jìn)行排序,根據(jù)當(dāng)前系統(tǒng)壓力值從小到的順序從x個(gè)存儲節(jié)點(diǎn)中選出n個(gè)存儲節(jié)點(diǎn)。例如,n為3,有5節(jié)存儲節(jié)點(diǎn),當(dāng)前系統(tǒng)壓力的值分別為9、8、7、6、6,則選出的n個(gè)存儲節(jié)點(diǎn)的當(dāng)前系統(tǒng)壓力為7、6、6。又如,n為4,有7個(gè)存儲節(jié)點(diǎn),當(dāng)前系統(tǒng)壓力的值分別為9、8、6、6、6、4、3,則選出的n個(gè)存儲節(jié)點(diǎn)的當(dāng)前系統(tǒng)壓力為6、6、4、3,此例中因?yàn)橛?個(gè)存儲節(jié)點(diǎn)的當(dāng)前系統(tǒng)壓力都為6,可以從中任意選出2個(gè)存儲節(jié)點(diǎn),加上當(dāng)前系統(tǒng)壓力值為4、3的兩個(gè)存儲節(jié)點(diǎn),以構(gòu)成當(dāng)前系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn)??蛇x地,n為視頻存儲系統(tǒng)中存儲節(jié)點(diǎn)總數(shù)的一半。此外,可以理解,在本發(fā)明的其它某些實(shí)例中,n也可以是其它的數(shù)量,如存儲節(jié)點(diǎn)總數(shù)的30%、60%等,n也可以是一個(gè)預(yù)先設(shè)定的固定數(shù)目。而上文中“選擇已分配業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn)”是根據(jù)每個(gè)存儲節(jié)點(diǎn)的已分配業(yè)務(wù)數(shù)量進(jìn)行統(tǒng)計(jì),從中選出已分配業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn)。在一個(gè)例子中,已分配業(yè)務(wù)是以視頻碼流的數(shù)量為單位的,已分配業(yè)務(wù)數(shù)量就是一個(gè)存儲節(jié)點(diǎn)上當(dāng)前視頻碼流的連接數(shù)。在另一個(gè)例子中,當(dāng)控制節(jié)點(diǎn)將一個(gè)業(yè)務(wù)分配給一個(gè)存儲節(jié)點(diǎn),則該存儲節(jié)點(diǎn)的業(yè)務(wù)數(shù)量就加1,當(dāng)業(yè)務(wù)處理完必,則該存儲節(jié)點(diǎn)的業(yè)務(wù)數(shù)量就減1,已分配業(yè)務(wù)數(shù)量就是每個(gè)存儲節(jié)點(diǎn)上已被分配但還未處理完必的業(yè)務(wù)數(shù)量。
可以理解,本發(fā)明實(shí)施例中的業(yè)務(wù)是指視頻相關(guān)業(yè)務(wù),例如取流任務(wù)等。
可選地,上述數(shù)據(jù)代理模塊包括:壓力信息上報(bào)單元,用于向信令代理模塊發(fā)送數(shù)據(jù)代理模塊所在存儲節(jié)點(diǎn)的系統(tǒng)壓力信息??梢岳斫?,各數(shù)據(jù)代理模塊的壓力信息上報(bào)單元可以直接向各控制節(jié)點(diǎn)的信令借理模塊發(fā)送各自的系統(tǒng)壓力信息,也可以先向各控制節(jié)點(diǎn)中的一個(gè)控制節(jié)點(diǎn)(例如注冊到第三方平臺的一個(gè)控制節(jié)點(diǎn),或者,向各控制節(jié)點(diǎn)發(fā)送指令的一個(gè)控制節(jié)點(diǎn))發(fā)送各自的系統(tǒng)壓力信息,再由該控制節(jié)點(diǎn)向其他控制節(jié)點(diǎn)發(fā)送各數(shù)據(jù)代理模塊的系統(tǒng)壓力信息。
需要說明的是,本發(fā)明各設(shè)備實(shí)施方式中提到的各單元和/或模塊都是邏輯單元和/或模塊,在物理上,一個(gè)邏輯單元和/或模塊可以是一個(gè)物理單元和/或模塊,也可以是一個(gè)物理單元和/或模塊的一部分,還可以以多個(gè)物理單元和/或模塊的組合實(shí)現(xiàn),這些邏輯單元和/或模塊本身的物理實(shí)現(xiàn)方式并不是最重要的,這些邏輯單元和/或模塊所實(shí)現(xiàn)的功能的組合才是解決本發(fā)明所提出的技術(shù)問題的關(guān)鍵。此外,為了突出本發(fā)明的創(chuàng)新部分,本發(fā)明上述各設(shè)備實(shí)施方式并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元和/或模塊引入,這并不表明上述設(shè)備實(shí)施方式并不存在其它的單元和/或模塊。
本發(fā)明的第二實(shí)施例涉及一種基于視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法,該視頻存儲系統(tǒng)包括:第一控制節(jié)點(diǎn)、第二控制節(jié)點(diǎn)和用于存儲視頻數(shù)據(jù)的至少兩個(gè)存儲節(jié)點(diǎn);每個(gè)控制節(jié)點(diǎn)包括信令代理模塊;每個(gè)存儲節(jié)點(diǎn)包括數(shù)據(jù)代理模塊;第一控制節(jié)點(diǎn)的信令代理模塊使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議與第三方平臺交互,如圖2所述,上述方法的步驟如下:
首先,在步驟710,在確定第一控制節(jié)點(diǎn)不可用后,第二控制節(jié)點(diǎn)啟動(dòng)第二控制節(jié)點(diǎn)的信令代理模塊;
此后,進(jìn)入步驟720,第二控制節(jié)點(diǎn)的信令代理模塊,使用預(yù)先設(shè)置的 虛擬ip地址,基于預(yù)定的信令協(xié)議,接收來自第三方平臺的業(yè)務(wù)請求,并根據(jù)業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令;
接著,進(jìn)入步驟730,指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊根據(jù)接收到的指令,基于預(yù)定的信令協(xié)議將視頻數(shù)據(jù)發(fā)送給第三方平臺。
在本發(fā)明實(shí)施例中,第一控制節(jié)點(diǎn)在正常工作時(shí)(例如,宕機(jī)之前),第一控制節(jié)點(diǎn)的信令代理模塊使用預(yù)先設(shè)置的虛擬ip地址注冊到第三方平臺,基于預(yù)定的信令協(xié)議接收來自第三方平臺的業(yè)務(wù)請求,并根據(jù)該業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊發(fā)送指令,在確定第一控制節(jié)點(diǎn)不可用之后,第一控制節(jié)點(diǎn)的信令代理模塊停止運(yùn)行。
在本發(fā)明的另一較佳實(shí)施例中,如圖3所示,上述方法還進(jìn)一步包含以下步驟:
步驟201,每一個(gè)控制節(jié)點(diǎn)周期性地獲取本控制節(jié)點(diǎn)的ip地址,如果本控制節(jié)點(diǎn)的ip地址與預(yù)先設(shè)置的虛擬ip地址相同且本控制節(jié)點(diǎn)的信令代理模塊當(dāng)前未啟動(dòng),則執(zhí)行步驟202,啟動(dòng)本控制節(jié)點(diǎn)的信令代理模塊;如果本控制節(jié)點(diǎn)的ip地址與預(yù)先設(shè)置的虛擬ip地址不同且本控制節(jié)點(diǎn)的信令代理模塊已被啟動(dòng),則啟動(dòng)步驟203,停止本控制節(jié)點(diǎn)的信令代理模塊。
在本實(shí)施例中,各控制節(jié)點(diǎn)中的一個(gè)控制節(jié)點(diǎn)為主用的控制節(jié)點(diǎn),其它控制節(jié)點(diǎn)為備用的控制節(jié)點(diǎn),備用的控制節(jié)點(diǎn)用于在主用的控制節(jié)點(diǎn)不可用時(shí)切換為主用的控制節(jié)點(diǎn);主用的控制節(jié)點(diǎn)使用預(yù)先設(shè)定的虛擬ip地址與第三方平臺和存儲節(jié)點(diǎn)通信。
此外,可以理解,在一個(gè)實(shí)施例中,信令代理模塊和數(shù)據(jù)代理模塊可以是服務(wù)進(jìn)程。在其它例子中,也可以是線程、或硬件模塊等形式,只要實(shí)現(xiàn)的功能與本申請中所描述的功能一致即可。
在本申請的各實(shí)施方式中,啟動(dòng)信令代理模塊可以指啟動(dòng)信令代理模塊的功能,例如啟動(dòng)信令代理服務(wù)進(jìn)程。停止信令代理模塊可以指停止運(yùn)行信 令代理模塊的功能,例如停止信令代理服務(wù)進(jìn)程。對于數(shù)據(jù)代理模塊的啟動(dòng)和停止也是類似含義。
以預(yù)定的信令協(xié)議為gb/t28181協(xié)議為例,如圖7所示,視頻存儲系統(tǒng)中的控制節(jié)點(diǎn)可以包括兩臺主備調(diào)度控制節(jié)點(diǎn),即圖7中的第一控制節(jié)點(diǎn)和第二控制節(jié)點(diǎn),每臺控制節(jié)點(diǎn)上部署一個(gè)gsa(gb/t28181signalagent,gb/t28181信令代理)。第一控制節(jié)點(diǎn)作為主調(diào)度控制節(jié)點(diǎn),運(yùn)行g(shù)sa代理服務(wù),而第二控制節(jié)點(diǎn)作為備調(diào)度控制節(jié)點(diǎn),可以通過監(jiān)控腳本周期性地檢測是否將gsa服務(wù)切換到本控制節(jié)點(diǎn)上。當(dāng)主調(diào)度控制節(jié)點(diǎn)宕機(jī)后,通過控制節(jié)點(diǎn)內(nèi)部存儲的調(diào)度機(jī)制,gsa服務(wù)又會切換到備調(diào)度控制節(jié)點(diǎn),此時(shí)備調(diào)度控制節(jié)點(diǎn)基于周期性運(yùn)行的監(jiān)控腳本的監(jiān)控結(jié)果,接管了調(diào)度服務(wù),從而啟動(dòng)gsa代理服務(wù),而原來的主調(diào)度控制節(jié)點(diǎn)因?yàn)間sa服務(wù)被其他機(jī)器接管,其監(jiān)控腳本會根據(jù)監(jiān)控結(jié)果主動(dòng)停止gsa代理服務(wù),或者因?yàn)殄礄C(jī)自動(dòng)不能提供服務(wù)。
具體過程參見圖4。在步驟301,每臺控制節(jié)點(diǎn)會啟動(dòng)一個(gè)監(jiān)控腳本,該監(jiān)控腳本定期檢測獲取本機(jī)ip地址。然后,進(jìn)入步驟302,判斷當(dāng)前控制節(jié)點(diǎn)的ip地址是否與配置文件配置的虛擬ip地址一樣。如果獲取到的ip地址和配置文件配置的虛擬ip地址一樣,則說明是本控制節(jié)點(diǎn)是主調(diào)度控制節(jié)點(diǎn),因此進(jìn)入步驟303,查看本控制節(jié)點(diǎn)當(dāng)前是否已啟動(dòng)gsa服務(wù):如果本控制節(jié)點(diǎn)當(dāng)前未啟動(dòng)gsa服務(wù),則進(jìn)入步驟304,啟動(dòng)gsa服務(wù),然后返回步驟301,等待下一個(gè)檢測周期;如果本控制節(jié)點(diǎn)當(dāng)前已啟動(dòng)gsa服務(wù),則維持本控制節(jié)點(diǎn)的當(dāng)前狀態(tài)不變,返回步驟301,等待下一個(gè)檢測周期。如果在步驟302判定獲取到的ip地址和配置文件配置的虛擬ip地址不一樣,則說明本控制節(jié)點(diǎn)不是主調(diào)度控制節(jié)點(diǎn),則進(jìn)入步驟305,查看本控制節(jié)點(diǎn)當(dāng)前是否已啟動(dòng)gsa服務(wù)。如果本控制節(jié)點(diǎn)當(dāng)前未啟動(dòng)gsa服務(wù),則維持本控制節(jié)點(diǎn)的當(dāng)前狀態(tài)不變,返回步驟301,等待下一次檢測周期;如果本控制節(jié)點(diǎn)當(dāng)前已啟動(dòng)gsa服務(wù),則進(jìn)入步驟306,終止本控制節(jié)點(diǎn)的gsa 服務(wù),然后返回步驟301,等待下一個(gè)檢測周期。
由于存儲節(jié)點(diǎn)可能存在很多臺,存儲節(jié)點(diǎn)上的gda(gb/t28181dataagent,gb/t28181數(shù)據(jù)代理)同樣需要注冊到gsa上進(jìn)行統(tǒng)一管理,比如每個(gè)存儲節(jié)點(diǎn)的gda都注冊到主調(diào)度控制節(jié)點(diǎn)上,若主調(diào)度控制節(jié)點(diǎn)宕機(jī),此時(shí)這些gda會出現(xiàn)短暫的訪問失敗(具體時(shí)間和檢測周期有關(guān)),待服務(wù)由備調(diào)度控制節(jié)點(diǎn)接管(例如,在新的檢測周期開始后,備調(diào)度控制節(jié)點(diǎn)啟動(dòng)gsa服務(wù))后,這些gda就可以重新正常訪問第三方平臺。在本實(shí)施方式中,可選地,gda通過視頻存儲系統(tǒng)的虛擬ip技術(shù)進(jìn)行注冊,這樣,不管gsa服務(wù)在主調(diào)度控制節(jié)點(diǎn)還是在備調(diào)度控制節(jié)點(diǎn)上啟動(dòng),對于各gda來說,都是注冊到同一個(gè)ip地址,因此,無需gda切換注冊。
上述虛擬ip地址的分配可以通過linux虛擬服務(wù)器(linuxvirtualserver,簡稱“l(fā)vs”)技術(shù)實(shí)現(xiàn)。
使用lvs架設(shè)的視頻存儲系統(tǒng)有三個(gè)部分組成:最前端的負(fù)載均衡層(loaderbalancer),中間的服務(wù)器群組層,用serverarray表示,最底層的數(shù)據(jù)共享存儲層,用sharedstorage表示。在用戶看來,用戶只是在使用一個(gè)虛擬服務(wù)器提供的高性能服務(wù)。
在本申請的其它實(shí)施方式中,還可以使用其它的方式實(shí)現(xiàn)虛擬ip,例如,主控制節(jié)點(diǎn)(虛擬ip實(shí)際對應(yīng)的物理控制節(jié)點(diǎn))通過向各存儲節(jié)點(diǎn)發(fā)送第一地址解析協(xié)議(addressresolutionprotocol,簡稱“arp”)數(shù)據(jù)包,其中包含將第一ip與主控制節(jié)點(diǎn)的mac地址綁定的信息,各存儲節(jié)點(diǎn)根據(jù)該第一arp數(shù)據(jù)包更新與第一ip相關(guān)的arp表。當(dāng)主控制節(jié)點(diǎn)不可用時(shí),備控制節(jié)點(diǎn)(備用的控制節(jié)點(diǎn))向各存儲節(jié)點(diǎn)發(fā)送第二arp數(shù)據(jù)包,其中包含將第一ip與備控制節(jié)點(diǎn)的mac地址綁定的信息,各存儲節(jié)點(diǎn)更新與第一ip相關(guān)的arp表。
由于本發(fā)明實(shí)施例的一個(gè)系統(tǒng)中,各個(gè)控制節(jié)點(diǎn)使用統(tǒng)一虛擬ip地址應(yīng) 對各數(shù)據(jù)代理模塊的注冊,因此,在主控制節(jié)點(diǎn)無法正常工作時(shí),各數(shù)據(jù)代理模塊不需要再進(jìn)行重新注冊。
本實(shí)施方式是各控制節(jié)點(diǎn)(包括其中的信令代理模塊)之間實(shí)現(xiàn)主備切換的一種方法,本領(lǐng)域的技術(shù)人員可以知道,也可以采其它方式實(shí)現(xiàn)多個(gè)控制節(jié)點(diǎn)之間的主備切換。例如,從控制節(jié)點(diǎn)可以周期性地對主控制節(jié)點(diǎn)進(jìn)行心跳檢測,如果從控制節(jié)點(diǎn)根據(jù)該檢測發(fā)現(xiàn)主控制節(jié)點(diǎn)不可用,則各從控制節(jié)點(diǎn)可以以預(yù)定的方式推舉出一個(gè)控制節(jié)點(diǎn)作為新的主控制節(jié)點(diǎn),該新的主控制節(jié)點(diǎn)設(shè)置有與原主控制節(jié)點(diǎn)一樣的ip地址。推舉的方式也有多種,例如,可以根據(jù)各控制節(jié)點(diǎn)的優(yōu)先級值(預(yù)先設(shè)在控制節(jié)點(diǎn)中)選出優(yōu)先級最高的控制節(jié)點(diǎn),又如可以根據(jù)各控制節(jié)點(diǎn)的處理能力選出處理能力最強(qiáng)的控制節(jié)點(diǎn),等等。
本實(shí)施方式是與第一實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。
本發(fā)明第三實(shí)施例涉及一種基于視頻存儲系統(tǒng)的視頻數(shù)據(jù)發(fā)送方法,該視頻存儲系統(tǒng)與第二實(shí)施例相同,包括:第一控制節(jié)點(diǎn)、第二控制節(jié)點(diǎn)和用于存儲視頻數(shù)據(jù)的至少兩個(gè)存儲節(jié)點(diǎn);每個(gè)控制節(jié)點(diǎn)包括信令代理模塊;每個(gè)存儲節(jié)點(diǎn)包括數(shù)據(jù)代理模塊;第一控制節(jié)點(diǎn)的信令代理模塊使用預(yù)先設(shè)置的虛擬ip地址,基于預(yù)定的信令協(xié)議與第三方平臺交互。換句話說,各控制節(jié)點(diǎn)中的一個(gè)控制節(jié)點(diǎn)為主用的控制節(jié)點(diǎn),其它控制節(jié)點(diǎn)為備用的控制節(jié)點(diǎn),備用的控制節(jié)點(diǎn)用于在主用的控制節(jié)點(diǎn)不可用時(shí)切換為主用的控制節(jié)點(diǎn);主用的控制節(jié)點(diǎn)使用預(yù)先設(shè)定的虛擬ip地址與第三方平臺和存儲節(jié)點(diǎn)通信。
該實(shí)施例基于上述第二實(shí)施例,提供了一種具體的負(fù)載均衡方法。具體地說,在圖2中的步驟720中的根據(jù)業(yè)務(wù)請求向指定的存儲節(jié)點(diǎn)的數(shù)據(jù)代理 模塊發(fā)送指令的步驟中,如圖5所述,進(jìn)一步包含以下子步驟:
步驟401,周期性地從各存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊接收存儲節(jié)點(diǎn)的系統(tǒng)壓力信息。在一個(gè)實(shí)施例中,系統(tǒng)壓力信息包括中央處理器(centralprocessingunit,簡稱“cpu”)占用比例、內(nèi)存占用比例、網(wǎng)絡(luò)帶寬占用比例等因素,將這些因素進(jìn)行加權(quán)平均以得到一個(gè)代表存儲節(jié)點(diǎn)的系統(tǒng)壓力的數(shù)值。
步驟402,接收到來自第三方平臺的獲取視頻數(shù)據(jù)的業(yè)務(wù)請求時(shí),根據(jù)各存儲節(jié)點(diǎn)的系統(tǒng)壓力信息,選擇當(dāng)前系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從n個(gè)存儲節(jié)點(diǎn)中,選擇已分配業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn),通知該存儲節(jié)點(diǎn)的數(shù)據(jù)代理模塊向第三方平臺發(fā)送視頻數(shù)據(jù),其中n為正整數(shù),且小于視頻存儲系統(tǒng)中的存儲節(jié)點(diǎn)的總數(shù)。具體地說,本實(shí)施例中的視頻存儲系統(tǒng)使用預(yù)定的信令協(xié)議與第三方平臺交互??蛇x地,n為視頻存儲系統(tǒng)中存儲節(jié)點(diǎn)總數(shù)的一半。此外,可以理解,在本發(fā)明的其它某些實(shí)例中,n也可以是其它的數(shù)量,如存儲節(jié)點(diǎn)總數(shù)的30%、60%等,n也可以是一個(gè)預(yù)先設(shè)定的固定數(shù)目。
以預(yù)定的信令協(xié)議是gb/t28181協(xié)議為例,單個(gè)gsa管理多個(gè)gda,每次該gsa處理第三方平臺下發(fā)的會話請求的時(shí)候,gsa會智能選擇某一個(gè)gda去處理第三方平臺請求的業(yè)務(wù),而gda也會定期地上報(bào)gda所在的存儲節(jié)點(diǎn)的系統(tǒng)壓力。實(shí)際應(yīng)用中,gsa選擇gda的方式可以采用如下過程:
1.首先檢測各個(gè)gda所在存儲節(jié)點(diǎn)的系統(tǒng)壓力,從所有存儲節(jié)點(diǎn)中挑選出系統(tǒng)壓力最小的幾個(gè)存儲節(jié)點(diǎn)(挑選數(shù)量=gda數(shù)量*50%);
2.再從選取的存儲節(jié)點(diǎn)的gda中選擇一個(gè)已分配業(yè)務(wù)數(shù)量最少的gda;
3.將當(dāng)前業(yè)務(wù)(例如,取流任務(wù))交由被選擇的gda完成。
gsa選擇gda的具體方式與前述實(shí)施例類似,在此不做贅述。
在進(jìn)行存儲節(jié)點(diǎn)的負(fù)載均衡時(shí),先找到系統(tǒng)壓力最小的n個(gè)存儲節(jié)點(diǎn),再從中選擇已分配業(yè)務(wù)數(shù)量最小的存儲節(jié)點(diǎn),可以防止系統(tǒng)將視頻相關(guān)業(yè)務(wù)分配到被非視頻業(yè)務(wù)占用過多資源的存儲節(jié)點(diǎn),而使得視頻數(shù)據(jù)業(yè)務(wù)無法繼續(xù)或業(yè)務(wù)分配失敗。
此外,可以理解,在本申請的其它實(shí)施方式中,也可以使用其它的負(fù)載均衡方式,例如,將業(yè)務(wù)請求分配給當(dāng)前業(yè)務(wù)數(shù)量最少的存儲節(jié)點(diǎn),或?qū)I(yè)務(wù)請求分配給當(dāng)前剩余帶寬最大的存儲節(jié)點(diǎn),或在各存儲節(jié)點(diǎn)之間輪流分配等等。
在一個(gè)實(shí)施例中,負(fù)載均衡的過程如圖6所示,首先在步驟501,判斷是否開啟接收gda上報(bào)負(fù)載信息線程,如果是,則接收上報(bào)的負(fù)載信息,更新緩存,并執(zhí)行步驟502,接收第三方平臺的業(yè)務(wù)請求。然后,執(zhí)行步驟503,根據(jù)負(fù)載均衡策略挑選gda。然后,執(zhí)行步驟504,轉(zhuǎn)發(fā)業(yè)務(wù)請求給該gda。可選地,gda上報(bào)的負(fù)載信息包括該gda正在處理的業(yè)務(wù)數(shù)量。
本實(shí)施方式是與第一實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。
本發(fā)明的各方法實(shí)施方式均可以以軟件、硬件、固件等方式實(shí)現(xiàn)。不管本發(fā)明是以軟件、硬件、還是固件方式實(shí)現(xiàn),指令代碼都可以存儲在任何類型的計(jì)算機(jī)可訪問的存儲器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的或者可更換的介質(zhì)等等)。同樣,存儲器可以例如是可編程陣列邏輯(programmablearraylogic,簡稱“pal”)、隨機(jī)存取存儲器(randomaccessmemory,簡稱“ram”)、可編程只讀存儲器(programmablereadonlymemory,簡稱“prom”)、 只讀存儲器(read-onlymemory,簡稱“rom”)、電可擦除可編程只讀存儲器(electricallyerasableprogrammablerom,簡稱“eeprom”)、磁盤、光盤、數(shù)字通用光盤(digitalversatiledisc,簡稱“dvd”)等等。
需要說明的是,在本專利的權(quán)利要求和說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
雖然通過參照本發(fā)明的某些可選實(shí)施方式,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。