本發明涉及內容分發網絡,具體涉及一種資源分發方法、裝置、電子設備及存儲介質。
背景技術:
1、隨著技術的發展,視頻服務的清晰度和流暢度不斷提升,而且隨著5g的到來,用戶對高質量視頻的需求將越來越旺盛。目前高清視頻已經成為主流,伴隨著分辨率和清晰度的提高,雖然提升了用戶的觀看體驗,但是也使流量使用急劇增加。
2、目前業界流行的視頻分發方式如圖1所示,視頻/音頻/圖片等資源部署在內容分發網絡(content?delivery?network,簡稱cdn)上,用戶需要下載資源時,直接向cdn發起資源請求,實現下載、直播和點播。用戶也可以向其他用戶請求資源,通過peer?to?peer(p2p)技術實現資源共享。但是目前的做法要提供大規模的資源共享服務,其成本高、擴展性較差,在高峰時期面對突發流量的適應性、容錯性等方面仍然存在一定缺陷。
3、此外,還有專利文獻提出基于文件塊熱度的方式,首先獲取文件塊對應的預測熱度;根據文件塊的預測熱度,從多個共享節點中選擇若干共享節點作為文件塊對應的部署共享節點;在部署共享節點部署文件塊;通過建立若干部署共享節點與文件塊的對應關系,生成文件塊索引信息。進一步地,在p2p獲取資源tracker時,文件tracker可以根據生成的文件塊索引信息,從該文件塊對應的部署共享節點上獲取文件塊。上述方案依托于無限的共享節點來提供服務,這些共享節點具有穩定在線、存儲空間較大、存儲空間中的文件緩存可以自行控制的特點,該方案同時也存在以下幾個問題:(1)針對穩定在線設備(比如路由器,光貓等)比較適用,但對于非穩定在線設備(比如電視盒子,智能燈具等)存在數據同步遷移情況;(2)文件塊的熱度基于文件塊的歷史訪問記錄,對于新產生的資源,沒有訪問記錄,難以產生熱度;(3)選擇共享節點時依賴共享節點特征,選擇海量數據時容易產生瓶頸。
技術實現思路
1、本發明提供一種資源分發方法、裝置、電子設備及存儲介質,以解決現有技術中存在的上述問題。
2、第一方面,本發明提供一種資源分發方法,應用于pcdn網絡,所述pcdn網絡包括多個pcdn節點,所述方法包括:
3、獲取點播資源的預測熱度;
4、根據所述預測熱度得到所述點播資源所要存儲的副本數量;
5、根據所述副本數量,生成對應數量的所述點播資源的存儲副本并對每個所述存儲副本標記對應的副本序號;
6、對所述點播資源進行切片,得到多個資源切片以及每個所述資源切片對應的切片信息,其中,每個所述pcdn節點存儲一個所述資源切片;
7、根據所述點播資源的屬性信息、所述存儲副本以及多個所述資源切片對應的切片信息,通過哈希計算映射到第一哈希環上的多個第一虛擬節點,所述第一虛擬節點存儲有所述資源切片的第一索引;
8、根據不同客戶端的屬性信息,通過哈希計算映射到第二哈希環上的多個第二虛擬節點,所述第二虛擬節點存儲有所述客戶端的第二索引;
9、根據所述第一索引和所述第二索引之間的映射關系,以及所述第一虛擬節點和所述第二虛擬節點的負載均衡確定向所述客戶端進行資源分發。
10、根據本發明提供的一種資源分發方法,所述對所述點播資源進行切片,得到多個資源切片以及每個所述資源切片對應的切片信息的步驟,包括:
11、若所述點播資源為單一文件資源,則根據預設的第一固定分片大小對所述點播資源進行分割切片;
12、若最后被切割的所述資源切片的大小大于或等于預設的第二固定分片大小,則確定為單獨一個所述資源切片;
13、若最后被切割的所述資源切片的大小小于所述第二固定分片大小,則將最后被切割的所述資源切片與前一個所述資源切片合并為一個所述資源切片,其中,所述第二固定分片大小為所述第一固定分片大小的一半。
14、根據本發明提供的一種資源分發方法,所述對所述點播資源進行切片,得到多個資源切片以及每個所述資源切片對應的切片信息的步驟,還包括:
15、若所述點播資源為包括至少一個資源文件的資源包文件,獲取所述資源包文件內所述資源文件的文件大小;
16、若所述資源文件的文件大小大于或等于所述第一固定分片大小,則根據所述第一固定分片大小對所述資源文件進行分割切片;
17、若所述資源文件的文件大小小于所述第一固定分片大小,則對多個所述資源文件進行分組處理;
18、若最后一個所述資源文件的大小大于或等于所述第二固定分片大小,則將最后一個所述資源文件單獨分組;
19、若最后一個所述資源文件的大小小于所述第二固定分片大小,則將最后一個所述資源文件與前一個文件大小小于所述第一固定分片大小的所述資源文件合并為一個分組。
20、根據本發明提供的一種資源分發方法,所述根據所述第一索引和所述第二索引之間的映射關系,以及所述第一虛擬節點和所述第二虛擬節點的負載均衡確定向所述客戶端進行資源分發的步驟,包括:
21、所述客戶端向分發服務同步存儲所述資源切片和所述切片信息;
22、分發服務對完成同步存儲的所述資源切片的所述第一索引和所述第二索引進行更新;
23、根據所述第一索引和所述第二索引之間的映射關系,確定所述客戶端映射的所述第一虛擬節點;
24、根據所述第一虛擬節點的資源負載情況和所述客戶端的屬性,確定所述客戶端需要更新的所述資源切片;
25、所述分發服務向所述客戶端發送資源更新請求,所述客戶端根據所述資源更新請求完成資源更新操作。
26、根據本發明提供的一種資源分發方法,在所述客戶端根據所述資源更新請求完成資源更新操作的步驟之后,還包括:
27、所述客戶端完成資源更新后與所述分發服務完成同步資源更新,分發服務對完成同步更新的所述資源切片的所述第一索引進行更新。
28、根據本發明提供的一種資源分發方法,所述資源更新請求為新增資源請求時,對應地,所述根據所述第一索引和所述第二索引之間的映射關系,以及所述第一虛擬節點和所述第二虛擬節點的負載均衡確定向所述客戶端進行資源分發的步驟,還包括:
29、根據所述第一索引和所述第二索引之間的映射關系,確定所述第一虛擬節點對應的客戶端列表;
30、根據客戶端的屬性從所述客戶端列表中確定適合存儲新增的所述資源切片的所述客戶端;
31、分發服務向所述客戶端發送資源更新請求;
32、所述客戶端根據所述資源更新請求向資源調度服務發送資源分享請求,得到所述資源切片的客戶端分享列表;
33、所述客戶端根據所述客戶端分享列表完成資源存儲操作。
34、根據本發明提供的一種資源分發方法,所述客戶端根據所述資源更新請求向資源調度服務發送資源分享請求,得到所述資源切片的客戶端分享列表的步驟,包括:
35、所述資源調度服務接收所述資源分享請求,查詢所述點播資源對應的多個資源切片,以及存儲所述點播資源的客戶端集合;
36、對每個所述資源切片從所述客戶端集合中確定參與所述pcdn網絡的客戶端,以形成客戶端分享列表返回至所述客戶端;
37、所述客戶端根據所述客戶端分享列表的播放位置對所述pcdn網絡內的資源切片進行資源分享請求,以完成所述點播資源在所述pcdn網絡的資源分享。
38、第二方面,本發明還提供一種資源分發裝置,應用于pcdn網絡,所述pcdn網絡包括多個pcdn節點,所述裝置包括:
39、預測熱度獲取模塊,用于獲取點播資源的預測熱度;
40、副本數量獲取模塊,用于根據所述預測熱度得到所述點播資源所要存儲的副本數量;
41、存儲副本標記模塊,用于根據所述副本數量,生成對應數量的所述點播資源的存儲副本并對每個所述存儲副本標記對應的副本序號;
42、點播資源切片模塊,用于對所述點播資源進行切片,得到多個資源切片以及每個所述資源切片對應的切片信息,其中,每個所述pcdn節點存儲一個所述資源切片;
43、第一哈希計算模塊,用于根據所述點播資源的屬性信息、所述存儲副本以及多個所述資源切片對應的切片信息,通過哈希計算映射到第一哈希環上的多個第一虛擬節點,所述第一虛擬節點存儲有所述資源切片的第一索引;
44、第二哈希計算模塊,用于根據不同客戶端的屬性信息,通過哈希計算映射到第二哈希環上的多個第二虛擬節點,所述第二虛擬節點存儲有所述客戶端的第二索引;
45、資源分發模塊,用于根據所述第一索引和所述第二索引之間的映射關系,以及所述第一虛擬節點和所述第二虛擬節點的負載均衡確定向所述客戶端進行資源分發。
46、第三方面,本發明還提供一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的計算機程序,所述處理器執行所述程序時實現如上述任一種所述的資源分發方法。
47、第四方面,本發明還提供一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執行時實現如上述任一種所述的資源分發方法。
48、本發明提供的一種資源分發方法、裝置、電子設備及存儲介質,首先獲取點播資源的預測熱度,根據點播資源的預測熱度生成點播資源存儲的副本數;然后對點播資源進行切片,生成資源切片以及對應的切片信息;根據點播資源的屬性信息、存儲副本以及多個資源切片對應的切片信息,通過哈希計算映射到第一哈希環上的多個第一虛擬節點,第一虛擬節點存儲有資源切片的第一索引;根據不同客戶端的屬性信息,通過哈希計算映射到第二哈希環上的多個第二虛擬節點,第二虛擬節點存儲有客戶端的第二索引;根據第一索引和第二索引之間的映射關系,以及第一虛擬節點和第二虛擬節點的負載均衡確定向客戶端進行資源分發。本發明適用于穩定在線和非穩定在線的設備,通過上述步驟可以完成資源的快速分發和擴展;同時根據資源容量和客戶端存儲容量,方便資源擴展和動態調整。