本發(fā)明屬于網(wǎng)絡(luò)直播技術(shù)領(lǐng)域,特別是涉及一種服務(wù)器及其流媒體服務(wù)提供方法。
背景技術(shù):
內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,CDN),通過(guò)在網(wǎng)絡(luò)各處放置緩存服務(wù)器,在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上構(gòu)建一層智能虛擬網(wǎng)絡(luò),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)“邊緣”,使用戶可以就近取得所需的內(nèi)容,以緩解網(wǎng)絡(luò)擁擠的狀況,提高網(wǎng)站的相應(yīng)速度,從技術(shù)上全面解決由于網(wǎng)絡(luò)帶寬小、用戶訪問(wèn)量大、網(wǎng)點(diǎn)分布不均等原因,導(dǎo)致用戶訪問(wèn)網(wǎng)站的相應(yīng)速度慢的問(wèn)題。
流媒體文件是采用流式傳輸及播放的媒體文件。在采用流式傳輸方式在網(wǎng)絡(luò)中傳輸流媒體文件時(shí),首先將視頻和音頻等多媒體文件經(jīng)過(guò)壓縮分成多個(gè)壓縮包,再由服務(wù)器向客戶端連續(xù)、實(shí)時(shí)傳送。與非流式傳輸方式相比,用戶不用等到整個(gè)文件全部下載完畢才能能夠進(jìn)行播放,而是只需要經(jīng)過(guò)短時(shí)間的啟動(dòng)延時(shí)即可在客戶端上利用播放器對(duì)已接收的流媒體文件進(jìn)行播放,剩余的部分將繼續(xù)進(jìn)行下載,直至流媒體文件播放完畢。
通常,流媒體服務(wù)節(jié)點(diǎn)在向客戶提供流媒體服務(wù)時(shí),需要根據(jù)客戶的需求對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。但是,現(xiàn)有的掛載點(diǎn)配置更新方式,存在著用戶使用體驗(yàn)度低且浪費(fèi)資源的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例解決的問(wèn)題是如何在對(duì)客戶的掛載點(diǎn)配置進(jìn)行更新時(shí),提升用戶的使用體驗(yàn)。
為解決上述問(wèn)題,本發(fā)明實(shí)施例提供了一種服務(wù)器流媒體服務(wù)提供方法,所述服務(wù)器包括多個(gè)工作進(jìn)程,所述方法包括:工作進(jìn)程判斷是否需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新;當(dāng)需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),所述工作進(jìn)程對(duì)所述掛載點(diǎn)配置信息進(jìn)行更新,且在更新過(guò)程中,使用所述工作進(jìn)程繼續(xù)提供配置信息未發(fā)生變化的掛載點(diǎn)上所承載的流媒體服務(wù)。
可選地,所述方法還包括:當(dāng)相應(yīng)的掛載點(diǎn)配置信息更新完畢時(shí),所述工作進(jìn)程繼續(xù)向用戶提供配置信息為發(fā)送變化的掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù)。
可選地,所述工作進(jìn)程對(duì)所述掛載點(diǎn)配置信息進(jìn)行更新,包括:所述工作進(jìn)程從預(yù)設(shè)的配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息;所述工作進(jìn)程將所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行比較;當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息不一致時(shí),所述工作進(jìn)程采用從所述配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
可選地,當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息一致時(shí),所述方法還包括:所述工作進(jìn)程繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第一時(shí)間閾值。
可選地,當(dāng)采用所獲取的掛載點(diǎn)配置信息對(duì)本地所存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新完畢時(shí),所述方法還包括:所述工作進(jìn)程將從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息存儲(chǔ)至預(yù)設(shè)的掛載點(diǎn)列表中。
可選地,當(dāng)重啟時(shí),所述方法還包括:獲取本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置文件,并解析得到對(duì)應(yīng)的掛載點(diǎn)配置信息;基于解析得到的掛載點(diǎn)配置信息,創(chuàng)建對(duì)應(yīng)的工作進(jìn)程;采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程從所述配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息;當(dāng)確定從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息與解析得到的掛載點(diǎn)配置信息不一致時(shí),采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
可選地,當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息一致時(shí),所述方法還包括:采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第二時(shí)間閾值。
可選地,當(dāng)確定從所述配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息失敗時(shí),所述方法還包括:采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程從所述掛載點(diǎn)列表中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息,對(duì)本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
本發(fā)明實(shí)施例還提供了一種服務(wù)器,所述服務(wù)器包括存儲(chǔ)單元和多個(gè)工作進(jìn)程;所述存儲(chǔ)單元,適于存儲(chǔ)掛載點(diǎn)配置信息;所述工作進(jìn)程,包括判斷子單元、更新子單元和服務(wù)子單元;所述判斷子單元,適于判斷是否需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新;所述更新子單元,適于當(dāng)判斷需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),對(duì)所述掛載點(diǎn)配置信息進(jìn)行更新;所述服務(wù)子單元,適于在更新過(guò)程中,繼續(xù)提供配置信息未發(fā)生變化的掛載點(diǎn)上所承載的流媒體服務(wù)。
可選地,所述服務(wù)子單元,還適于當(dāng)對(duì)應(yīng)的掛載點(diǎn)配置信息更新完畢時(shí),所述工作進(jìn)程繼續(xù)向用戶提供配置信息為發(fā)送變化的掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù)。
可選地,所述更新子單元,適于從預(yù)設(shè)的配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息;將所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行比較;當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息不一致時(shí),采用從所述配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
可選地,所述更新子單元,還適于當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息一致時(shí),繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第一時(shí)間閾值。
可選地,所述工作進(jìn)程還包括存儲(chǔ)子單元;存儲(chǔ)子單元,適于當(dāng)采用所獲取的掛載點(diǎn)配置信息對(duì)本地所存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新完畢時(shí),將從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息存儲(chǔ)至預(yù)設(shè)的掛載點(diǎn)列表中。
可選地,還包括重啟單元,適于當(dāng)重啟時(shí),獲取本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置文件,并解析得到對(duì)應(yīng)的掛載點(diǎn)配置信息;基于解析得到的掛載點(diǎn)配置信息,創(chuàng)建對(duì)應(yīng)的工作進(jìn)程;
所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程,適于從所述配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息;當(dāng)確定從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息與解析得到的掛載點(diǎn)配置信息不一致時(shí),采用從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
可選地,所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程,適于當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息一致時(shí),還適于繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第二時(shí)間閾值。
可選地,所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程,還適于當(dāng)確定從所述配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息失敗時(shí),采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程從所述掛載點(diǎn)列表中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息,對(duì)本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
可選地,所述服務(wù)器為Nginx服務(wù)器。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案具有以下的優(yōu)點(diǎn):
上述的方案,采用動(dòng)態(tài)更新掛載點(diǎn)配置信息的方式對(duì)掛載點(diǎn)配置信息進(jìn)行更新,當(dāng)確定需要對(duì)對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用對(duì)應(yīng)的工作進(jìn)程對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新,并在對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),可以避免因服務(wù)重啟所導(dǎo)致的流媒體服務(wù)中斷情形的發(fā)生,因而可以提高流媒體文件的播放質(zhì)量,提升用戶的使用體驗(yàn)。
進(jìn)一步地,在相應(yīng)客戶的掛載點(diǎn)配置信息更新完畢時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供配置信息未更新的掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),由于在對(duì)應(yīng)的掛載點(diǎn)配置信息更新完畢時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),可以避免配置信息未更新的掛載點(diǎn)對(duì)應(yīng)的流媒體文件的多次回源,因而可以節(jié)約資源。
進(jìn)一步地,當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息一致時(shí),對(duì)應(yīng)的工作進(jìn)程繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第一時(shí)間閾值,可以節(jié)約由于每次獲取掛載點(diǎn)配置信息均需要與配置服務(wù)器建立連接所產(chǎn)生的開(kāi)銷(xiāo),因而可以減輕配置服務(wù)器的負(fù)載,節(jié)約資源。
進(jìn)一步地,在對(duì)當(dāng)采用所獲取的掛載點(diǎn)配置信息對(duì)本地所存儲(chǔ)的相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新完畢時(shí),通過(guò)對(duì)應(yīng)的工作進(jìn)程將從所述配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行存儲(chǔ),可以在重啟時(shí)采用本次下載的掛載點(diǎn)配置信息對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新,可以降低對(duì)于配置服務(wù)器的依賴,提升掛載點(diǎn)配置信息更新的靈活性。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例中一種的服務(wù)器直播服務(wù)提供方法的流程圖;
圖2是本發(fā)明實(shí)施例中另一種的服務(wù)器直播服務(wù)提供方法的流程圖;
圖3是本發(fā)明實(shí)施例中服務(wù)器重啟時(shí)對(duì)掛載點(diǎn)配置信息進(jìn)行更新的方法的流程圖;
圖4是本發(fā)明實(shí)施例中的一種流媒體文件的傳輸裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例中的一種工作進(jìn)程的結(jié)構(gòu)示意圖。
具體實(shí)施方式
如背景技術(shù)所言,流媒體服務(wù)節(jié)點(diǎn)在向客戶提供流媒體服務(wù)時(shí),需要根據(jù)客戶的需求對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
現(xiàn)有的掛載點(diǎn)配置更新方式,通過(guò)控制中心生成好新的掛載點(diǎn)配置對(duì)應(yīng)的掛載點(diǎn)配置文件后,使用ansible或saltstack等運(yùn)維工具向各個(gè)流媒體服務(wù)節(jié)點(diǎn)推送最新的掛載點(diǎn)配置文件,推送完后,再通過(guò)重載指令重載Nginx服務(wù),以使得最新的掛載點(diǎn)配置文件配置生效。
但是,上述的掛載點(diǎn)配置信息更新方式存在以下問(wèn)題:
其一,在流媒體服務(wù)上存在多個(gè)客戶的掛載點(diǎn)時(shí),每一客戶每天都有可能去新增或刪除一個(gè)掛載點(diǎn),那么該流媒體服務(wù)將被多次重載,在流量比較高的時(shí)候,每一次重載服務(wù)都會(huì)對(duì)服務(wù)質(zhì)量造成很大的波動(dòng),對(duì)用戶體驗(yàn)造成了嚴(yán)重的影響。
其二,由于直播是長(zhǎng)連接,根據(jù)Nginx的服務(wù)重載機(jī)制,舊的工作進(jìn)程處理舊的長(zhǎng)連接請(qǐng)求,導(dǎo)致工作進(jìn)程不能被及時(shí)釋放,越積越多,造成了資源的浪費(fèi)。
其三,由于舊工作進(jìn)程在處理舊的連接時(shí)有一次回源,每一次流媒體服務(wù)每次重載后,同樣的流媒體文件被再次訪問(wèn)時(shí),新的工作進(jìn)程會(huì)再次回源,同樣造成了資源的浪費(fèi)。
為解決上述問(wèn)題,本發(fā)明實(shí)施例中的視頻文件提供方法,當(dāng)確定需要對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用對(duì)應(yīng)的工作進(jìn)程對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新,并在對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù);在相應(yīng)客戶的掛載點(diǎn)配置信息更新完畢時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),可以提高流媒體文件的播放質(zhì)量,并可以節(jié)約資源。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例做詳細(xì)的說(shuō)明。
圖1是本發(fā)明實(shí)施例中的一種服務(wù)器流媒體服務(wù)提供方法的流程圖。如圖1所示的服務(wù)器流媒體服務(wù)提供方法,可以包括:
步驟S101:工作進(jìn)程判斷是否需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
在具體實(shí)施中,提供流媒體服務(wù)的服務(wù)器可以根據(jù)掛載點(diǎn)的設(shè)置,創(chuàng)建對(duì)應(yīng)的工作進(jìn)程,也即掛載點(diǎn)與工作進(jìn)程之間具有預(yù)設(shè)的對(duì)應(yīng)關(guān)系。其中,每個(gè)工作進(jìn)程可以根據(jù)需要,實(shí)時(shí)地對(duì)相應(yīng)的流媒體服務(wù)對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
步驟S102:當(dāng)確定需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),所述工作進(jìn)程對(duì)所述掛載點(diǎn)配置信息進(jìn)行更新。
在具體實(shí)施中,每個(gè)工作進(jìn)程在確定需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),便可以采用最新獲取的掛載點(diǎn)配置信息對(duì)服務(wù)器中本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
步驟S103:當(dāng)對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),使用所述工作進(jìn)程繼續(xù)提供配置信息未發(fā)生變化的掛載點(diǎn)上所承載的流媒體服務(wù)。
在具體實(shí)施中,當(dāng)每個(gè)工作進(jìn)程在對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新,且配置信息未發(fā)生變化的掛載點(diǎn)正在為用戶提供相應(yīng)的流媒體服務(wù)時(shí),如配置信息未發(fā)生變化的掛載點(diǎn),在對(duì)掛載點(diǎn)配置信息更新之前已經(jīng)接收到相應(yīng)掛載點(diǎn)的流媒體訪問(wèn)請(qǐng)求,并正在向用戶提供流媒體服務(wù)的時(shí)候,對(duì)應(yīng)的工作進(jìn)程可以在對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新的同時(shí),繼續(xù)向用戶提供正在進(jìn)行的流媒體服務(wù)。
換句話說(shuō),工作進(jìn)程對(duì)應(yīng)的掛載點(diǎn)配置信息的更新過(guò)程與配置信息未發(fā)生變化的掛載點(diǎn)的流媒體服務(wù)之間并行進(jìn)行,從而可以避免因掛載點(diǎn)配置信息更新所導(dǎo)致的服務(wù)重載對(duì)于正在進(jìn)行的配置信息未發(fā)生變化的掛載點(diǎn)的流媒體服務(wù)的影響,從而可以提高流媒體服務(wù)的質(zhì)量,提升用戶的使用體驗(yàn)。
上述的方案,采用動(dòng)態(tài)更新掛載點(diǎn)配置信息的方式對(duì)掛載點(diǎn)配置信息進(jìn)行更新,當(dāng)確定需要對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用對(duì)應(yīng)的工作進(jìn)程對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新,并在對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),可以避免因服務(wù)重啟所導(dǎo)致的流媒體服務(wù)中斷情形的發(fā)生,因而可以提高流媒體文件的播放質(zhì)量,提升用戶的使用體驗(yàn)。
下面將結(jié)合圖2對(duì)本發(fā)明實(shí)施例中的服務(wù)器流媒體服務(wù)提供方法進(jìn)行詳細(xì)的描述。
參見(jiàn)圖2,本發(fā)明實(shí)施例中的服務(wù)器流媒體服務(wù)提供方法,適于向客戶提供相應(yīng)的流媒體服務(wù),具體可以采用如下的操作實(shí)現(xiàn):
步驟S201:工作進(jìn)程從預(yù)設(shè)的配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息。
在具體實(shí)施中,客戶的掛載點(diǎn)配置信息可以存儲(chǔ)于預(yù)設(shè)的配置服務(wù)器中。該配置服務(wù)器設(shè)置有統(tǒng)一的對(duì)外接口,用于客戶錄入對(duì)應(yīng)的掛載點(diǎn)配置信息,如對(duì)于自身所有的掛載點(diǎn)進(jìn)行增加、刪除或者修改等。對(duì)應(yīng)的工作進(jìn)程可以實(shí)時(shí)或者定時(shí)從配置服務(wù)器的獲取對(duì)應(yīng)的流媒體服務(wù)對(duì)應(yīng)的掛載點(diǎn)配置信息。在本發(fā)明一實(shí)施例中,所述配置服務(wù)器為Consul服務(wù)器。
在具體實(shí)施中,Nginx服務(wù)器在初始化過(guò)程,根據(jù)提供流媒體服務(wù)的需要,創(chuàng)建有對(duì)應(yīng)的多個(gè)工作進(jìn)程,以在接收用戶發(fā)送的流媒體訪問(wèn)請(qǐng)求時(shí),向用戶提供對(duì)應(yīng)的流媒體服務(wù),也即將用戶所請(qǐng)求的對(duì)應(yīng)的流媒體文件返回至對(duì)應(yīng)的客戶端。同時(shí),對(duì)應(yīng)的工作進(jìn)程還采用相應(yīng)的線程實(shí)時(shí)或定時(shí)從配置服務(wù)器中獲取自身對(duì)應(yīng)的掛載點(diǎn)配置信息,以在客戶對(duì)掛載點(diǎn)配置信息進(jìn)行更新時(shí),將對(duì)應(yīng)的掛載點(diǎn)配置信息同步至自身所屬的Nginx服務(wù)器中,從而根據(jù)最新的掛載點(diǎn)配置信息向用戶提供最新的流媒體服務(wù)。
步驟S202:判斷從所述配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息與本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息是否一致;當(dāng)判斷結(jié)果為是時(shí),可以執(zhí)行步驟S205;反之,則可以執(zhí)行步驟S203。
步驟S203:當(dāng)對(duì)本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),所述對(duì)應(yīng)的工作進(jìn)程繼續(xù)向用戶提供配置信息未發(fā)生變化的掛載點(diǎn)的流媒體服務(wù)。
在具體實(shí)施中,對(duì)應(yīng)的工作進(jìn)程在確定從預(yù)設(shè)的配置服務(wù)器中所獲取的相應(yīng)的掛載點(diǎn)配置信息,與自身所屬的Nginx服務(wù)器中本地所存儲(chǔ)的相應(yīng)的掛載配置信息不一致時(shí),便可以采用從所述配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息對(duì)自身相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
與此同時(shí),若配置信息未發(fā)生變化的掛載點(diǎn)正在為用戶提供流媒體服務(wù),則該工作進(jìn)程繼續(xù)向用戶提供對(duì)應(yīng)的流媒體服務(wù),也即掛載點(diǎn)配置信息的更新與提供流媒體服務(wù)之間互不干擾,也即用戶所使用的流媒體服務(wù)可以在配置信息更新的過(guò)程中繼續(xù)正常進(jìn)行,從而可以避免服務(wù)重載對(duì)正在進(jìn)行的流媒體服務(wù)的影響,從而可以提高流媒體服務(wù)的質(zhì)量。
步驟S204:當(dāng)對(duì)本地存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息更新完畢時(shí),所述工作進(jìn)程繼續(xù)向用戶提供配置信息未發(fā)生變化的掛載點(diǎn)的流媒體服務(wù),以及向用戶提供新增掛載點(diǎn)的流媒體服務(wù),并將從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息存在至預(yù)設(shè)的掛載點(diǎn)列表中。
在具體實(shí)施中,當(dāng)對(duì)應(yīng)的掛載點(diǎn)配置信息更新完畢時(shí),對(duì)應(yīng)的工作進(jìn)程可以啟用新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),也即在接收到新增掛載點(diǎn)對(duì)應(yīng)的流媒體訪問(wèn)請(qǐng)求時(shí),向相應(yīng)的客戶端返回對(duì)應(yīng)的流媒體文件。同時(shí),對(duì)應(yīng)的工作進(jìn)程繼續(xù)維持正在進(jìn)行的配置信息未發(fā)生變化的掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù)的正常進(jìn)行。
在掛載點(diǎn)配置信息更新之前、過(guò)程中和之后,采用同一個(gè)工作進(jìn)程向用戶提供連續(xù)的流媒體服務(wù):一方面,可以避免由于服務(wù)重載所導(dǎo)致的工作進(jìn)程越積越多,不能及時(shí)釋放;另一方面,也可以避免由于服務(wù)重載所創(chuàng)建的新的工作進(jìn)程在接收到用戶的訪問(wèn)請(qǐng)求時(shí),對(duì)于配置信息未發(fā)生變化的掛載點(diǎn)對(duì)應(yīng)的流媒體文件的再次回源,因而可以減輕源站服務(wù)器的負(fù)載,節(jié)約資源。
在具體實(shí)施中,為了節(jié)約開(kāi)銷(xiāo),本發(fā)明實(shí)施例中的服務(wù)器流媒體服務(wù)提供方法,還包括:
步驟S205:所述工作進(jìn)程繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第一時(shí)間閾值。
在本發(fā)明一實(shí)施例中,當(dāng)對(duì)應(yīng)的工作進(jìn)程在確定客戶未對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),也即從配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息與Nginx服務(wù)器中本地所存儲(chǔ)的相應(yīng)的掛載配置信息一致時(shí),并非直接釋放與配置服務(wù)器的連接,而是繼續(xù)保持與所述配置服務(wù)器之間的連接一段時(shí)間,也即保持的時(shí)間長(zhǎng)度達(dá)到預(yù)設(shè)的第一時(shí)間閾值,以在該時(shí)間段內(nèi)當(dāng)客戶對(duì)配置服務(wù)器中對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),可以不用再次與配置服務(wù)器建立連接,便可以獲取對(duì)應(yīng)的掛載點(diǎn)配置信息,從而可以減少與配置服務(wù)器之間的交互次數(shù),以節(jié)約資源。
其中,第一時(shí)間閾值可以根據(jù)實(shí)際的需要進(jìn)行設(shè)置,如設(shè)置為5分鐘或者10分鐘等,本發(fā)明在此不做限制。
在具體實(shí)施中,在確定從配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息與Nginx服務(wù)器中本地所存儲(chǔ)的相應(yīng)的掛載配置信息一致,Nginx服務(wù)器中對(duì)應(yīng)的工作進(jìn)程可以首先將從配置服務(wù)器中獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息存儲(chǔ)在Nginx服務(wù)器中對(duì)應(yīng)的掛載點(diǎn)列表中,以在重啟且無(wú)法從配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息時(shí),可以采用掛載點(diǎn)列表中存儲(chǔ)的掛載點(diǎn)配置信息對(duì)自身相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新,具體請(qǐng)參見(jiàn)圖3。
參見(jiàn)圖3,在Nginx服務(wù)器重啟后對(duì)相應(yīng)的掛載點(diǎn)配置信息的更新過(guò)程,可以采用如下的步驟實(shí)現(xiàn):
步驟S301:當(dāng)重啟時(shí),獲取本地存儲(chǔ)的相應(yīng)客戶的掛載點(diǎn)配置文件,并解析得到對(duì)應(yīng)的掛載點(diǎn)配置信息。
在具體實(shí)施中,Nginx服務(wù)器可能由于故障等需要進(jìn)行重啟。當(dāng)重啟時(shí),為了確保流媒體服務(wù)的正常進(jìn)行,Nginx服務(wù)器可以首先從本次所存儲(chǔ)的掛載點(diǎn)配置信息中獲取對(duì)應(yīng)的掛載點(diǎn)配置文件,并對(duì)所本地所存儲(chǔ)的掛載點(diǎn)配置文件進(jìn)行解析,以得到的對(duì)應(yīng)的掛載點(diǎn)配置信息。
步驟S302:基于解析得到的掛載點(diǎn)配置信息,創(chuàng)建對(duì)應(yīng)的工作進(jìn)程。
在具體實(shí)施中,Nginx服務(wù)器在解析得到本地所存儲(chǔ)的掛載點(diǎn)配置文件中的掛載配置信息時(shí),可以根據(jù)解析得到的掛載點(diǎn)配置信息創(chuàng)建對(duì)應(yīng)的工作進(jìn)程,以維護(hù)對(duì)應(yīng)掛載點(diǎn)的配置信息并向用戶提供對(duì)應(yīng)的流媒體服務(wù)。
步驟S303:采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程從所述配置服務(wù)器中獲取相應(yīng)客戶的掛載點(diǎn)配置信息。
在具體實(shí)施中,Nginx服務(wù)器在創(chuàng)建完成對(duì)應(yīng)的至少一個(gè)的工作進(jìn)程時(shí),對(duì)應(yīng)的工作進(jìn)程可以首先與所述配置服務(wù)器建立連接,并獲取所述配置服務(wù)器中所存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息,以在重啟成功后,將從所述配置服務(wù)器所獲取的對(duì)應(yīng)的掛載點(diǎn)配置信息與Nginx服務(wù)器本地所存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行比較,以確定在后續(xù)的步驟中是否對(duì)Nginx服務(wù)器本地所存儲(chǔ)的對(duì)應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
步驟S304:所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程判斷是否成功從配置服務(wù)器中獲取相應(yīng)的掛載點(diǎn)配置信息;當(dāng)判斷結(jié)果為是時(shí),可以執(zhí)行步驟S305;反之,則可以執(zhí)行步驟S306。
步驟S305:所述工作進(jìn)程采用本地存儲(chǔ)的掛載點(diǎn)列表中相應(yīng)的掛載點(diǎn)配置信息,對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新。
在具體實(shí)施中,當(dāng)在配置服務(wù)器出現(xiàn)故障,或者與配置服務(wù)器之間的攔截異常等情形出現(xiàn),導(dǎo)致無(wú)法從配置服務(wù)器中成功獲取對(duì)應(yīng)的掛載點(diǎn)配置信息時(shí),可以通過(guò)Nginx服務(wù)器本地存儲(chǔ)的掛載點(diǎn)列表中存儲(chǔ)的掛載點(diǎn)配置信息對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新,從而可以降低對(duì)配置服務(wù)器的依賴,提高掛載點(diǎn)配置信息更新的靈活性。
步驟S306:判斷從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息與解析得到對(duì)應(yīng)的掛載點(diǎn)配置信息是否一致;當(dāng)判斷結(jié)果為是時(shí),可以執(zhí)行步驟S308;反之,則可以執(zhí)行步驟S307。
步驟S307:采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
在具體實(shí)施中,當(dāng)重啟成功后,Nginx服務(wù)器所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程在確定從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息
步驟S308:采用所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第二時(shí)間閾值。
在具體實(shí)施中,上述的步驟S305至S307的操作過(guò)程可以參照步驟S202至S205中相應(yīng)部分的介紹,不再贅述。
上述對(duì)本發(fā)明實(shí)施例中的方法進(jìn)行了詳細(xì)的描述,下面將對(duì)上述的方法對(duì)應(yīng)的裝置進(jìn)行結(jié)介紹。
圖4示出了本發(fā)明實(shí)施例中的一種服務(wù)器的結(jié)構(gòu)。參見(jiàn)圖4,本發(fā)明實(shí)施例中的一種服務(wù)器400,可以包括多個(gè)工作進(jìn)程4011~401n(n為大于1的整數(shù)),其中:
參見(jiàn)圖5,在具體實(shí)施中,本發(fā)明實(shí)施例中的工作進(jìn)程500可以分別包括判斷子單元501、更新子單元502和服務(wù)子單元503,其中:
所述判斷子單元501,適于判斷是否需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新;
所述更新子單元502,適于當(dāng)所述工作進(jìn)程判斷需要對(duì)相應(yīng)的掛載點(diǎn)配置信息進(jìn)行更新時(shí),對(duì)所述掛載點(diǎn)配置信息進(jìn)行更新。
所述服務(wù)子單元503,適于在更新過(guò)程中,繼續(xù)提供配置信息未發(fā)生變化的掛載點(diǎn)上所承載的流媒體服務(wù)。
在具體實(shí)施中,所述服務(wù)子單元503,還適于當(dāng)相應(yīng)客戶的掛載點(diǎn)配置信息更新完畢時(shí),繼續(xù)向用戶提供配置信息為發(fā)送變化的掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù)。
在具體實(shí)施中,所述更新子單元502,適于所述工作進(jìn)程從預(yù)設(shè)的配置服務(wù)器中獲取所述客戶對(duì)應(yīng)的掛載點(diǎn)配置信息;將所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的所述客戶的掛載點(diǎn)配置信息進(jìn)行比較;當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的所述客戶的掛載點(diǎn)配置信息不一致時(shí),采用從所述配置服務(wù)器中獲取的所述客戶對(duì)應(yīng)的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新。
在具體實(shí)施中,所述工作進(jìn)程500還包括存儲(chǔ)子單元504,其中:
所述存儲(chǔ)子單元504,適于當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的相應(yīng)客戶的掛載點(diǎn)配置信息一致時(shí),繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第一時(shí)間閾值。
在本發(fā)明一實(shí)施例中,所述工作進(jìn)程還包括存儲(chǔ)子,還適于當(dāng)采用所獲取的掛載點(diǎn)配置信息對(duì)本地所存儲(chǔ)的相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新完畢時(shí),所述工作進(jìn)程將從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息進(jìn)行存儲(chǔ)。
繼續(xù)參見(jiàn)圖4,在本發(fā)明一實(shí)施例中,所述服務(wù)器400還可以包括重啟單元402和工作進(jìn)程4021~402m,其中:
所述重啟單元402,適于當(dāng)重啟時(shí),獲取本地存儲(chǔ)的相應(yīng)客戶的掛載點(diǎn)配置文件,并解析得到對(duì)應(yīng)的掛載點(diǎn)配置信息;基于解析得到的掛載點(diǎn)配置信息,創(chuàng)建對(duì)應(yīng)的工作進(jìn)程4021~402m;
所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程4021~402m,適于分別從所述配置服務(wù)器中獲取相應(yīng)客戶的掛載點(diǎn)配置信息;當(dāng)確定從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息與解析得到的掛載點(diǎn)配置信息不一致時(shí),采用從所述配置服務(wù)器中獲取的掛載點(diǎn)配置信息對(duì)本地存儲(chǔ)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
其中,工作進(jìn)程4021~402m為重啟后創(chuàng)建的工作進(jìn)程,工作進(jìn)程4011~401n為重啟前創(chuàng)建的工作進(jìn)程4011~401n。
在本發(fā)明一實(shí)施例中,為了節(jié)約資源,所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程4021~402m,分別適于當(dāng)確定所獲取的掛載點(diǎn)配置信息與本地存儲(chǔ)的所述客戶的掛載點(diǎn)配置信息一致時(shí),還適于繼續(xù)保持與所述配置服務(wù)器之間的連接,直至達(dá)到預(yù)設(shè)的第二時(shí)間閾值。
在本發(fā)明一實(shí)施例中,為了降低對(duì)配置服務(wù)器的依賴程度,所創(chuàng)建的對(duì)應(yīng)的工作進(jìn)程4021~402m,還分別適于當(dāng)確定從所述配置服務(wù)器中獲取對(duì)應(yīng)的掛載點(diǎn)配置信息失敗時(shí),采用從存儲(chǔ)至本地所述客戶對(duì)應(yīng)的掛載點(diǎn)配置信息,對(duì)本地存儲(chǔ)所述客戶對(duì)應(yīng)的掛載點(diǎn)配置文件中的掛載點(diǎn)配置信息進(jìn)行更新。
采用本發(fā)明實(shí)施例中的上述方案,采用動(dòng)態(tài)更新掛載點(diǎn)配置信息的方式對(duì)掛載點(diǎn)配置信息進(jìn)行更新,當(dāng)確定需要對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用對(duì)應(yīng)的工作進(jìn)程對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新,并在對(duì)相應(yīng)客戶的掛載點(diǎn)配置信息進(jìn)行更新時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),可以避免因服務(wù)重啟所導(dǎo)致的流媒體服務(wù)中斷情形的發(fā)生,因而可以提高流媒體文件的播放質(zhì)量,提升用戶的使用體驗(yàn)。
進(jìn)一步地,在相應(yīng)客戶的掛載點(diǎn)配置信息更新完畢時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供配置信息未更新的掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),由于在相應(yīng)客戶的掛載點(diǎn)配置信息更新完畢時(shí),采用所述工作進(jìn)程繼續(xù)向用戶提供已有掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),并向用戶提供新增掛載點(diǎn)對(duì)應(yīng)的流媒體服務(wù),可以避免配置信息未更新的掛載點(diǎn)對(duì)應(yīng)的流媒體文件的多次回源,因而可以節(jié)約資源。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:ROM、RAM、磁盤(pán)或光盤(pán)等。
以上對(duì)本發(fā)明實(shí)施例的方法及系統(tǒng)做了詳細(xì)的介紹,本發(fā)明并不限于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。