基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng),該方法包括:注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;在確定出所述注冊節(jié)點(diǎn)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除所有轉(zhuǎn)碼任務(wù)獲取請求;在確定出所述注冊節(jié)點(diǎn)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖;將被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。本發(fā)明解決了不能對控制中心的轉(zhuǎn)碼隊列生成分布式鎖的問題。
【專利說明】基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本申請涉及分布式控制領(lǐng)域,更具體地,涉及一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,視頻網(wǎng)站中的視頻文件由于受到網(wǎng)絡(luò)傳輸協(xié)議、網(wǎng)絡(luò)數(shù)據(jù)傳輸特性等條件的限制,并不是所有的視頻格式都適合于網(wǎng)絡(luò)傳輸播放,進(jìn)行播放的視頻都需要經(jīng)過轉(zhuǎn)碼處理,轉(zhuǎn)換成適合于網(wǎng)絡(luò)播放的格式(如flv”格式適合于電視終端傳輸及播放,
mp4”格式適合于計算機(jī)及移動終端網(wǎng)絡(luò)傳輸及播放)。為了保證用戶的觀看體驗,視頻網(wǎng)站通常都會提供大量的視頻共用戶自由選擇播放。也就是說,視頻網(wǎng)站需要建立大量的轉(zhuǎn)碼任務(wù),并通過其內(nèi)部的轉(zhuǎn)碼系統(tǒng)(由轉(zhuǎn)碼服務(wù)器構(gòu)成)來執(zhí)行視頻的轉(zhuǎn)碼處理。
[0003]對于轉(zhuǎn)碼系統(tǒng)而言,其中包括控制中心和注冊到控制中心的多個轉(zhuǎn)碼服務(wù)器??刂浦行母鶕?jù)相應(yīng)的視頻數(shù)據(jù)庫中存儲的視頻資源生成對應(yīng)的轉(zhuǎn)碼任務(wù),以轉(zhuǎn)碼隊列的方式將所有的轉(zhuǎn)碼任務(wù)進(jìn)行共享,所有的轉(zhuǎn)碼服務(wù)器(或轉(zhuǎn)碼服務(wù)器中的轉(zhuǎn)碼進(jìn)程)都可以通過向控制中心發(fā)送轉(zhuǎn)碼任務(wù)獲取請求的方式獲取到控制中心的轉(zhuǎn)碼隊列,并針對轉(zhuǎn)碼隊列中的轉(zhuǎn)碼任務(wù)進(jìn)行轉(zhuǎn)碼處理。
[0004]由于轉(zhuǎn)碼系統(tǒng)中不同的轉(zhuǎn)碼服務(wù)器(或是其中的轉(zhuǎn)碼進(jìn)程)都可以獲取控制中心的轉(zhuǎn)碼隊列進(jìn)行轉(zhuǎn)碼處理,所以可能出現(xiàn)處理任務(wù)重復(fù)的情況,如:多臺轉(zhuǎn)碼服務(wù)器都針對所獲取的轉(zhuǎn)碼隊列中的“轉(zhuǎn)碼任務(wù)X”進(jìn)行處理,從而造成了轉(zhuǎn)碼資源的嚴(yán)重浪費(fèi)。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本申請所要解決的技術(shù)問題是提供了一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng),以解決不能對控制中心的轉(zhuǎn)碼隊列生成分布式鎖的問題。
[0006]為了解決上述技術(shù)問題,本申請公開了一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,包括:
[0007]注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;
[0008]在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求;其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的;
[0009]在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖;
[0010]將被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
[0011]優(yōu)選地,當(dāng)所述轉(zhuǎn)碼系統(tǒng)中包含至少兩個注冊節(jié)點(diǎn)時,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述方法還包括:
[0012]所述注冊節(jié)點(diǎn)將所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的其他注冊節(jié)點(diǎn),并接收所述其他注冊節(jié)點(diǎn)發(fā)送的、由所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳;
[0013]所述注冊節(jié)點(diǎn)根據(jù)所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序;
[0014]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0015]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0016]優(yōu)選地,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述方法還包括:
[0017]所述注冊節(jié)點(diǎn)將所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的控制中心;
[0018]所述注冊節(jié)點(diǎn)接收所述控制中心發(fā)送的關(guān)于轉(zhuǎn)碼任務(wù)獲取請求優(yōu)先級的通知消息;其中,所述通知消息是所述控制中心根據(jù)所述轉(zhuǎn)碼系統(tǒng)中的各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后發(fā)送的;
[0019]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0020]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0021]優(yōu)選地,所述屬性信息包括下述信息的一種或多種:
[0022]額定負(fù)載信息;
[0023]CPU處理能力信息;
[0024]內(nèi)存大小的信息;[0025]與所述控制中心之間的數(shù)據(jù)傳輸鏈路的帶寬信息。
[0026]為了解決上述技術(shù)問題,本申請還公開了一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的系統(tǒng),與注冊節(jié)點(diǎn)、轉(zhuǎn)碼服務(wù)器以及控制中心相耦接,其特征在于,該系統(tǒng)包括:接收單元、識別處理單元以及獲取單元,其中,
[0027]所述接收單元,用于指示所述注冊節(jié)點(diǎn)接收所述轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;
[0028]所述識別處理單元,用于確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求;
[0029]確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖;
[0030]其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的;
[0031]所述獲取單元,用于將所述注冊節(jié)點(diǎn)中被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給所述控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
[0032]優(yōu)選地,當(dāng)所述轉(zhuǎn)碼系統(tǒng)中包含至少兩個注冊節(jié)點(diǎn)時,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述識別處理單元,還用于:
[0033]將一所述注冊節(jié)點(diǎn)中所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的其他注冊節(jié)點(diǎn),并指示該注冊節(jié)點(diǎn)接收所述其他注冊節(jié)點(diǎn)發(fā)送的、由所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳;
[0034]根據(jù)所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序;
[0035]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0036]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0037]優(yōu)選地,所述識別處理單元,還用于:
[0038]將所述注冊節(jié)中所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的控制中心;[0039]接收所述控制中心發(fā)送的關(guān)于轉(zhuǎn)碼任務(wù)獲取請求優(yōu)先級的通知消息;其中,所述通知消息是所述控制中心根據(jù)所述轉(zhuǎn)碼系統(tǒng)中的各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后發(fā)送的;
[0040]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0041]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0042]優(yōu)選地,所述屬性信息包括下述信息的一種或多種:
[0043]額定負(fù)載信息;
[0044]CPU處理能力信息;
[0045]內(nèi)存大小的信息;
[0046]與所述控制中心之間的數(shù)據(jù)傳輸鏈路的帶寬信息。
[0047]與現(xiàn)有技術(shù)相比,本申請所述的一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng),達(dá)到了如下效果:
[0048]I)本申請通過控制中心創(chuàng)建的多個注冊節(jié)點(diǎn),將分布式鎖設(shè)置于其中一個注冊節(jié)點(diǎn)中,多個轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼處理進(jìn)程訪問多個注冊節(jié)點(diǎn)時,只有一個轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼處理進(jìn)程訪問到帶有分布式鎖的節(jié)點(diǎn),有效解決了不能對控制中心的轉(zhuǎn)碼隊列生成分布式鎖的問題。
[0049]2)本申請還可以針對分布式的轉(zhuǎn)碼系統(tǒng)進(jìn)行轉(zhuǎn)碼服務(wù)器的統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項等統(tǒng)一的數(shù)據(jù)管理。
[0050]當(dāng)然,實(shí)施本申請的任一產(chǎn)品必不一定需要同時達(dá)到以上所述的所有技術(shù)效果?!緦@綀D】
【附圖說明】
[0051]此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
[0052]圖1是本申請實(shí)施例一所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法的流程圖。
[0053]圖2是本申請實(shí)施例二所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法的流程圖。
[0054]圖3和4是本申請實(shí)施例三所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法的在轉(zhuǎn)碼系統(tǒng)中的具體應(yīng)用示意圖。
[0055]圖5是本申請實(shí)施例四所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的系統(tǒng)的結(jié)構(gòu)框圖。【具體實(shí)施方式】
[0056]如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實(shí)施本申請的較佳實(shí)施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。
[0057]實(shí)施例一
[0058]如圖1所示,為本申請實(shí)施例一所述的一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,該方法包括:
[0059]步驟101,注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求。
[0060]對于步驟101,具體地,視頻網(wǎng)站的原始視頻資源(也可稱為片源)存儲于相應(yīng)的片源服務(wù)器中,片源都是未經(jīng)轉(zhuǎn)碼處理的視頻,當(dāng)視頻網(wǎng)站需要進(jìn)行視頻轉(zhuǎn)碼時,會指示服務(wù)端的轉(zhuǎn)碼系統(tǒng)(可以由轉(zhuǎn)碼服務(wù)器構(gòu)成)通過在所述服務(wù)端中的控制中心調(diào)取片源服務(wù)器中存儲的片源進(jìn)行轉(zhuǎn)碼處理,建立相應(yīng)的轉(zhuǎn)碼任務(wù),再由轉(zhuǎn)碼系統(tǒng)中不同的轉(zhuǎn)碼服務(wù)器或其中的轉(zhuǎn)碼進(jìn)程訪問控制中心獲取任務(wù)進(jìn)行轉(zhuǎn)碼處理。本實(shí)施例中,采用云構(gòu)架的轉(zhuǎn)碼系統(tǒng)進(jìn)行轉(zhuǎn)碼處理,即各地用戶均可以將視頻資源上傳到相應(yīng)的片源服務(wù)器,在生成相應(yīng)的轉(zhuǎn)碼任務(wù)發(fā)送到本實(shí)施例中的轉(zhuǎn)碼服務(wù)器中進(jìn)行轉(zhuǎn)碼處理,經(jīng)過轉(zhuǎn)碼處理后,其他各地區(qū)的用戶便可通過計算機(jī)終端、移動終端或電視終端訪問該視頻網(wǎng)站觀看或下載相應(yīng)的視頻資源。當(dāng)然,對于本實(shí)施例中的轉(zhuǎn)碼服務(wù)器還可以是其他構(gòu)架結(jié)構(gòu),并不構(gòu)成對本申請的限定。
[0061]其中,所述控制中心可以是具有統(tǒng)一數(shù)據(jù)管理能力的服務(wù)器或相應(yīng)裝置,該控制中心可以在其內(nèi)部創(chuàng)建多個注冊節(jié)點(diǎn),也可以在轉(zhuǎn)碼系統(tǒng)中通過代理服務(wù)器創(chuàng)建多個注冊節(jié)點(diǎn),當(dāng)然,所述控制中心也可以采用其他方式創(chuàng)建不同的注冊節(jié)點(diǎn),并不構(gòu)成對本申請的限定。其中,所述注冊節(jié)點(diǎn)的數(shù)量與該轉(zhuǎn)碼系統(tǒng)中的轉(zhuǎn)碼服務(wù)器或其轉(zhuǎn)碼進(jìn)程的數(shù)量相適應(yīng)。
[0062]步驟102,在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求;在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖。
[0063]其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的。
[0064]對于步驟102,由所述控制中心創(chuàng)建的多個所述注冊節(jié)點(diǎn)接收來自不同所述轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼線程發(fā)出的轉(zhuǎn)碼任務(wù)獲取請求,多個所述轉(zhuǎn)碼任務(wù)獲取請求隨機(jī)地發(fā)送到不同的所述注冊節(jié)點(diǎn)中,形成“搶節(jié)點(diǎn)”的過程。在多個所述轉(zhuǎn)碼任務(wù)獲取請求被所述注冊節(jié)點(diǎn)接收的過程中,各所述轉(zhuǎn)碼任務(wù)獲取請求被所述注冊節(jié)點(diǎn)接收的時間不相同,有先后之分,所以,在步驟102中,將在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求作為所述特定轉(zhuǎn)碼任務(wù)獲取請求;另外,各所述轉(zhuǎn)碼任務(wù)獲取請求中也含有不同的轉(zhuǎn)碼服務(wù)器的級別信息,所以,在步驟102中,也可以將所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求作為所述特定轉(zhuǎn)碼任務(wù)獲取請求。當(dāng)然,對于所述特定轉(zhuǎn)碼任務(wù)獲取請求的劃分,還可以是其他類型或方式,并不構(gòu)成對本申請的限定。
[0065]步驟103,將被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
[0066]在步驟103中,所述讀寫鎖具體為分布式鎖,其數(shù)量為一個,所述注冊節(jié)點(diǎn)只有在含有所述特定轉(zhuǎn)碼任務(wù)獲取請求時才被分配該分布式鎖(只有該節(jié)點(diǎn)獲得了該分布式鎖),在本實(shí)施例中,所述分布式鎖由所述控制中心分配。所述注冊節(jié)點(diǎn)獲得該分布式鎖后,即是將所述分布式鎖與發(fā)出請求的所述轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼進(jìn)程進(jìn)行綁定,同時刪除其他注冊節(jié)點(diǎn)或該節(jié)點(diǎn)收到的所有轉(zhuǎn)碼任務(wù)獲取請求。
[0067]需要說明的是,分布式鎖,是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式。在分布式系統(tǒng)中,尤其對于視頻網(wǎng)站服務(wù)端的分布式轉(zhuǎn)碼系統(tǒng),資源共享端需要協(xié)調(diào)不同的獲取端的同步訪問操作。如果不同的系統(tǒng)或是同一個系統(tǒng)的不同主機(jī)之間共享了一個或一組資源,那么對于訪問這些資源的獲取端來說,就需要分布式鎖的互斥特性來防止彼此干擾從而保證資源的一致性。
[0068]在本實(shí)施例中,所述控制中心,一般是將生成的轉(zhuǎn)碼隊列存儲于mongodb (分布式文檔存儲數(shù)據(jù)庫)中,由于該數(shù)據(jù)庫本身的特性限制,不能對存儲于該數(shù)據(jù)庫中的轉(zhuǎn)碼隊列生成分布式鎖,那么,對于數(shù)量巨大的轉(zhuǎn)碼任務(wù),多臺轉(zhuǎn)碼服務(wù)器極有可能進(jìn)行多次重復(fù)的轉(zhuǎn)碼操作,從而也會導(dǎo)致轉(zhuǎn)碼資源的嚴(yán)重浪費(fèi),延誤轉(zhuǎn)碼系統(tǒng)的轉(zhuǎn)碼處理進(jìn)度。所以,采用設(shè)置所述注冊節(jié)點(diǎn)以獲得分布式鎖的方式,對多個所述轉(zhuǎn)碼服務(wù)器進(jìn)行管理,克服了mongodb的特性限制。
[0069]實(shí)施例二
[0070]如圖2所示,為本申請實(shí)施例二所述的一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,該方法包括:
[0071]步驟201,由控制中心創(chuàng)建的注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求。
[0072]其中,所述轉(zhuǎn)碼任務(wù)獲取周期,具體為周期時長為至少I秒的獲取轉(zhuǎn)碼任務(wù)的周期,即該轉(zhuǎn)碼任務(wù)獲取周期就是各所述轉(zhuǎn)碼服務(wù)器發(fā)送所述轉(zhuǎn)碼任務(wù)獲取請求至所述注冊節(jié)點(diǎn),獲取所述分布式鎖的周期。
[0073]另外,對于步驟201,在有多個所述注冊節(jié)點(diǎn)的情況下,為了便于對不同的所述注冊節(jié)點(diǎn)的監(jiān)測管理,可以針對每一個所述注冊節(jié)點(diǎn)設(shè)置對應(yīng)的編號。當(dāng)然,在本實(shí)施例中,還可以采用其他方式對所述注冊節(jié)點(diǎn)進(jìn)行監(jiān)測管理,上述內(nèi)容并不構(gòu)成對本申請的限定。[0074]步驟202,在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求或所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求時,刪除在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求;
[0075]在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求或所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖。
[0076]其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的。
[0077]在本實(shí)施例中,當(dāng)所述轉(zhuǎn)碼系統(tǒng)中包含至少兩個注冊節(jié)點(diǎn)時,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,需要確定所有所述注冊節(jié)點(diǎn)接收的所述轉(zhuǎn)碼任務(wù)獲取請求的時間先后順序,即還包括:
[0078]所述注冊節(jié)點(diǎn)將所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的其他注冊節(jié)點(diǎn),并接收所述其他注冊節(jié)點(diǎn)發(fā)送的、由所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳;
[0079]所述注冊節(jié)點(diǎn)根據(jù)所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序;
[0080]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0081]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0082]步驟203,將被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
[0083]在本實(shí)施例中的另一種方式,還包括:
[0084]所述注冊節(jié)點(diǎn)將所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的控制中心;
[0085]所述注冊節(jié)點(diǎn)接收所述控制中心發(fā)送的關(guān)于轉(zhuǎn)碼任務(wù)獲取請求優(yōu)先級的通知消息;其中,所述通知消息是所述控制中心根據(jù)所述轉(zhuǎn)碼系統(tǒng)中的各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后發(fā)送的;
[0086]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0087]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0088]其中,所述屬性信息包括下述信息的一種或多種:額定負(fù)載信息;CPU處理能力信息;內(nèi)存大小的信息;與所述控制中心之間的數(shù)據(jù)傳輸鏈路的帶寬信息。
[0089]另外,在本實(shí)施例中,監(jiān)測到設(shè)置有分布式鎖的注冊節(jié)點(diǎn)所對應(yīng)的所述轉(zhuǎn)碼服務(wù)器將轉(zhuǎn)碼任務(wù)處理完成時,解除該注冊節(jié)點(diǎn)中的所述分布式鎖,該注冊節(jié)點(diǎn)可以繼續(xù)接收其他所述轉(zhuǎn)碼服務(wù)器發(fā)送的所述請求信息。
[0090]需要說明的是,在本實(shí)施例中,所述轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼線程在接收到所述控制中心預(yù)置的任務(wù)處理指令后,便可以進(jìn)行相應(yīng)的任務(wù)處理操作,任務(wù)處理的狀態(tài)實(shí)時反映到該注冊節(jié)點(diǎn)中,為了避免其他轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼進(jìn)程的等待狀態(tài)造成轉(zhuǎn)碼資源的浪費(fèi),所以,任務(wù)處理完成,無論處理成功還是失敗,都將所述分布式鎖解除,其中,所述轉(zhuǎn)碼任務(wù)處理成功,進(jìn)一步為所述轉(zhuǎn)碼任務(wù)處理完成后生成視頻成品;所述轉(zhuǎn)碼任務(wù)處理失敗,進(jìn)一步為所述轉(zhuǎn)碼任務(wù)處理完成后未生成視頻成品。
[0091]可以將設(shè)置有所述分布式鎖的注冊節(jié)點(diǎn)上形成相應(yīng)的標(biāo)識(在此對標(biāo)識的種類和標(biāo)識的形成方法不進(jìn)行限定,當(dāng)然也可以采用其他的方式),從而,具有標(biāo)識的所述注冊節(jié)點(diǎn)就表明設(shè)置了所述分布式鎖,在重新設(shè)置所述分布式鎖時,將帶有所述標(biāo)識的注冊節(jié)點(diǎn)排除,未設(shè)置有所述分布式鎖的注冊節(jié)點(diǎn)接續(xù)接收所述轉(zhuǎn)碼服務(wù)器發(fā)送的所述請求信息。
[0092]實(shí)施例三
[0093]下面結(jié)合圖3和4,對所述基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法的具體應(yīng)用進(jìn)行詳細(xì)說明:
[0094]設(shè)定:在如圖3所示的轉(zhuǎn)碼系統(tǒng)中,轉(zhuǎn)碼服務(wù)器I至4從所述控制中心獲取相應(yīng)的轉(zhuǎn)碼任務(wù)進(jìn)行轉(zhuǎn)碼處理。
[0095]基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的過程為:
[0096]步驟一,如圖3所示,轉(zhuǎn)碼任務(wù)獲取周期內(nèi),由控制中心創(chuàng)建的不同的注冊節(jié)點(diǎn)接收與該注冊節(jié)點(diǎn)對應(yīng)的轉(zhuǎn)碼服務(wù)器I至4發(fā)送的請求信息。
[0097]步驟二,各所述注冊節(jié)點(diǎn)確定其接收的所述轉(zhuǎn)碼任務(wù)獲取請求中是否包含所述特定轉(zhuǎn)碼任務(wù)獲取請求,當(dāng)然,也可以由所述控制中心監(jiān)測確定,確定出145號注冊節(jié)點(diǎn)中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求最先接收到該請求信息(所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求,該特定轉(zhuǎn)碼任務(wù)獲取請求由轉(zhuǎn)碼服務(wù)器I發(fā)送)。
[0098]步驟三,將所述分布式鎖分配在145號注冊節(jié)點(diǎn)中的特定轉(zhuǎn)碼任務(wù)獲取請求,并指示該145號注冊節(jié)點(diǎn)對應(yīng)的轉(zhuǎn)碼服務(wù)器I對轉(zhuǎn)碼任務(wù)處理,同時,刪除其他注冊節(jié)點(diǎn)收到的轉(zhuǎn)碼服務(wù)器2至4所述轉(zhuǎn)碼任務(wù)獲取請求。
[0099]當(dāng)然,控制中心可以實(shí)時監(jiān)測145號注冊節(jié)點(diǎn)中所述特定轉(zhuǎn)碼任務(wù)獲取請求所對應(yīng)的所述轉(zhuǎn)碼服務(wù)器I對轉(zhuǎn)碼任務(wù)的處理狀態(tài),任務(wù)處理完成,解除145號注冊節(jié)點(diǎn)中的所述分布式鎖。其中,所述任務(wù)處理成功,具體為轉(zhuǎn)碼任務(wù)處理完成后生成視頻成品;所述任務(wù)處理失敗,具體為轉(zhuǎn)碼任務(wù)處理完成后未生成視頻成品。
[0100]具體地:
[0101]對于步驟一,如圖3所示,轉(zhuǎn)碼服務(wù)器I至4分別將轉(zhuǎn)碼處理請求發(fā)送至控制中心創(chuàng)建的多個所述注冊節(jié)點(diǎn)。當(dāng)然,在實(shí)際應(yīng)用中,所述轉(zhuǎn)碼系統(tǒng)中包括幾十或上百臺服務(wù)器,圖3為了便于說明只示出4臺,并不構(gòu)成對本申請的限定。
[0102]為了便于對不同的所述注冊節(jié)點(diǎn)的監(jiān)測管理,該控制中心針對每一個所述注冊節(jié)點(diǎn)設(shè)置對應(yīng)的編號(本實(shí)施例中以阿拉伯?dāng)?shù)字進(jìn)行編號),便于對所述分布式鎖進(jìn)行分配時,在本實(shí)施例中將該分布式鎖指定分配于其中的一個所述注冊節(jié)點(diǎn)中(如圖4所示,將所述分布式鎖分配于145號注冊節(jié)點(diǎn)中)。
[0103]對于步驟二,轉(zhuǎn)碼服務(wù)器I至4共同向多個所述注冊節(jié)點(diǎn)發(fā)出請求信息,按照時間先后的順序,所述轉(zhuǎn)碼服務(wù)器I所發(fā)出的所述請求信息最先被145號注冊節(jié)點(diǎn)接收。
[0104]所以,對于步驟三來說,如圖4所示,此時,將所述分布式鎖分配給該145號注冊節(jié)點(diǎn)同時,所述控制中心指示所述轉(zhuǎn)碼服務(wù)器I對所述轉(zhuǎn)碼任務(wù)處理,該轉(zhuǎn)碼服務(wù)器I便可以進(jìn)行轉(zhuǎn)碼任務(wù)的處理。
[0105]在圖4中,146號注冊節(jié)點(diǎn)接收了轉(zhuǎn)碼服務(wù)器2發(fā)出的請求信息,但是,由于該146號注冊節(jié)接收的所述轉(zhuǎn)碼服務(wù)器2發(fā)出的請求信息晚于所述145號注冊節(jié)點(diǎn),所以,146號注冊節(jié)點(diǎn)并未分配所述分布式鎖,即轉(zhuǎn)碼服務(wù)器2并不能進(jìn)行轉(zhuǎn)碼任務(wù)的處理。
[0106]另外,為了避免其他轉(zhuǎn)碼服務(wù)器的等待狀態(tài)造成轉(zhuǎn)碼資源的浪費(fèi),無論所述轉(zhuǎn)碼服務(wù)器I所處理的轉(zhuǎn)碼任務(wù)是否成功,只要該轉(zhuǎn)碼任務(wù)處理完成(可能失敗),都將145號注冊節(jié)點(diǎn)中的所述分布式鎖進(jìn)行解除,解除該分布式鎖后,145號注冊節(jié)點(diǎn)可以再接收所述轉(zhuǎn)碼服務(wù)器發(fā)送的所述請求信息。
[0107]實(shí)施例四
[0108]本申請實(shí)施例四中所述的一種針對轉(zhuǎn)碼服務(wù)升級處理的系統(tǒng),可以設(shè)置于所述注冊節(jié)點(diǎn)內(nèi)部,也可以設(shè)置于所述注冊節(jié)點(diǎn)外部并與該注冊節(jié)點(diǎn)相耦接,本實(shí)施例中,如圖5所示,該系統(tǒng)設(shè)置于所述注冊節(jié)點(diǎn)內(nèi),與注冊節(jié)點(diǎn)、轉(zhuǎn)碼服務(wù)器以及控制中心相耦接,該系統(tǒng)包括:接收單元501、識別處理單元502和獲取單元503,其中,
[0109]所述接收單元501,與所述注冊節(jié)點(diǎn)、轉(zhuǎn)碼服務(wù)器以及識別處理單元502相耦接,用于指示所述注冊節(jié)點(diǎn)接收所述轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求。
[0110]所述識別處理單元502,與所述接收單元501和獲取單元503相耦接,用于
[0111]確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求;
[0112]確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖。
[0113]其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的。
[0114]所述獲取單元503,與所述識別處理單元502、控制中心相耦接,用于將所述注冊節(jié)點(diǎn)中被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給所述控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
[0115]在本實(shí)施例中,所述控制中心可以是具有統(tǒng)一數(shù)據(jù)管理能力的服務(wù)器或相應(yīng)裝置,該控制中心可以在其內(nèi)部創(chuàng)建多個注冊節(jié)點(diǎn),也可以在轉(zhuǎn)碼系統(tǒng)中通過代理服務(wù)器創(chuàng)建多個注冊節(jié)點(diǎn),當(dāng)然,所述控制中心也可以采用其他方式創(chuàng)建不同的注冊節(jié)點(diǎn),并不構(gòu)成對本申請的限定。其中,所述注冊節(jié)點(diǎn)的數(shù)量與該轉(zhuǎn)碼系統(tǒng)中的轉(zhuǎn)碼服務(wù)器或其轉(zhuǎn)碼進(jìn)程的數(shù)量相適應(yīng)。
[0116]需要說明的是,所述控制中心創(chuàng)建多個所述注冊節(jié)點(diǎn),為了便于對不同的所述注冊節(jié)點(diǎn)的監(jiān)測管理,可以針對每一個所述注冊節(jié)點(diǎn)設(shè)置對應(yīng)的編號。當(dāng)然,在本實(shí)施例中,該系統(tǒng)還可以采用其他方式進(jìn)行監(jiān)測管理,設(shè)置所述上述內(nèi)容并不構(gòu)成對本申請的限定。
[0117]對于識別處理單元502,由所述控制中心創(chuàng)建的多個所述注冊節(jié)點(diǎn)接收來自不同所述轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼線程發(fā)出的轉(zhuǎn)碼任務(wù)獲取請求,多個所述轉(zhuǎn)碼任務(wù)獲取請求隨機(jī)地發(fā)送到不同的所述注冊節(jié)點(diǎn)中,形成“搶節(jié)點(diǎn)”的過程。在多個所述轉(zhuǎn)碼任務(wù)獲取請求被所述注冊節(jié)點(diǎn)接收的過程中,各所述轉(zhuǎn)碼任務(wù)獲取請求被所述注冊節(jié)點(diǎn)接收的時間不相同,有先后之分,所以,所述識別處理單元502,將在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求作為所述特定轉(zhuǎn)碼任務(wù)獲取請求;另外,各所述轉(zhuǎn)碼任務(wù)獲取請求中也含有不同的轉(zhuǎn)碼服務(wù)器的級別信息,所以,所述識別處理單元502,也可以將所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求作為所述特定轉(zhuǎn)碼任務(wù)獲取請求。當(dāng)然,對于所述特定轉(zhuǎn)碼任務(wù)獲取請求的劃分,還可以是其他類型或方式,并不構(gòu)成對本申請的限定。
[0118]在本實(shí)施例中,當(dāng)所述轉(zhuǎn)碼系統(tǒng)中包含至少兩個注冊節(jié)點(diǎn)時,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述識別處理單元502,還用于:
[0119]將一所述注冊節(jié)點(diǎn)中所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的其他注冊節(jié)點(diǎn),并指示該注冊節(jié)點(diǎn)接收所述其他注冊節(jié)點(diǎn)發(fā)送的、由所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳;
[0120]根據(jù)所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序;
[0121]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0122]當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0123]在本實(shí)施例中的另一種情況下,
[0124]所述識別處理單元502,還用于:
[0125]將所述注冊節(jié)中所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的控制中心;
[0126]接收所述控制中心發(fā)送的關(guān)于轉(zhuǎn)碼任務(wù)獲取請求優(yōu)先級的通知消息;其中,所述通知消息是所述控制中心根據(jù)所述轉(zhuǎn)碼系統(tǒng)中的各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后發(fā)送的;
[0127]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求;
[0128]在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
[0129]其中,所述屬性信息包括下述信息的一種或多種:額定負(fù)載信息;
[0130]CPU處理能力信息;內(nèi)存大小的信息;與所述控制中心之間的數(shù)據(jù)傳輸鏈路的帶寬信息。
[0131]由所述識別處理單元502所分配的讀寫鎖具體為分布式鎖,其數(shù)量為一個,根據(jù)針對所述注冊節(jié)點(diǎn)的優(yōu)先級的排序判定為優(yōu)先級最高的所述注冊節(jié)點(diǎn),被分配該分布式鎖(只有該節(jié)點(diǎn)獲得了該分布式鎖),在本實(shí)施例中,所述分布式鎖由所述控制中心分配。所述注冊節(jié)點(diǎn)獲得該分布式鎖后,即是將所述分布式鎖與發(fā)出請求的所述轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼進(jìn)程進(jìn)行綁定,同時刪除其他注冊節(jié)點(diǎn)收到的所述請求信息。
[0132]另外,在本實(shí)施例中,所述獲取單元503,還用于監(jiān)測到設(shè)置有分布式鎖的注冊節(jié)點(diǎn)所對應(yīng)的所述轉(zhuǎn)碼服務(wù)器將轉(zhuǎn)碼任務(wù)處理完成時,解除該注冊節(jié)點(diǎn)中的所述分布式鎖,該注冊節(jié)點(diǎn)可以繼續(xù)接收其他所述轉(zhuǎn)碼服務(wù)器發(fā)送的所述請求信息。
[0133]需要說明的是,所述轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼線程在接收到所述控制中心的指示后,便可以進(jìn)行相應(yīng)的任務(wù)處理操作,任務(wù)處理的狀態(tài)實(shí)時反映到該注冊節(jié)點(diǎn)中,為了避免其他轉(zhuǎn)碼服務(wù)器或轉(zhuǎn)碼進(jìn)程的等待狀態(tài)造成轉(zhuǎn)碼資源的浪費(fèi),所以,任務(wù)處理完成,無論處理成功還是失敗,都將所述分布式鎖解除。其中,具體地,所述轉(zhuǎn)碼任務(wù)處理成功,具體為所述轉(zhuǎn)碼任務(wù)處理完成后生成視頻成品;所述轉(zhuǎn)碼任務(wù)處理失敗,具體為所述轉(zhuǎn)碼任務(wù)處理完成后未生成視頻成品。
[0134]具體來說,可以將設(shè)置有所述分布式鎖的注冊節(jié)點(diǎn)上形成相應(yīng)的標(biāo)識(在此對標(biāo)識的種類和標(biāo)識的形成方法不進(jìn)行限定,當(dāng)然也可以采用其他的方式),從而,具有標(biāo)識的所述注冊節(jié)點(diǎn)就表明設(shè)置了所述分布式鎖,在重新設(shè)置所述分布式鎖時,將帶有所述標(biāo)識的注冊節(jié)點(diǎn)排除,未設(shè)置有所述分布式鎖的注冊節(jié)點(diǎn)接續(xù)接收所述轉(zhuǎn)碼服務(wù)器發(fā)送的所述請求信息。
[0135]在本實(shí)施例中,所述轉(zhuǎn)碼任務(wù)獲取周期,具體為周期時長為至少I秒的獲取轉(zhuǎn)碼任務(wù)的周期,即該轉(zhuǎn)碼任務(wù)獲取周期就是各所述轉(zhuǎn)碼服務(wù)器發(fā)送所述請求信息至所述注冊節(jié)點(diǎn),獲取所述分布式鎖的周期。
[0136]由于方法部分已經(jīng)對本申請實(shí)施例進(jìn)行了詳細(xì)描述,這里對實(shí)施例中涉及的系統(tǒng)與方法對應(yīng)部分的展開描述省略,不再贅述。對于系統(tǒng)中具體內(nèi)容的描述可參考方法實(shí)施例的內(nèi)容,這里不再具體限定。
[0137]與現(xiàn)有技術(shù)相比,本申請所述的一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法和系統(tǒng),達(dá)到了如下效果:
[0138]I)本申請通過預(yù)先設(shè)置視頻的屬性規(guī)則對需要轉(zhuǎn)碼的視頻進(jìn)行優(yōu)先級、碼率高低的判定,同時根據(jù)轉(zhuǎn)碼機(jī)的性能進(jìn)行分組,有效解決了目前視頻網(wǎng)站的轉(zhuǎn)碼機(jī)不能根據(jù)服務(wù)器狀態(tài)和轉(zhuǎn)碼任務(wù)屬性合理進(jìn)行轉(zhuǎn)碼任務(wù)調(diào)度的問題。
[0139]2)本申請可以對不同的轉(zhuǎn)碼機(jī)進(jìn)行角色配置,劃定不同的轉(zhuǎn)碼任務(wù)處理對象,尤其對于特定視頻轉(zhuǎn)碼任務(wù),由劃定的特定轉(zhuǎn)碼機(jī)專門進(jìn)行處理,從而可以有效保證某些特定任務(wù)的快速轉(zhuǎn)碼,將重要視頻及時發(fā)布。
[0140]還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者系統(tǒng)中還存在另外的相同要素。
[0141]本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實(shí)施的計算機(jī)程序產(chǎn)品的形式。
[0142]以上所述僅為本申請的實(shí)施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。
【權(quán)利要求】
1.一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,其特征在于,包括: 注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求; 在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求;其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的; 在確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖; 將被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
2.如權(quán)利要求1所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,其特征在于,當(dāng)所述轉(zhuǎn)碼系統(tǒng)中包含至少兩個注冊節(jié)點(diǎn)時,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述方法還包括: 所述注冊節(jié)點(diǎn)將所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的其他注冊節(jié)點(diǎn),并接收所述其他注冊節(jié)點(diǎn)發(fā)送的、由所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳; 所述注冊節(jié)點(diǎn)根據(jù)所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求`以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序; 當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求; 當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
3.如權(quán)利要求如權(quán)利要求1所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,其特征在于,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述方法還包括: 所述注冊節(jié)點(diǎn)將所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的控制中心; 所述注冊節(jié)點(diǎn)接收所述控制中心發(fā)送的關(guān)于轉(zhuǎn)碼任務(wù)獲取請求優(yōu)先級的通知消息;其中,所述通知消息是所述控制中心根據(jù)所述轉(zhuǎn)碼系統(tǒng)中的各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后發(fā)送的; 在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求; 在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
4.如權(quán)利要求3所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的方法,其特征在于,所述屬性信息包括下述信息的一種或多種: 額定負(fù)載信息; CPU處理能力信息; 內(nèi)存大小的信息; 與所述控制中心之間的數(shù)據(jù)傳輸鏈路的帶寬信息。
5.一種基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的系統(tǒng),與注冊節(jié)點(diǎn)、轉(zhuǎn)碼服務(wù)器以及控制中心相耦接,其特征在于,該系統(tǒng)包括:接收單元、識別處理單元以及獲取單元,其中, 所述接收單元,用于指示所述注冊節(jié)點(diǎn)接收所述轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;` 所述識別處理單元,用于確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含特定轉(zhuǎn)碼任務(wù)獲取請求時,刪除所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收到的所有轉(zhuǎn)碼任務(wù)獲取請求; 確定出所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求時,為所述特定轉(zhuǎn)碼任務(wù)獲取請求分配讀寫鎖; 其中,所述特定轉(zhuǎn)碼任務(wù)獲取請求是在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)最早被發(fā)送至轉(zhuǎn)碼系統(tǒng)中的注冊節(jié)點(diǎn)的轉(zhuǎn)碼任務(wù)獲取請求;或者,所述特定轉(zhuǎn)碼任務(wù)獲取請求是所述轉(zhuǎn)碼系統(tǒng)中級別最高的轉(zhuǎn)碼服務(wù)器發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求;所述轉(zhuǎn)碼系統(tǒng)為所述注冊節(jié)點(diǎn)所屬的轉(zhuǎn)碼系統(tǒng),且所述轉(zhuǎn)碼系統(tǒng)至少包含一個注冊節(jié)點(diǎn);轉(zhuǎn)碼服務(wù)器的所述級別是根據(jù)轉(zhuǎn)碼服務(wù)器的屬性信息預(yù)先設(shè)置的; 所述獲取單元,用于將所述注冊節(jié)點(diǎn)中被分配了所述讀寫鎖的任務(wù)獲取請求發(fā)送給所述控制中心,以使得向所述注冊節(jié)點(diǎn)發(fā)送所述特定轉(zhuǎn)碼任務(wù)獲取請求的轉(zhuǎn)碼服務(wù)器從所述控制中心處獲得需在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)執(zhí)行的轉(zhuǎn)碼任務(wù)并進(jìn)行處理。
6.如權(quán)利要求5所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的系統(tǒng),其特征在于,當(dāng)所述轉(zhuǎn)碼系統(tǒng)中包含至少兩個注冊節(jié)點(diǎn)時,所述注冊節(jié)點(diǎn)接收轉(zhuǎn)碼服務(wù)器在轉(zhuǎn)碼任務(wù)獲取周期內(nèi)發(fā)送的轉(zhuǎn)碼任務(wù)獲取請求后,所述識別處理單元,還用于: 將一所述注冊節(jié)點(diǎn)中所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的其他注冊節(jié)點(diǎn),并指示該注冊節(jié)點(diǎn)接收所述其他注冊節(jié)點(diǎn)發(fā)送的、由所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳;根據(jù)所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求以及所述其他注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序; 當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求; 當(dāng)確定排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
7.如權(quán)利要求5所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的系統(tǒng),其特征在于,所述識別處理單元,還用于: 將所述注冊節(jié)中所述所有轉(zhuǎn)碼任務(wù)獲取請求和相應(yīng)的接收時間戳發(fā)送給所述轉(zhuǎn)碼系統(tǒng)中的控制中心; 接收所述控制中心發(fā)送的關(guān)于轉(zhuǎn)碼任務(wù)獲取請求優(yōu)先級的通知消息;其中,所述通知消息是所述控制中心根據(jù)所述轉(zhuǎn)碼系統(tǒng)中的各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求的接收時間戳,按照接收時間由先至后的順序,對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后發(fā)送的; 在解析出所述通知消息表示對所述各注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求為所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中包含所述特定轉(zhuǎn)碼任務(wù)獲取請求; 在解析出所述通知消息表示對所述各`注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期接收到的所有轉(zhuǎn)碼任務(wù)獲取請求進(jìn)行排序后,排列在第一位的轉(zhuǎn)碼任務(wù)獲取請求不是所述注冊節(jié)點(diǎn)所接收的轉(zhuǎn)碼任務(wù)獲取請求時,確定所述注冊節(jié)點(diǎn)在所述轉(zhuǎn)碼任務(wù)獲取周期內(nèi)接收的所有轉(zhuǎn)碼任務(wù)獲取請求中不包含所述特定轉(zhuǎn)碼任務(wù)獲取請求。
8.如權(quán)利要求7所述的基于分布式鎖的轉(zhuǎn)碼任務(wù)獲取的系統(tǒng),其特征在于,所述屬性信息包括下述信息的一種或多種: 額定負(fù)載信息; CPU處理能力信息; 內(nèi)存大小的信息; 與所述控制中心之間的數(shù)據(jù)傳輸鏈路的帶寬信息。
【文檔編號】H04N21/262GK103686224SQ201310738633
【公開日】2014年3月26日 申請日期:2013年12月26日 優(yōu)先權(quán)日:2013年12月26日
【發(fā)明者】李超, 劉鈞石, 邢波, 鮑大磊, 王孝慶 申請人:樂視網(wǎng)信息技術(shù)(北京)股份有限公司