一種計算資源的分配方法和裝置與流程
2023-05-23 00:50:16 3
一種計算資源的分配方法和裝置【技術領域】本發明涉及計算機集群技術領域,特別涉及一種計算資源的分配方法和裝置。
背景技術:
計算機集群,簡稱集群,是一種計算機系統,它通過一組鬆散集成的計算機軟體和/或硬體連接起來作為計算資源,高度緊密地協作完成計算工作。集群系統中的單個計算機通常稱為計算節點,一般通過區域網等方式連接。集群的特點是通過多臺計算機完成同一個工作,有效利用群組中的計算資源,可以改進單個計算機在計算速度和/或可靠性上的局限,達到更高的效率。集群中每臺計算機完成的內容、工作過程等完全一樣,如果一臺死機,另一臺可以起作用,具有較高的穩定性。現有計算資源的分配裝置有兩種:一是虛擬化技術,二是計算節點多實例化技術。所述虛擬化技術是計算機元件在虛擬的基礎上而不是真實的基礎上運行的技術。虛擬化技術可以將計算資源和環境進行較為底層的隔離,用戶自由度高,但技術複雜,實現代價較高。所述計算節點多實例化技術是通過網際網路進行傳輸使計算分布在大量的分布式計算機上,而非本地計算機或遠程伺服器中。計算節點多實例化技術的隔離層次較高,實現代價較小,用戶自由度低,但存在計算節點之間在資源上相互幹擾的問題。
技術實現要素:
有鑑於此,本發明提供了一種計算資源的分配方法和裝置,有效實現計算資源的隔離及調度,同時保留計算機用戶較高的自由度,且其實現代價低,可提高計算資源利用率和系統的靈活程度,可以允許用戶自主選擇多種語言實現了語言無關性。具體技術方案如下:一種計算資源的分配方法,該方法包括以下步驟:預先構建計算資源環境,確定所用的計算組以及各計算組中的計算節點;接收用戶發送的請求,解析得到該用戶的業務信息以及請求執行的用戶代碼,所述業務信息包括用戶有權使用的計算組組別和用戶有權使用的各計算組的配額屬性;為不同的域名或網址設定流量轉發的目標計算組,形成流量轉發規則;根據子用戶發送的請求,確定流量中的域名或網址,結合所述用戶的業務信息,利用確定的域名或網址在所述流量轉發規則中查詢得到該域名或網址對應的目標計算組;查詢目標計算組內的動態負載信息,根據查詢到的動態負載信息,調整轉發的目標計算組中的目標計算節點;將所述請求執行的用戶代碼發送到確定的目標計算節點執行。根據本發明一優選實施例,所述計算節點包括:普通計算節點、虛擬機計算節點或物理機計算節點。根據本發明一優選實施例,當所述計算節點為普通計算節點時,所述預先構建計算資源環境包括:查詢各計算節點佔用的資源分片信息,利用查找到的資源分片信息初始化計算節點,從而對計算節點進行資源限制,所述資源分片信息包括CPU、內存、上下行帶寬值的使用量。根據本發明一優選實施例,所述查詢各計算節點佔用的資源分片信息,包括:利用CGROUPS腳本查詢計算節點佔用的資源分片信息。根據本發明一優選實施例,當所述計算節點為普通計算節點時,所述預先構建計算資源環境包括:為各計算節點指定不同的在運行時參考的根目錄位置,在初始化計算節點時,將各計算節點在運行時參考的根目錄位置更改為指定的根目錄位置,從而對計算節點進行路徑隔離。根據本發明一優選實施例,所述更改為指定的根目錄位置,包括:利用CHROOT命令將各計算節點在運行時參考的根目錄位置更改為指定的根目錄位置。根據本發明一優選實施例,所述調整轉發的目標計算組中的目標計算節點,還包括:根據各計算組的動態負載信息和配額屬性進行調節所述目標計算節點的數量。根據本發明一優選實施例,所述動態負載信息包括各計算節點及各計算節點的權值,所述權值的大小與各計算節點的負載成反比關係;所述調整轉發的目標計算組中的目標計算節點,包括:根據各計算節點的權值的大小確定轉發的目標計算節點。一種計算資源的分配裝置,該裝置包括:計算環境構建模塊,用於預先構建計算資源環境,確定所用的計算組以及各計算組中的計算節點;管理平臺模塊,用於接收用戶發送的請求,解析得到該用戶的業務信息以及請求執行的用戶代碼,傳輸至調度模塊,所述業務信息包括用戶有權使用的計算組組別和用戶有權使用的各計算組的配額屬性;流量路由模塊,用於根據子用戶發送的請求,確定流量中的域名或網址;調度模塊,用於為不同的域名或網址設定流量轉發的目標計算組,形成流量轉發規則;以及,用於結合所述管理平臺模塊得到用戶的業務信息,根據所述流量路由模塊確定的域名或網址在所述流量轉發規則中查詢得到該域名或網址對應的目標計算組;查詢目標計算組內的動態負載信息,並根據查詢到的動態負載信息,調整轉發的目標計算組中的目標計算節點,觸發代碼分發模塊的代碼發送至目標計算節點;代碼分發模塊,用於在受到所述調度模塊的觸發後,將所述用戶代碼發送到所述流量路由模塊確定的目標計算節點執行。根據本發明一優選實施例,所述計算節點包括:普通計算節點、虛擬機計算節點或物理機計算節點。根據本發明一優選實施例,當所述計算節點為普通計算節點時,所述計算環境構建模塊包括:資源限制設定單元,用於查詢各計算節點佔用的資源分片信息,利用查找到的資源分片信息初始化計算節點,從而對計算節點進行資源限制,所述資源分片信息包括CPU、內存、上下行帶寬值的使用量。根據本發明一優選實施例,所述資源限制設定單元中利用CGROUPS腳本查詢計算節點佔用的資源分片信息。根據本發明一優選實施例,當所述計算節點為普通計算節點時,所述計算環境構建模塊包括:路徑隔離單元,用於為各計算節點指定不同的在運行時參考的根目錄位置,在初始化計算節點時,將各計算節點在運行時參考的根目錄位置更改為指定的根目錄位置,從而對計算節點進行路徑隔離。根據本發明一優選實施例,所述路徑隔離單元利用CHROOT命令,將各計算節點在運行時參考的根目錄位置更改為指定的根目錄位置。根據本發明一優選實施例,所述調度模塊調整轉發的目標計算組中的目標計算節點,還包括:根據各計算組的動態負載信息和配額屬性進行調節所述目標計算節點的數量。根據本發明一優選實施例,所述動態負載信息包括各計算節點及各計算節點的權值,所述權值的大小與各計算節點的負載成反比關係;所述調度模塊調整轉發的目標計算組中的目標計算節點,包括:根據各計算節點的權值的大小確定轉發的目標計算節點。由以上技術方案可以看出,本發明提供計算資源的分配方法和裝置,採用動態負載分配方式,將流量與計算節點進行有效匹配,實現計算資源的隔離及調度,同時保留計算機用戶較高的自由度,且其實現代價低,提高了計算資源利用率和系統的靈活程度,可以允許用戶自主選擇多種語言實現了語言無關性。【附圖說明】圖1為本發明實施例一提供的計算資源的分配方法流程圖;圖2為本發明實施例一提供的計算環境示意圖;圖3為本發明實施例二提供的計算資源的分配裝置示意圖。【具體實施方式】為了使本發明的目的、技術方案和優點更加清楚,下面結合附圖和具體實施例對本發明進行詳細描述。實施例一、圖1是本實施例提供的一種計算資源的分配方法流程圖,如圖1所示,該方法包括:步驟S101、預先構建計算資源環境,確定所用的計算組以及各計算組中的計算節點。所述計算節點是一組計算服務的集合,可以抽象為IP位址:埠(IP:Port)的二元組。如圖2所示,一個計算資源環境可以包括多個計算組,一個計算組是若干計算節點的邏輯組合。一般而言,同一個計算組內的計算節點是同構的。利用構建好的計算資源環境可以用於各種雲計算服務。步驟S102、接收用戶發送的請求,解析得到該用戶的業務信息以及請求執行的用戶代碼。所述用戶是指計算機集群的用戶,一般為集群平臺上的開發商。所述業務信息包括用戶有權使用的計算組組別和用戶有權使用的各計算組的配額屬性。也就是說,用戶購買了哪些計算組,以及購買的這些計算組的計算節點的數量。步驟S103、為不同的域名或網址設定流量轉發的目標計算組,形成流量轉發規則。在流量轉發規則中建立域名或網址與計算組的對應關係,設定哪個域名的哪些網址(url)轉發到哪個計算組。步驟S104、根據子用戶發送的請求,確定流量中的域名或網址,結合所述用戶的業務信息,利用確定的域名或網址在所述流量轉發規則中查詢得到該域名或網址對應的目標計算組。所述子用戶為計算機集群用戶(開發商)的用戶(用戶的受眾),例如普通網民、消費者。通過子用戶發送的流量中的url到所述流量轉發規則中進行匹配,查詢流量中的該url應該轉發到哪個組,確定對應的計算組。結合該用戶的有權使用的計算組組別和用戶有權使用的各計算組的配額屬性,確定該用戶可用的目標計算組,作為流量承載的計算組。步驟S105、查詢目標計算組內的動態負載信息,根據查詢到的動態負載信息,調整轉發的目標計算組中的目標計算節點。動態負載信息包括各計算節點及各計算節點的權值,所述權值的大小與各計算節點的負載成反向關係。根據計算節點的流量來確定計算節點的負載,負載高的權重低,負載低的權重高,以此平衡節點間的相對負載。所述計算節點的流量可以但不限於通過應用層的流控模塊來獲取。在調整轉發的目標計算組中的目標計算節點時,則根據各計算節點的權值的大小確定轉發的目標計算節點,選擇權值較高的計算節點作為流量承載的目標計算節點。根據動態負載信息,從用戶可用的目標計算組中匹配到負載較低的計算節點,能夠根據實際情況進行靈活選擇,提高了效率和資源利用率。另外,根據各計算組的動態負載信息和配額屬性進行調節各計算組中的計算節點的數量。根據一個計算組有最大計算單元個數的配額屬性,所述配額屬性可以是用戶購買數量或特別指定的數量,在計算組整體負載低的時候,可以從該計算組中摘除若干計算節點,減少計算節點的數量,以提升該計算組的負載水平。反之亦然,以此實現對計算資源利用率的提高。通過調節目標計算節點的數量,提高計算資源的利用率。步驟S106、將所述請求執行的用戶代碼發送到確定的目標計算節點執行。將用戶代碼發送到步驟S105中確定的所有目標計算節點執行。值得一提的是,本發明中所述計算節點可以是:普通計算節點、虛擬機計算節點或者物理機計算節點。普通節點是有一定自由度的多語言環境,實現時為每個計算節點部署了運行時環境(一系列支撐組件例如lighttpd、php-cgi、java、python、其他服務等),虛擬機節點就是初始化出虛擬機實例,物理機節點就是初始化好的物理伺服器。在利用普通計算節點構建計算資源環境,為了保證集群的安全以及避免用戶信息洩露給第三方,需要對集群中計算節點的內存在用戶代碼間進行隔離,實現計算節點的資源限制和路徑隔離。具體包括以下方式:S101_1、查詢各計算節點佔用的資源分片信息,利用查找到的資源分片信息初始化計算節點,從而對計算節點進行資源限制。計算節點內的計算服務的具體形式為進程,這些進程通過配置CGROUPS的腳本進行啟動。在CGROUPS配置腳本中,可以查詢到需要初始化的計算單元佔用的資源分片信息,包括CPU、內存、上下行帶寬值(I/O)的使用量。這些資源分片信息可以是絕對值形式的,例如,CPU節點編號、內存佔用值和上下行帶寬值。或者,也可以是比例形式的,例如,CPU計算能力50%,內存總量35%,上下行帶寬總量40%。一般情況下,CPU、內存、上下行帶寬值的使用量的總和為總的資源量,但有時為了預留一部分計算能力給系統,也可以為小於總的資源量100%;有時為了計算節點之間資源使用的互補,也可以為大於總的資源量100%。根據得到的資源分片信息初始化計算節點。具體的,如果查詢到計算節點佔用的CPU計算能力為50%,則將該計算節點的CPU使用量限制為50%。依次類推,完成計算節點的初始化。將該腳本pid(進程標識符)加入到創建的CGROUNP中,後續使用該腳本啟動的所有進程都將自動繼承該CGROUNP的資源限制,從而實現對計算節點進行資源限制。S101_2、為各計算節點指定不同的在運行時參考的根目錄位置,在初始化計算節點時,將各計算節點在運行時參考的根目錄位置更改為指定的根目錄位置,從而對計算節點進行路徑隔離。使用CHROOT命令在可以更改所參考的根目錄位置。具體的過程是:對每個計算節點單獨使用一個用戶名,在初始化計算節點時,即通過CHROOT指定該計算節點對應用戶名的根目錄位置,從而實現對計算節點進行路徑隔離。根據實際應用環境的不同,上述S101_1和S101_2兩種方式也可以僅採用其中一種方式進行。步驟S101中也可以採用現有的虛擬機技術和物理機技術構建計算資源環境,由於虛擬機本身就具有較為徹底的隔離效果,物理機是獨立進行分配使用的,也具有較好的隔離效果,因而,對於虛擬機計算節點和物理機計算節點不需要進行資源隔離和路徑隔離的處理。相比較而言,普通計算節點提供低成本的、有功能限制、多語言的應用執行環境,應用場景為Web應用開發。虛擬機計算節點是用軟體虛擬具有硬體系統功能的執行環境。物理機計算節點是指該節點直接是一臺物理機,環境寬鬆,功能完全不受限,應用場景為較大規模的或較高訂製程度的web應用開發。本發明可以根據實際應用場景的不同,選擇以不同的方式(對應不同的成本代價)來實現計算資源和環境的隔離。一般來說,最低成本的是普通節點,虛擬機其次,物理機節點成本最高。對於這3種不同的計算節點,本發明除了步驟S101中構建計算資源環境的方式不同之外,其他步驟均以相同的方式進行處理,故不再一一贅述。以上是對本發明所提供的方法進行的詳細描述,下面對本發明提供的計算資源的分配裝置進行詳細描述。實施例二圖3是本實施例提供的一種計算資源的分配裝置示意圖。如圖3所示,該裝置包括:計算環境構建模塊10,用於預先構建計算資源環境,確定所用的計算組以及各計算組中的計算節點。所述計算節點是一組計算服務的集合,可以抽象為IP位址:埠(IP:Port)的二元組。一個計算資源環境可以包括多個計算組,一個計算組時若干計算節點的邏輯組合。一般而言,同一個計算組內的計算節點是同構的。利用構建好的計算資源環境可以用於各種雲計算服務。普通節點是有一定自由度的多語言環境,實現時為每個計算節點部署了運行時環境(一系列支撐組件例如lighttpd、php-cgi、java、python、其他服務等),虛擬機節點就是初始化出虛擬機實例,物理機節點就是初始化好的物理伺服器。為了保證集群的安全以及避免用戶信息洩露給第三方,需要對集群中計算節點的內存在用戶代碼間進行隔離,實現計算節點的資源限制和路徑隔離。因而,計算環境構建模塊10,包括:資源限制設定單元和路徑隔離單元。資源限制設定單元,用於查詢各計算節點佔用的資源分片信息,利用查找到的資源分片信息初始化計算節點,從而對計算節點進行資源限制,所述資源分片信息包括CPU、內存、上下行帶寬值的使用量。所述資源限制設定單元中可以利用CGROUPS腳本查詢計算節點佔用的資源分片信息。計算節點內的計算服務的具體形式為進程,這些進程通過配置CGROUPS腳本進行啟動。在CGROUPS配置腳本中,可以查詢到需要初始化的計算單元佔用的資源分片信息,包括CPU、內存、上下行帶寬值(I/O)的使用量。這些資源分片信息可以是絕對值形式的,例如,CPU節點編號、內存佔用值和上下行帶寬值。或者,也可以是比例形式的,例如,CPU計算能力50%,內存總量35%,上下行帶寬總量40%。一般情況下,CPU、內存、上下行帶寬值的使用量的總和為總的資源量,但有時為了預留一部分計算能力給系統,也可以為小於總的資源量100%;有時為了計算節點之間資源使用的互補,也可以為大於總的資源量100%。根據得到的資源分片信息初始化計算節點。具體的,如果查詢到計算節點佔用的CPU計算能力為50%,則將該計算節點的CPU計算能力限制為50%。依次類推,完成計算節點的初始化。將該腳本pid加入到創建的CGROUNP中,後續使用該腳本啟動的所有進程都將自動繼承該CGROUNP的資源限制,從而實現對計算節點進行資源限制。路徑隔離單元,用於為各計算節點指定不同的在運行時參考的根目錄位置,從而對計算節點進行路徑隔離。路徑隔離單元可以利用CHROOT命令在初始化計算節點時,將各計算節點在運行時參考的根目錄位置更改為指定的根目錄位置。具體的過程是:對每個計算節點單獨使用一個用戶名,在初始化計算節點時,即通過CHROOT指定該計算節點對應用戶名的根目錄位置,從而實現對計算節點進行路徑隔離。計算環境構建模塊10也可以採用現有的虛擬機技術和物理機技術構建計算資源環境,由於虛擬機本身就具有較為徹底的隔離效果,物理機是獨立進行分配使用的,也具有較好的隔離效果,因而,對於虛擬機計算節點和物理機計算節點不需要進行資源隔離和路徑隔離的處理。根據實際應用場景的不同,選擇以不同的方式,對應不同的成本代價,來實現計算資源和環境的隔離。管理平臺模塊20,用於接收用戶發送的請求,解析得到該用戶的業務信息以及請求執行的用戶代碼,傳輸至調度模塊。所述用戶是指計算機集群的用戶,一般為集群平臺上的開發商。所述業務信息包括用戶有權使用的計算組組別和用戶有權使用的各計算組的配額屬性。也就是說,用戶購買了哪些計算組,以及購買的這些計算組的計算節點的數量。流量路由模塊30,用於根據子用戶發送的請求,確定流量中的域名或網址。所述子用戶為計算機集群用戶(開發商)的受眾,例如普通網民、消費者。子用戶發送的請求可以但不限於HTTP協議、fastcgi等協議的請求。本發明以HTTP協議為例,確定流量中的url。調度模塊40,用於為不同的域名或網址設定流量轉發的目標計算組,形成流量轉發規則。預先為不同的域名或網址設定流量轉發的目標計算組,形成流量轉發規則。在流量轉發規則中建立域名或網址與計算組的對應關係,設定哪個域名的哪些網址(url)轉發到哪個計算組。調度模塊40還用於結合所述管理平臺模塊得到用戶的業務信息,根據所述流量路由模塊確定的域名或網址在所述流量轉發規則中查詢得到該域名或網址對應的目標計算組;查詢目標計算組內的動態負載信息,並根據查詢到的動態負載信息,調整轉發的目標計算組中的目標計算節點,觸發代碼分發模塊的代碼發送至目標計算節點。調度模塊40通過流量路由模塊30確定的url到所述流量轉發規則中進行匹配,查詢流量中的該url應該轉發到哪個組,確定對應的計算組。進一步結合該用戶的有權使用的計算組組別和用戶有權使用的各計算組的配額屬性,確定該用戶可用的目標計算組,作為流量承載的計算組。在確定了可用的目標計算組之後,調度模塊40查詢目標計算組內的動態負載信息。動態負載信息包括各計算節點及各計算節點的權值,所述權值的大小與各計算節點的負載成反比關係。根據計算節點的流量來確定計算節點的負載,負載高的權重低,負載低的權重高,以此平衡節點間的相對負載。所述計算節點的流量可以但不限於通過應用層的流控模塊來獲取。在調整轉發的目標計算組中的目標計算節點時,則根據各計算節點的權值的大小確定轉發的目標計算節點。根據動態負載信息,從用戶可用的目標計算組中匹配到負載較低的計算節點,能夠根據實際情況進行靈活選擇,提高了效率和資源利用率。另外,調度模塊40還可根據各計算組的動態負載信息和配額屬性進行調節各計算組中的計算節點的數量。根據一個計算組有最大計算單元個數的配額屬性,所述配額屬性可以是用戶購買數量或特別指定的數量,在計算組整體負載低的時候,可以從該計算組中摘除若干計算節點,減少計算節點的數量,以提升該計算組的負載水平。反之亦然,以此實現對計算資源利用率的提高。通過調節目標計算節點的數量,提高計算資源的利用率。代碼分發模塊50,用於在受到所述調度模塊的觸發後,將所述用戶代碼發送到所述流量路由模塊確定的目標計算節點執行。本發明提供的方法和裝置可以根據實際的配置,選擇以不同的計算節點方式來實現實現資源的隔離和分配,能夠靈活應用於各種雲環境需求中。同時,採用動態負載分配的方式將流量與計算節點進行有效匹配,提高了計算資源的利用率。以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的範圍之內。