本申請涉及數據處理技術領域,特別是涉及一種應用歸屬服務集群的分配方法和一種應用歸屬服務集群的分配裝置。
背景技術:
在一個典型的分布式系統中,為了便于對存儲和計算進行管理,比較好的方式是以應用的形式對數據和任務進行隔離,將應用作為一個整體分配至一個由若干相互獨立、通過網絡互聯的計算機組成的集群。同一集群上的不同應用擁有各自獨立的存儲空間,但共享集群的計算能力。
在這種架構的分布式系統中,其消耗主要為集群的一次性購置成本和集群間跨集群通訊而產生的累積性帶寬消耗成本。其中,跨集群通訊主要是由于處于不同集群的應用之間相互訪問數據造成,由此,產生了對應用歸屬服務集群的分配優化需求,以使得在滿足計算、存儲等約束條件的同時可以最大限度降低集群的購置成本和帶寬消耗成本。
目前對應用歸屬服務集群的分配方法中,主要是依賴于用戶憑借經驗進行分配,但該方法需要耗費大量的人力物力和時間,造成分配效率較低的問題。而且,分配方案可能并非是最優方案,造成了成本的浪費。
此外,分布式系統中會不斷增加新的應用和下線部分過期應用,集群也會進行機器擴容、機器報廢等的處理,應用和集群處于一個動態變化的過程中,針對于動態變化的分布式系統,分配方案也需要檢驗是否適用于當前的分布式系統,當不適用時需要重新確定分配方案。因此,目前的分配方法可能需要人工重新進行多次分配,增加了對人力物力和時間的耗費,進一步降低了分配效率。
技術實現要素:
鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種應用歸屬服務集群的分配方法和相應的一種 應用歸屬服務集群的分配裝置。
為了解決上述問題,本申請公開了一種應用歸屬服務集群的分配方法,包括:
將多個應用分配至多個服務集群,獲得初始分配結果;
多次更換所述應用歸屬的服務集群,獲得多個新增分配結果;
計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量;
選擇資源消耗量最小的分配結果作為最優分配結果。
優選地,所述將多個應用分配至多個服務集群為:
按照排序針對各服務集群進行應用分配,直至所有應用均分配至某個服務集群;其中,針對排序在后的服務集群,在排序在前的服務集群分配后剩余的應用中進行應用分配。
優選地,在所述將多個應用分配至多個服務集群之前,所述方法還包括:
按照所述服務集群的至少一種負載性能,對多個服務集群進行排序。
優選地,在所述按照排序針對各服務集群進行應用分配之前,所述方法還包括:
計算任意兩個應用之間的關聯權重;
所述按照排序針對各服務集群進行應用分配包括:
從當前可選的多個應用中,選擇關聯權重最大的兩個目標應用,并選擇與所述目標應用之一的關聯權重排序靠前的多個關聯應用,分配至所述服務集群。
優選地,所述按照排序針對各服務集群進行應用分配還包括:
若至少一個應用未分配至所述服務集群,則將未分配的應用按照所需資源消耗量進行排序;
按照排序逐個將未分配的應用隨機分配至某一服務集群。
優選地,在所述將多個應用分配至多個服務集群之前,所述方法還包括:
以所述應用為節點,以具備數據交換的兩個應用為相鄰節點,構建包括多個應用的節點網絡圖,所述關聯權重為連接兩個應用的邊的邊權重。
優選地,所述選擇關聯權重最大的兩個目標應用包括:
查找所述節點網絡圖中邊權重最大的目標邊。
優選地,所述選擇與所述目標應用之一的關聯權重排序靠前的多個關聯應用包括:
在包含所述目標邊的子圖中,以所述目標邊的兩個目標節點為起點,進行廣度優先搜索;
從搜索的多個關聯節點中,按照與所述目標節點的邊權重從大到小,在未超出所述服務集群的負載性能的條件下,選擇最多數量的關聯節點。
優選地,在所述多次更換所述應用歸屬的服務集群,獲得多個新增分配結果之后,所述方法還包括:
確定更換后的新增分配結果未超出各服務集群的負載性能。
優選地,所述多次更換所述應用歸屬的服務集群,獲得多個新增分配結果包括:
在隨機選擇的兩個服務集群中,分別隨機選擇一個應用進行交換,直至獲得多個新增分配結果。
優選地,所述多次更換所述應用歸屬的服務集群,獲得多個新增分配結果還包括:
針對當前獲得的分配結果,依次選擇兩個分配結果,隨機從兩個分配結果中選擇兩個應用,并對選擇的兩個應用所歸屬的服務集群進行交換,獲得多個新增分配結果;
和/或,隨機選擇一個應用并對所選擇的應用歸屬的服務集群進行修改,獲得多個新增分配結果。
優選地,在所述在隨機選擇的兩個服務集群中,分別隨機選擇一個應用進行交換,直至獲得多個新增分配結果之后,所述方法還包括:
篩選資源消耗量從小到大排序靠前的多個分配結果。
優選地,所述計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量包括:
計算所述初始分配結果和所述新增分配結果各自所需的集群購置成本;
和/或,計算所述初始分配結果和所述新增分配結果中各個應用跨集群的帶寬消耗成本;加和各個應用的帶寬消耗成本,得到所述初始分配結果和所述新增分配結果的總帶寬消耗成本。
優選地,所述選擇資源消耗量最小的分配結果作為最優分配結果包括:
針對當前獲得的新增分配結果,若所述當前獲得的新增分配結果的資源消耗量小于所述初始分配結果的資源消耗量,則將所述當前獲得的新增分配結果作為當前最優分配結果,并與下一個新增分配結果進行比較,直至獲得最優分配結果。
本申請還提供了一種應用歸屬服務集群的分配裝置,包括:
應用初始分配模塊,用于將多個應用分配至多個服務集群,獲得初始分配結果;
應用多次更換模塊,用于多次更換所述應用歸屬的服務集群,獲得多個新增分配結果;
資源消耗量計算模塊,用于計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量;
最優分配結果選擇模塊,用于選擇資源消耗量最小的分配結果作為最優分配結果。
優選地,所述應用初始分配模塊具體用于:
按照排序針對各服務集群進行應用分配,直至所有應用均分配至某個服務集群;其中,針對排序在后的服務集群,在排序在前的服務集群分配后剩余的應用中進行應用分配。
優選地,所述裝置還包括:
服務集群排序模塊,用于按照所述服務集群的至少一種負載性能,對多個服務集群進行排序。
優選地,所述裝置還包括:
關聯權重計算模塊,用于計算任意兩個應用之間的關聯權重;
所述應用初始分配模塊包括:
關聯應用分配子模塊,用于從當前可選的多個應用中,選擇關聯權重最 大的兩個目標應用,并選擇與所述目標應用之一的關聯權重排序靠前的多個關聯應用,分配至所述服務集群。
優選地,所述裝置還包括:
應用排序模塊,用于若至少一個應用未分配至所述服務集群,則將未分配的應用按照所需資源消耗量進行排序;
未分配應用隨機分配模塊,用于按照排序逐個將未分配的應用隨機分配至某一服務集群。
優選地,所述裝置還包括:
節點網絡圖構建模塊,用于以所述應用為節點,以具備數據交換的兩個應用為相鄰節點,構建包括多個應用的節點網絡圖,所述關聯權重為連接兩個應用的邊的邊權重。
優選地,所述關聯應用分配子模塊包括:
目標邊查找子單元,用于查找所述節點網絡圖中邊權重最大的目標邊。
優選地,所述關聯應用分配子模塊包括:
廣度優先搜索子單元,用于在包含所述目標邊的子圖中,以所述目標邊的兩個目標節點為起點,進行廣度優先搜索;
關聯節點選擇子單元,用于從搜索的多個關聯節點中,按照與所述目標節點的邊權重從大到小,在未超出所述服務集群的負載性能的條件下,選擇最多數量的關聯節點。
優選地,所述裝置還包括:
新增分配結果確定模塊,用于確定更換后的新增分配結果未超出各服務集群的負載性能。
優選地,所述應用多次更換模塊包括:
應用交換子模塊,用于在隨機選擇的兩個服務集群中,分別隨機選擇一個應用進行交換,直至獲得多個新增分配結果。
優選地,所述應用多次更換模塊包括:
服務集群交互子模塊,用于針對當前獲得的分配結果,依次選擇兩個分配結果,隨機從兩個分配結果中選擇兩個應用,并對選中的兩個應用所歸屬 的服務集群進行交換,獲得多個新增分配結果
服務集群修改子模塊,用于隨機選擇一個應用并對所選擇的應用歸屬的服務集群進行修改,獲得多個新增分配結果。
優選地,所述裝置還包括:
分配結果篩選模塊,用于篩選資源消耗量從小到大排序靠前的多個分配結果。
優選地,所述資源消耗量計算模塊包括:
集群購置成本計算子模塊,用于計算所述初始分配結果和所述新增分配結果各自所需的集群購置成本;
帶寬消耗成本計算子模塊,用于計算所述初始分配結果和所述新增分配結果中各個應用跨集群的帶寬消耗成本;加和各個應用的帶寬消耗成本,得到所述初始分配結果和所述新增分配結果的總帶寬消耗成本。
優選地,所述最優分配結果選擇模塊包括:
分配結果比較子模塊,用于針對當前獲得的新增分配結果,若所述當前獲得的新增分配結果的資源消耗量小于所述初始分配結果的資源消耗量,則將所述當前獲得的新增分配結果作為當前最優分配結果,并與下一個新增分配結果進行比較,直至獲得最優分配結果。
本申請實施例包括以下優點:
根據本申請實施例,基于初始分配結果進行應用歸屬的服務集群的多次更換處理,以獲得多個新增分配結果,通過對多個新增分配結果對服務集群的資源消耗量的計算和比較,由此確定最優分配結果,從而提升了應用歸屬服務集群的分配效率,同時保證了得到的分配方案可以有效地節省服務集群的資源消耗成本。
而且,本申請實施例可以針對動態變化的分布式系統而自動確定出最優分配結果,無須人工進行多次分配,進一步提升了應用歸屬服務集群的分配效率。
附圖說明
圖1是本申請的一種應用歸屬服務集群的分配方法實施例一的步驟流程 圖;
圖2是本申請的一種應用歸屬服務集群的分配方法實施例二的步驟流程圖;
圖3是本申請的一種應用歸屬服務集群的分配裝置實施例一的結構框圖;
圖4是本申請的一種應用歸屬服務集群的分配裝置實施例二的結構框圖;
圖5是本申請一種基于節點網絡圖的構建示意圖;
圖6是本申請一種應用歸屬服務集群的分配結果示意圖。
具體實施方式
為使本申請的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和具體實施方式對本申請作進一步詳細的說明。
參照圖1,示出了本申請的一種應用歸屬服務集群的分配方法實施例一的步驟流程圖,具體可以包括如下步驟:
步驟101,將多個應用分配至多個服務集群,獲得初始分配結果。
上述的應用可以為一組數據和程序的集合,用于將不同歸屬的數據和計算,在邏輯上進行相互隔離的單位。也可以將應用理解為關系型數據庫中數據實例的概念。一個分布式系統可以具有多個服務集群。服務集群由若干臺相互獨立、通過網絡互聯的計算機組成的計算機群或服務器組。一個服務集群以一個整體的方式提供存儲和計算能力。不同服務集群之間可以通過網絡傳輸的方式進行數據交互等的通訊任務。
在本申請實施例的具體實現中,可以首先將多個應用分配至多個服務集群,得到初始的分配結果。初始的分配方式可以有多種,例如可以隨機分配,也可以按照服務集群的負載性能對多個服務集群進行排序,按照排序分配應用。
步驟102,多次更換所述應用歸屬的服務集群,獲得多個新增分配結果。
針對初始分配結果,可以多次更換應用歸屬的服務集群。每一次更換都會產生一個新的分配結果,多次更換后即可獲得多個新的分配結果。更換時 可以隨機更換,也可以按照一定的規則進行更換。例如,針對服務集群編號,按照編號順序更換,本申請實施例對更換的方式不作限制。
隨機更換應用歸屬的服務集群的方式可以有多種,例如,可以在服務集群中隨機選擇兩個服務集群,分別隨機選擇一個應用,交換分配至所選擇的另一個服務集群;或者,可以在任意兩個服務集群中分別隨機選擇兩個應用,將兩個應用歸屬的服務集群進行交換。本領域技術人員可以根據實際需要,采用各種方式更換應用歸屬的服務集群,以獲得多個分配結果。
作為本申請實施例的優選示例,在所述步驟102之后,所述方法可以還包括:
確定更換后的新增分配結果未超出各服務集群的負載性能。
作為最優分配結果的候選分配結果需要符合服務集群的負載性能,以保證分配結果可以實施。因此,更換應用歸屬的服務集群后,需要確定更換后的分配結果中,各個服務集群的負載性能依然能滿足實現該分配結果。
步驟103,計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量。
需要說明的是,服務集群根據其所包含的計算機數量具有不同的購置成本、最大存儲量和cpu總核數,各服務集群也具有一定的出口帶寬;分配于服務集群中的每個應用需要一定的存儲空間,應用之間也可能需要進行數據交互,即具有一定的數據交換量。跨集群的數據交互需要消耗一定的集群的出口帶寬,造成出口帶寬成本。由此,不同的應用分配方案,會產生不同的集群購置成本和帶寬消耗成本。而且,根據集群的最大存儲量和cpu總核數,每個集群所能存儲和運行的應用也會受到一定約束條件的分配限制。假設系統中具有n個服務集群和m個應用,需要將m個應用分配至n’(n’≤n)個服務集群,最優的分配結果可以為n’個集群的總購置成本+跨集群的帶寬消耗成本最小。實際應用中,最優的分配結果可以由本領域技術人員根據實際情況進行定義,例如僅將集群的總購置成本最小作為最優的分配結果,或集群總購置成本+維護成本最小作為最優的分配結果。
服務集群的資源消耗量可以包括集群購置成本和/或帶寬消耗成本,也可 以是其他的配置集群和運行集群所消耗的成本。
可以計算初始分配結果和多個新增分配結果各自對服務集群的資源消耗量,以便進一步比較各個分配結果的資源消耗量。
步驟104,選擇資源消耗量最小的分配結果作為最優分配結果。
在得到多個候選的分配結果及計算得到各自的資源消耗量后,可以從中選擇資源消耗量最小的分配結果作為最優分配結果。實際應用中,也可以在得到一個新增分配結果后,與初始分配結果進行比較,若新增分配結果的資源消耗量小于初始分配結果的資源消耗量,則將新增分配結果作為最優分配結果。也可以進一步地獲取下一個新增分配結果,與上一個新增分配結果進行比較,重復多次的新增分配結果獲取和比較,直到得到最優的分配結果。還可以經過一定次數的與新增分配結果比較后,將資源消耗最小的分配結果作為最優分配結果。
根據本申請實施例,基于初始分配結果進行應用歸屬的服務集群的多次更換處理,以獲得多個新增分配結果,通過對多個新增分配結果對服務集群的資源消耗量的計算和比較,由此確定最優分配結果,從而提升了應用歸屬服務集群的分配效率,同時保證了得到的分配方案可以有效地節省服務集群的資源消耗成本。
而且,本申請實施例可以針對動態變化的分布式系統而自動確定出最優分配結果,無須人工進行多次分配,進一步提升了應用歸屬服務集群的分配效率。
參照圖2,示出了本申請的一種應用歸屬服務集群的分配方法實施例二的步驟流程圖,具體可以包括如下步驟:
步驟201,按照所述服務集群的至少一種負載性能,對多個服務集群進行排序。
上述的負載性能可以包括每一個服務集群的最大存儲量、cpu總核數、各服務集群間的出口平均帶寬成本中至少一種。負載性能也可以包括其他的服務集群的處理能力指標。可以按照服務集群的負載性能對多個服務集群進 行排序。具體的排序方式可以有多種,例如分別按照不同的負載性能進行排序,或者針對負載性能設置權重,根據服務集群的多個負載性能的綜合權重排序。排序可以是升序,也可以是降序。本領域技術人員可以根據實際情況,按照負載性能進行排序,本申請實施例對此不作限制。
步驟202,按照排序針對各服務集群進行應用分配,直至所有應用均分配至某個服務集群;其中,針對排序在后的服務集群,在排序在前的服務集群分配后剩余的應用中進行應用分配,獲得初始分配結果。
在確定服務集群的排序后,可以按照排序進行應用分配。分配時可以優先將應用分配至排序靠前的服務集群,排序在前的服務集群分配完畢后再將剩余的應用分配至排序在后的服務集群。
實際應用中,分配可以具有一定的約束條件,例如,服務集群所能分配的應用的總數據量不超過服務集群的最大存儲量的90%;或者,服務集群內的應用在任一時間點對服務集群的內存和cpu消耗不超過其最大處理能力的80%;或者,單個應用不得分別分配至不同的服務集群,而必須完整地分配至同一個服務集群;也可以采用上述多個約束條件的組合。當然,本領域技術人員可以根據實際情況設定各種約束條件或約束條件的組合,本申請實施例不限制約束條件的具體內容和約束條件的組合方式。
對各服務集群進行應用分配的處理,可以循環處理直至所有應用均分配至某個應用,并最終得到初始分配結果。或者,直至無法再滿足約束條件為止。
作為本申請實施例的優選示例,在所述按照排序針對各服務集群進行應用分配之前,所述方法可以還包括:
計算任意兩個應用之間的關聯權重。
所述按照排序針對各服務集群進行應用分配可以包括:
從當前可選的多個應用中,選擇關聯權重最大的兩個目標應用,并選擇與所述目標應用之一的關聯權重排序靠前的多個關聯應用,分配至所述服務集群。
可以計算任意兩個應用之間的數據交換量,以作為應用之間的關聯權 重。在計算得到全部應用之間的關聯權重后,可以選擇關聯權重最大的兩個應用作為目標應用。基于選擇的兩個目標應用,可以繼續選擇與任意一個目標應用的關聯權重較大的其他關聯應用,分配至與目標應用所屬的服務集群中。
因為處于同一服務集群中的應用之間在交換數據時可以不占用服務集群的出口帶寬,因此,可以盡量將相互間數據交換量較大的應用分配至同一個服務集群中,以減少服務集群間的數據交換量,降低對服務集群的帶寬占用。
作為本申請實施例的優選示例,所述按照排序針對各服務集群進行應用分配還包括:
若至少一個應用未分配至所述服務集群,則將未分配的應用按照所需資源消耗量進行排序;按照排序逐個將未分配的應用隨機分配至某一服務集群。
對于剩余的未分配應用,可以按照未分配應用所需資源消耗量進行降序排序,按照排序逐個將未分配應用隨機分配至一個可容納該應用的服務集群中。其中,隨機分配可能要反復若干次,直至分配到可容納該應用的服務集群。所需資源消耗量可以為購置成本,帶寬占用,應用所需的存儲空間,應用運行時需要占用的內存等資源消耗量中至少一種或多種的組合。
作為本申請實施例的優選示例,在所述步驟202之前,所述方法可以還包括:
以所述應用為節點,以具備數據交換的兩個應用為相鄰節點,構建包括多個應用的節點網絡圖,所述關聯權重為連接兩個應用的邊的邊權重。
從圖的角度考慮,可以基于應用構成圖模型,通過圖算法的方式得到初始分配結果。具體地,可以以應用作為圖的節點,以具備數據交換的任意兩個應用作為相鄰的節點,代表應用之間數據交換量的關聯權重作為兩個應用節點的邊的邊權重,從而構建包括有多個應用的節點網絡圖。
作為本申請實施例的優選示例,所述選擇關聯權重最大的兩個目標應用包括:
查找所述節點網絡圖中邊權重最大的目標邊。
節點網絡圖中的兩個節點的邊權重表示兩個應用之間的關聯權重,選擇關聯權重最大的兩個目標應用,可以通過在節點網絡圖中查找邊權重最大的目標邊而實現,查找到的目標邊所連接兩個節點,即對應于關聯權重最大的兩個目標應用。
作為本申請實施例的優選示例,所述選擇與所述目標應用之一的關聯權重排序靠前的多個關聯應用可以包括:
子步驟s11,在包含所述目標邊的子圖中,以所述目標邊的兩個目標節點為起點,進行廣度優先搜索。
子步驟s12,從搜索的多個關聯節點中,按照與所述目標節點的邊權重從大到小,在未超出所述服務集群的負載性能的條件下,選擇最多數量的關聯節點。
可以將包含有目標邊的節點形成一個子圖,以目標節點為起點進行廣度優先搜索(breadthfirstsearch,bfs)。廣度優先搜索是一種圖搜索算法,區別于深度優先搜索,其從某個節點開始,沿著圖的寬度遍歷各個節點,直至圖中的全部節點被訪問完畢才終止搜索計算。
從搜索得到的多個關聯節點中,可以按照與目標節點的邊權重從大到小的順序,在滿足服務集群的負載性能的條件下,選擇數量最多的關聯節點,即選擇了與任意一個目標應用的關聯權重排序靠前的多個關聯應用。
為了便于本領域技術人員理解本申請實施例,圖5示出了本申請一種基于節點網絡圖的構建示意圖。從圖中可見,將應用作為節點,將應用間的關聯權重作為節點的邊權重。其中,首先查找到未被分配的、邊權重最大的目標邊,同時目標邊連接的兩個節點所對應的目標應用需要滿足一定的約束條件。在包含有目標邊的子圖中,以目標節點為起點進行廣度優先搜索,不斷地將與目標節點相鄰的其他節點、按照邊權重從大到小的順序進行擴展,將子圖中的其他節點加入到由目標節點及多個關聯節點形成的圖塊中,直至子圖中所有節點均被關聯,或已無法滿足約束條件。圖5中的節點1、節點2、節點3和節點4形成一個圖塊,節點5、節點6和節點9以及節點7和節點 8分別形成另外的圖塊。即,應用1、應用2、應用3和應用4被分配至一個服務集群,應用5、應用6和應用9以及應用7和應用8分別分配至其他的兩個服務集群。相應的,參考圖6示出了本申請一種應用歸屬服務集群的分配結果示意圖。如圖6,上述9個應用分別被分配至服務集群a、服務集群b和服務集群c。
利用應用和應用間的關聯權重構建基于邊權重關聯各個節點的節點網絡圖,可以將如何使得分配至同一服務集群的應用之間的數據交換量盡量大、同時使得服務集群之間的數據交換量盡量小的問題,轉換成如何使得圖塊之內的多個應用間邊權重盡量大、而圖塊間的邊權重盡量小的問題。通過以目標節點展開廣度優先搜索,按照其他節點的邊權重大小順序進行擴展關聯,使得圖塊之內多個節點之間的邊權重之和盡量大,而圖塊之間的邊權重之和盡量小。即,同一服務集群的應用之間的數據交換量盡量大,而服務集群之間的數據交換量盡量小。
步驟203,多次更換所述應用歸屬的服務集群,獲得多個新增分配結果。
作為本申請實施例的優選示例一,所述步驟203可以包括:
子步驟s21,在隨機選擇的兩個服務集群中,分別隨機選擇一個應用進行交換,直至獲得多個新增分配結果。
針對于初始分配結果中的多個服務集群,可以在服務集群中隨機選擇兩個服務集群,分別隨機選擇一個應用,交換分配至所選擇的另一個服務集群,從而可以獲得新增的分配結果。可以反復進行多次的交換,以獲得多個新增分配結果。新增分配結果的具體數量可以由本領域技術人員根據實際情況設定。作為本申請實施例的優選示例,在所述子步驟s21之后,所述方法可以還包括:篩選資源消耗量從小到大排序靠前的多個分配結果。
具體地,可以針對當前獲得的多個新增分配結果,可以按照其資源消耗量從小到大進行排序,將排序靠前的若干個分配結果篩選出。
作為本申請實施例的優選示例二,所述步驟203可以包括:子步驟s22,針對當前獲得的分配結果,依次選擇兩個分配結果,隨機從兩個分配結果中選擇兩個應用,并對選擇的兩個應用所歸屬的服務集群進行交換,獲得多個 新增分配結果。
針對于當前獲得的多個分配結果,可以從中依次選擇兩個分配結果,在選擇的分配結果中分別選擇兩個應用,對所選擇的兩個應用所歸屬的服務集群進行交換,從而產生了新增分配結果。可以反復進行多次的交換,以獲得多個新增分配結果。
作為本申請實施例的優選示例三,所述步驟203可以包括:
子步驟s23,隨機選擇一個應用并對所選擇的應用歸屬的服務集群進行修改,獲得多個新增分配結果。
可以在任意一個服務集群中,隨機選擇一個應用,并將選擇的應用分配至其他服務集群,以獲得新增分配結果。同樣,可以反復多次隨機選擇應用并重新分配應用至其他服務集群,以獲得多個新增分配結果。
步驟204,計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量。
作為本申請實施例的優選示例,所述步驟204可以包括:
子步驟s31,計算所述初始分配結果和所述新增分配結果各自所需的集群購置成本。
可以針對初始分配結果和新增分配結果,計算各個分配結果所需的集群購置成本。
和/或,子步驟s32,計算所述初始分配結果和所述新增分配結果中各個應用跨集群的帶寬消耗成本;加和各個應用的帶寬消耗成本,得到所述初始分配結果和所述新增分配結果的總帶寬消耗成本。
可以針對初始分配結果和多個新增的分配結果,計算各個分配結果中,各個應用之間跨集群交互數據時所對服務集群的帶寬消耗成本。將各個應用的帶寬消耗成本加和,分別得到各個分配結果的總帶寬消耗成本。
實際應用中,上述子步驟s21和步驟204可以利用模擬退火算法(simulatedannealing,sa),實現獲得新增分配結果,并計算各個新增分配結果對服務集群的資源消耗量,以最終獲得最優分配結果的處理。模擬退火算法是一種通用概率算法,通常用于在一個較大的搜索空間內計算最優結 果。
具體地,模擬退火算法中的初始解狀態s的概念可以用于表示初始分配結果,即迭代計算的起點;s′可以表示新增分配結果。每一次的隨機更換應用歸屬的服務集群而獲得新增分配結果,即產生新解s’,并累計迭代次數一次。通過計算公式δt′=c(s′)-c(s)計算資源消耗量的增量;其中,c(s)為表示分配結果的資源消耗量的評價函數,δt′為該次迭代計算得到的資源消耗量增量。
當δt′小于0,即新增分配結果的資源消耗量小于之前的分配結果,可以接受s′作為新的當前解。重復隨機更換應用歸屬的服務集群獲得新增分配結果的步驟,以對新增分配結果的資源消耗量增量進行迭代計算,滿足終止條件后則將終止迭代計算并將當前解作為最優解,即最優的分配結果。終止條件可以為連續n個新解均沒有被接受,也可以為新增結果無法滿足約束條件,還可以是獲得足夠多的被接受的當前解,當前解的數量應盡可能大,以保證后續可以獲得最優解。當然,本領域技術人員也可以根據實際情況設定當前解的數量。
實際應用中,上述子步驟s22、s23和步驟204可以利用遺傳算法(geneticalgorithm,ga),實現獲得新增分配結果并計算各個新增分配結果對服務集群的資源消耗量,以最終獲得最優分配結果的處理。遺傳算法是借鑒生物界的進化規律演化而來的隨機搜索方法。
具體地,可以將各個應用作為染色體進行編碼,將m個應用從0-m編號,n個服務集群從0-n編號,得到一個m維的染色體向量,每一維代表一個應用,對應取值為[0,n),表示該應用當前分配的集群索引,即該應用所屬的服務集群編號。
可以設置進化代數t=0,設置最大進化代數t,隨機生成m個個體的集合作為初始群體p(0),即初始分配結果。計算初始群體p(0)中的適應度,適應度可以通過計算該分配結果所需資源消耗量的倒數得到。分配結果所需資源消耗量越大,表示適應度越低,反之亦然。
在實際應用中,評價函數和適應度均為分配結果所需資源消耗量的表示 方式,本領域技術人員可以根據實際情況任意選用,例如,在利用遺傳算法獲得新增分配結果時,可以用評價函數表示分配結果所需資源消耗量;在利用模擬退火算法獲得新增分配結果時,也可以用適應度表示分配結果所需資源消耗量。
針對于上述的子步驟s22,利用遺傳算法框架實現獲得新增分配結果的具體處理中,可以針對染色體進行交叉運算,將交叉算子作用于群體。具體地,可以在初始群體p(0)的染色體中隨機選取兩個染色體,在滿足約束條件的前提下相互交互取值,即對兩個應用歸屬的服務集群進行交換,獲得新增分配結果。
或者,針對于上述的子步驟s23,利用遺傳算法框架實現獲得新增分配的具體處理中,可以針對染色體進行變異運算,將變異算子作用于群體,即對群體中的個體串的某些基因座上的基因值作變動。具體地,可以在初始群體p(0)的染色體中隨機選取一個染色體,在滿足約束條件的前提下修改索引值,即隨機選擇一個應用并對所選擇的應用歸屬的服務集群進行修改,獲得新增分配結果。
針對于上述的步驟204,即針對交叉運算和/或變異運算后,從群體p(t)進化到下一代群體p(t+1),利用遺傳算法框架計算資源消耗量的具體處理中,可以計算群體p(t+1)的適應度。當多次進化,進化代數t累計到最大進化代數t后則終止迭代計算,將進化過程中具有最大適應度的群體作為最優解,即最優分配結果。
由于每一步交叉運算和變異運算都會對進化是否滿足約束條件進行檢查,因此整個進化過程均可得到有效的分配結果,保證了進化的合理性。
需要說明的是,上述子步驟s21-子步驟s23的執行順序僅為示例,實際應用中,可以根據上述提供的一種或多種方式按照不同次序的組合以獲得多個新增的分配結果。例如先執行子步驟s21,再執行子步驟s23,最后執行子步驟s22。
需要說明的是,實際應用中可以采用多種方式結合模擬退火算法和遺傳算法計算獲得最優分配結果。例如,可以先利用模擬退火算法獲得大量的分 配結果,然后利用遺傳算法控制分配結果的優化方向,以便接近最優分配結果;或者也可以先利用遺傳算法中的變異運算,獲得若干新增分配結果,再基于得到的若干分配結果,利用模擬退火算法獲得大量的分配結果,最后再利用遺傳算法中的交叉運算獲得最優分配結果。
當結合模擬退火算法和遺傳算法獲得最優分配結果時,兩種算法所對應計算的資源消耗量可以為相同種類的資源的消耗,也可以不同。例如,模擬退火算法所計算的資源消耗量針對于集群購置成本的消耗,而遺傳算法所計算的是帶寬成本的消耗。
此外,除了使用遺傳算法獲得最優分配結果,本領域技術也可以采用其他的算法獲得最優分配結果,例如蟻群算法、粒子群算法等。
步驟205,針對當前獲得的新增分配結果,若所述當前獲得的新增分配結果的資源消耗量小于所述初始分配結果的資源消耗量,則將所述當前獲得的新增分配結果作為當前最優分配結果,并與下一個新增分配結果進行比較,直至獲得最優分配結果。
針對于當前獲得的多個新增分配結果,可以將當前獲得的新增分配結果與初始分配結果的資源消耗量進行比較。若當前獲得的新增分配結果的資源消耗量小于初始分配結果的資源消耗量,則將當前獲得的新增分配結果作為當前最優分配結果,反之則繼續將下一新增分配結果與初始分配結果的資源消耗量進行比較。針對當前最優分配結果,可以與下一個新增分配結果進行比較,反復進行比較并確定當前最優分配結果,直至獲得資源消耗量最小的分配結果,將其作為最優分配結果。或者,針對出現了新增分配結果的集群購置成本大于初始分配結果的資源消耗量的比較結果的出現次數進行統計,當出現的次數超出預設次數,則將候選分配結果中資源消耗量最小的分配結果作為最優分配結果。
根據本申請實施例,通過節點網絡圖得到初始分配結果,并進一步通過模擬退火算法和/或遺傳算法得到最優分配結果,從而提升了應用歸屬服務集群分配的效率。而且,所得到的分配方案更接近最優方案,節省了分布式系統部署和運行的成本。
而且,本申請實施例可以針對動態變化的分布式系統而自動確定出最優分配結果,無須人工進行多次分配,進一步提升了應用歸屬服務集群的分配效率。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請實施例并不受所描述的動作順序的限制,因為依據本申請實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作并不一定是本申請實施例所必須的。
參照圖3,示出了本申請的一種應用歸屬服務集群的分配裝置實施例一的結構框圖,具體可以包括如下模塊:
應用初始分配模塊301,用于將多個應用分配至多個服務集群,獲得初始分配結果。
應用多次更換模塊302,用于多次更換所述應用歸屬的服務集群,獲得多個新增分配結果。
資源消耗量計算模塊303,用于計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量。
最優分配結果選擇模塊304,用于選擇資源消耗量最小的分配結果作為最優分配結果。
根據本申請實施例,基于初始分配結果進行應用歸屬的服務集群的多次更換處理,以獲得多個新增分配結果,通過對多個新增分配結果對服務集群的資源消耗量的計算和比較,由此確定最優分配結果,從而提升了應用歸屬服務集群的分配效率,同時保證了得到的分配方案可以有效地節省服務集群的資源消耗成本。
而且,本申請實施例可以針對動態變化的分布式系統而自動確定出最優分配結果,無須人工進行多次分配,進一步提升了應用歸屬服務集群的分配效率。
參照圖4,示出了本申請的一種應用歸屬服務集群的分配裝置實施例二的結構框圖,具體可以包括如下模塊:
服務集群排序模塊401,用于按照所述服務集群的至少一種負載性能,對多個服務集群進行排序。
節點網絡圖構建模塊402,用于以所述應用為節點,以具備數據交換的兩個應用為相鄰節點,構建包括多個應用的節點網絡圖,所述關聯權重為連接兩個應用的邊的邊權重。
應用初始分配模塊403,用于將多個應用分配至多個服務集群,獲得初始分配結果。
應用多次更換模塊404,用于多次更換所述應用歸屬的服務集群,獲得多個新增分配結果。
資源消耗量計算模塊405,用于計算所述初始分配結果和所述新增分配結果各自對所述服務集群的資源消耗量。
最優分配結果選擇模塊406,用于選擇資源消耗量最小的分配結果作為最優分配結果。
作為本申請實施例的優選示例,所述應用初始分配模塊403可以具體用于:
按照排序針對各服務集群進行應用分配,直至所有應用均分配至某個服務集群;其中,針對排序在后的服務集群,在排序在前的服務集群分配后剩余的應用中進行應用分配。
作為本申請實施例的優選示例,所述裝置可以還包括:
關聯權重計算模塊,用于計算任意兩個應用之間的關聯權重。
所述應用初始分配模塊403可以包括:
關聯應用分配子模塊,用于從當前可選的多個應用中,選擇關聯權重最大的兩個目標應用,并選擇與所述目標應用之一的關聯權重排序靠前的多個關聯應用,分配至所述服務集群。
作為本申請實施例的優選示例,所述裝置可以還包括:
應用排序模塊,用于若至少一個應用未分配至所述服務集群,則將未分 配的應用按照所需資源消耗量進行排序。
未分配應用隨機分配模塊,用于按照排序逐個將未分配的應用隨機分配至某一服務集群。
作為本申請實施例的優選示例一,所述關聯應用分配子模塊可以包括:
目標邊查找子單元,用于查找所述節點網絡圖中邊權重最大的目標邊。
作為本申請實施例的優選示例二,所述關聯應用分配子模塊可以包括:
廣度優先搜索子單元,用于在包含所述目標邊的子圖中,以所述目標邊的兩個目標節點為起點,進行廣度優先搜索。
關聯節點選擇子單元,用于從搜索的多個關聯節點中,按照與所述目標節點的邊權重從大到小,在未超出所述服務集群的負載性能的條件下,選擇最多數量的關聯節點。
作為本申請實施例的優選示例,所述裝置可以還包括:
新增分配結果確定模塊,用于確定更換后的新增分配結果未超出各服務集群的負載性能。
作為本申請實施例的優選示例,所述應用多次更換模塊404可以包括:
應用交換子模塊,用于在隨機選擇的兩個服務集群中,分別隨機選擇一個應用進行交換,直至獲得多個新增分配結果。
作為本申請實施例的優選示例,所述應用多次更換模塊404可以包括:
服務集群交互子模塊,用于針對當前獲得的分配結果,依次選擇兩個分配結果,隨機從兩個分配結果中選擇兩個應用,并對選中的兩個應用所歸屬的服務集群進行交換,獲得多個新增分配結果。
服務集群修改子模塊,用于隨機選擇一個應用并對所選擇的應用歸屬的服務集群進行修改,獲得多個新增分配結果。
作為本申請實施例的優選示例,所述裝置可以還包括:
分配結果篩選模塊,用于篩選資源消耗量從小到大排序靠前的多個分配結果。
作為本申請實施例的優選示例,所述資源消耗量計算模塊405可以包括:
集群購置成本計算子模塊,用于計算所述初始分配結果和所述新增分配 結果各自所需的集群購置成本。
帶寬消耗成本計算子模塊,用于計算所述初始分配結果和所述新增分配結果中各個應用跨集群的帶寬消耗成本;加和各個應用的帶寬消耗成本,得到所述初始分配結果和所述新增分配結果的總帶寬消耗成本。
作為本申請實施例的優選示例,所述最優分配結果選擇模塊406可以包括:
分配結果比較子模塊,用于針對當前獲得的新增分配結果,若所述當前獲得的新增分配結果的資源消耗量小于所述初始分配結果的資源消耗量,則將所述當前獲得的新增分配結果作為當前最優分配結果,并與下一個新增分配結果進行比較,直至獲得最優分配結果。
根據本申請實施例,通過節點網絡圖得到初始分配結果,并進一步通過模擬退火算法和/或遺傳算法得到最優分配結果,從而提升了應用歸屬服務集群分配的效率。而且,所得到的分配方案更接近最優方案,節省了分布式系統部署和運行的成本。
而且,本申請實施例可以針對動態變化的分布式系統而自動確定出最優分配結果,無須人工進行多次分配,進一步提升了應用歸屬服務集群的分配效率。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本申請實施例的實施例可提供為方法、裝置、或計算機程序產品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程 序產品的形式。
在一個典型的配置中,所述計算機設備包括一個或多個處理器(cpu)、輸入/輸出接口、網絡接口和內存。內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或閃存(flashram)。內存是計算機可讀介質的示例。計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限于相變內存(pram)、靜態隨機存取存儲器(sram)、動態隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(cd-rom)、數字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非持續性的電腦可讀媒體(transitorymedia),如調制的數據信號和載波。
本申請實施例是參照根據本申請實施例的方法、終端設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理終端設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理終端設備上,使得在計算機或其他可編程終端設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程終端設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本申請實施例的優選實施例,但本領域內的技術人員一旦得知了基本創造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優選實施例以及落入本申請實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本申請所提供的一種應用歸屬服務集群的分配方法和一種應用歸屬服務集群的分配裝置,進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術人員,依據本申請的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本申請的限制。