本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及一種實現(xiàn)自動化部署數(shù)據(jù)庫的方法和裝置。
背景技術(shù):
隨著計算機技術(shù)領(lǐng)域中對數(shù)據(jù)庫的需求的不斷增加,大量業(yè)務(wù)的數(shù)據(jù)庫的部署和擴容是一個重要的問題。現(xiàn)有技術(shù)中,面對大量數(shù)據(jù)庫的部署或者擴容/縮容仍然需要人工進行處理,并依靠操作人員的經(jīng)驗進行操作,效率低下,人工成本高,且數(shù)據(jù)庫的部署或者擴容/縮容存在人為因素,數(shù)據(jù)庫資源得不到充分利用。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的實現(xiàn)自動化部署數(shù)據(jù)庫的方法和相應(yīng)的裝置。
依據(jù)本發(fā)明的一個方面,提供了一種實現(xiàn)自動化部署數(shù)據(jù)庫的方法,包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端中包含初始化多種不同類型數(shù)據(jù)庫的方法;
接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息,根據(jù)所述業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù);
從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。
可選地,所述接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息包括:
在指定的云平臺上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用數(shù)據(jù)庫的業(yè)務(wù)需求信息。
可選地,所述數(shù)據(jù)庫部署任務(wù)中包括:所需服務(wù)器的數(shù)量,需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù);
所述從數(shù)據(jù)庫系統(tǒng)中選擇可用的服務(wù)器包括:根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
可選地,所述根據(jù)所述業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù)包括:
根據(jù)所述業(yè)務(wù)需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息;
根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,生成分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)。
可選地,所述從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端包括:
根據(jù)確定的所需服務(wù)器數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的服務(wù)器,并將分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
可選地,該方法進一步包括:
接收所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端返回的初始化結(jié)果信息;
將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)需求信息的業(yè)務(wù)方。
可選地,該方法進一步包括:
接收需要使用更多數(shù)據(jù)庫資源的業(yè)務(wù)擴容需求信息,根據(jù)所述業(yè)務(wù)擴容需求信息生成數(shù)據(jù)庫擴容部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫擴容部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)擴容部署任務(wù)在所在服務(wù)器上為相應(yīng)業(yè)務(wù)擴充部署相應(yīng)的數(shù)據(jù)庫。
可選地,該方法進一步包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫下線客戶端;
其中,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫,并對所確定的需要下線的數(shù)據(jù)庫進行下線處理。
可選地,所述業(yè)務(wù)擴容需求信息中包含擴容數(shù)據(jù)庫過期時間,所述數(shù)據(jù)庫擴容部署任務(wù)中也包含擴容數(shù)據(jù)庫過期時間,以及所述數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫包括:
所述數(shù)據(jù)庫下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴容數(shù)據(jù)庫過期時間,當(dāng)擴容數(shù)據(jù)庫過期時間到達時確定擴容部署的相應(yīng)數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述數(shù)據(jù)庫下線客戶端獲取所在服務(wù)器上部署的各數(shù)據(jù)庫的訪問信息,將在最近的一段時間內(nèi)訪問量低于預(yù)設(shè)值的數(shù)據(jù)庫確定為需要下線的數(shù)據(jù)庫。
根據(jù)本發(fā)明的另一方面,提供了一種實現(xiàn)自動化部署數(shù)據(jù)庫的裝置,包括:
客戶端部署單元,適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端中包含初始化多種不同類型數(shù)據(jù)庫的方法;
需求接口單元,適于接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息;
數(shù)據(jù)庫部署處理單元,適于根據(jù)所述業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù),從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。
可選地,所述需求接口單元,適于在指定的云平臺上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用數(shù)據(jù)庫的業(yè)務(wù)需求信息。
可選地,所述數(shù)據(jù)庫部署處理單元生成的所述數(shù)據(jù)庫部署任務(wù)中包括:所需服務(wù)器的數(shù)量,需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù);
所述數(shù)據(jù)庫部署處理單元,適于根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
可選地,所述數(shù)據(jù)庫部署處理單元,適于根據(jù)所述業(yè)務(wù)需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息;以及根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,生成分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)。
可選地,所述數(shù)據(jù)庫部署處理單元,適于根據(jù)確定的所需服務(wù)器數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的服務(wù)器,并將分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
可選地,所述數(shù)據(jù)庫部署處理單元,進一步適于接收所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)需求信息的業(yè)務(wù)方。
可選地,所述需求接口單元,進一步適于接收需要使用更多數(shù)據(jù)庫資源的業(yè)務(wù)擴容需求信息;
所述數(shù)據(jù)庫部署處理單元,進一步適于根據(jù)所述業(yè)務(wù)擴容需求信息生成數(shù)據(jù)庫擴容部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫擴容部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)擴容部署任務(wù)在所在服務(wù)器上為相應(yīng)業(yè)務(wù)擴充部署相應(yīng)的數(shù)據(jù)庫。
可選地,客戶端部署單元,進一步適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫下線客戶端;
其中,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫,并對所確定的需要下線的數(shù)據(jù)庫進行下線處理。
可選地,所述業(yè)務(wù)擴容需求信息中包含擴容數(shù)據(jù)庫過期時間,所述數(shù)據(jù)庫擴容部署任務(wù)中也包含擴容數(shù)據(jù)庫過期時間;所述數(shù)據(jù)庫下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴容數(shù)據(jù)庫過期時間,當(dāng)擴容數(shù)據(jù)庫過期時間到達時確定擴容部署的相應(yīng)數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述數(shù)據(jù)庫下線客戶端獲取所在服務(wù)器上部署的各數(shù)據(jù)庫的訪問信息,將在最近的一段時間內(nèi)訪問量低于預(yù)設(shè)值的的數(shù)據(jù)庫確定為需要下線的數(shù)據(jù)庫。
根據(jù)本發(fā)明的技術(shù)方案,在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署包含初始化多種不同類型數(shù)據(jù)庫的方法的數(shù)據(jù)庫初始化客戶端;當(dāng)接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息后,根據(jù)業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;然后數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。綜上所述,本發(fā)明可以根據(jù)業(yè)務(wù)需求,自動進行資源分配和初始化,完成數(shù)據(jù)庫的部署,提高了數(shù)據(jù)庫部署的效率,節(jié)省人工成本,且在滿足業(yè)務(wù)需求的情況下,提高數(shù)據(jù)庫資源的利用率,防止有效資源的浪費。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實施例的實現(xiàn)自動化部署數(shù)據(jù)庫的方法的流程示意圖;
圖2示出了根據(jù)本發(fā)明一個實施例的實現(xiàn)自動化部署數(shù)據(jù)庫的裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
圖1示出了根據(jù)本發(fā)明一個實施例的實現(xiàn)自動化部署數(shù)據(jù)庫的方法的流程示意圖。如圖1所示,該方法包括:
步驟S110,在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端中包含初始化多種不同類型數(shù)據(jù)庫的方法。
為了實現(xiàn)數(shù)據(jù)庫的自動部署,需要在每個服務(wù)器上都部署一個數(shù)據(jù)庫初始化客戶端,已完成業(yè)務(wù)需求中的數(shù)據(jù)庫部署任務(wù)。但是,業(yè)務(wù)的需求不同,所需要部署的數(shù)據(jù)庫類型也不同所以,為了應(yīng)對所有的需求,數(shù)據(jù)庫初始化客戶端中應(yīng)該包含初始化多種不同類型數(shù)據(jù)庫的方法。例如,Mysql數(shù)據(jù)庫的初始化、Oracle數(shù)據(jù)庫的初始化、MongoDB數(shù)據(jù)庫的初始化方法等。
每個服務(wù)器中的數(shù)據(jù)庫初始化客戶端都是在該數(shù)據(jù)庫加入該數(shù)據(jù)庫系統(tǒng)的時候就已經(jīng)打包放進去的。
步驟S120,接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息,根據(jù)業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù)。
當(dāng)業(yè)務(wù)方有數(shù)據(jù)庫部署的業(yè)務(wù)需求時,可以通過相應(yīng)的需求接口提供需求信息。這里的需求接口可以是以一個云平臺的形式,云平臺提供有業(yè)務(wù)需求編輯界面,業(yè)務(wù)方將業(yè)務(wù)需求相應(yīng)的信息編輯后提交即可。
當(dāng)通過需求入口接收到業(yè)務(wù)需求信息時,根據(jù)相應(yīng)的業(yè)務(wù)需求信息生成相應(yīng)的數(shù)據(jù)庫部署任務(wù),以便服務(wù)器根據(jù)數(shù)據(jù)庫部署任務(wù)進行相應(yīng)的初始化數(shù)據(jù)庫的部署操作。
將業(yè)務(wù)需求信息生成相應(yīng)的數(shù)據(jù)庫部署任務(wù)可以使用自動化調(diào)度工具saltstack來打包完成。
步驟S130,從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;當(dāng)數(shù)據(jù)庫初始化客戶端接收到數(shù)據(jù)庫部署任務(wù)后,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。
這里從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,一方面是根據(jù)各個服務(wù)器自身資源的可利用率和是否可用進行選擇可以用來部署該業(yè)務(wù)的服務(wù)器,以減少資源浪費;另一方面,也需要根據(jù)業(yè)務(wù)需求信息選擇部署該業(yè)務(wù)的服務(wù)器的數(shù)量,以滿足業(yè)務(wù)需求。例如,業(yè)務(wù)需求是300G的磁盤空間的大小,但是每個服務(wù)器可用的最大磁盤空間是30G,那么就需要10個可用的服務(wù)器部署該業(yè)務(wù)。
當(dāng)選擇好可用的一定數(shù)量的服務(wù)器后,自動化調(diào)度工具saltstack將打包好的業(yè)務(wù)的數(shù)據(jù)庫部署任務(wù)發(fā)送給選擇的相應(yīng)服務(wù)器中的數(shù)據(jù)庫初始化客戶端。
因為需要給每個選擇的服務(wù)器發(fā)送數(shù)據(jù)庫部署任務(wù),所以,一個業(yè)務(wù)需求的數(shù)據(jù)庫部署任務(wù)的個數(shù)與選擇的服務(wù)器的數(shù)量是一樣的,然后將該數(shù)量的數(shù)據(jù)庫部署任務(wù)發(fā)送到選擇的服務(wù)器上。
綜上,本發(fā)明可以根據(jù)業(yè)務(wù)需求,自動進行資源分配和初始化,完成數(shù)據(jù)庫的部署,提高了數(shù)據(jù)庫部署的效率,節(jié)省人工成本,且在滿足業(yè)務(wù)需求的情況下,提高數(shù)據(jù)庫資源的利用率,防止有效資源的浪費。
在本發(fā)明的一個實施例中,步驟S120中的接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息包括:在指定的云平臺上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用數(shù)據(jù)庫的業(yè)務(wù)需求信息。
當(dāng)業(yè)務(wù)方有數(shù)據(jù)庫部署的業(yè)務(wù)需求時,可以通過指定的云平臺上提供的需求接口進行需求信息的提供。例如,云平臺提供一個網(wǎng)頁,業(yè)務(wù)方在該網(wǎng)頁上進行相應(yīng)業(yè)務(wù)需求的信息編輯。業(yè)務(wù)方編輯好后,進行提交,那么其業(yè)務(wù)需求就會通過這個云平臺的需求接口發(fā)送到后端進行數(shù)據(jù)庫部署的處理操作。
在本發(fā)明的一個實施例中,上述的數(shù)據(jù)庫部署任務(wù)中包括:所需服務(wù)器的數(shù)量,需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的服務(wù)器包括:根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
為滿足業(yè)務(wù)需求,需要根據(jù)相應(yīng)的數(shù)據(jù)庫部署任務(wù)中包括的所需服務(wù)器的數(shù)量進行選擇部署該業(yè)務(wù)的服務(wù)器,例如,數(shù)據(jù)庫部署任務(wù)中所需服務(wù)器的數(shù)量為5臺,那么選擇的時候需要選擇5臺可用的服務(wù)器。同時,在選在服務(wù)器的時候還要考慮服務(wù)器自身的資源可利用率,也必須滿足該業(yè)務(wù)的需要。綜合兩方面考慮后,才能最終選擇相應(yīng)數(shù)量的服務(wù)器。
當(dāng)該數(shù)據(jù)庫部署任務(wù)發(fā)送到選擇的服務(wù)器上后,服務(wù)器上的數(shù)據(jù)庫初始化客戶端還會根據(jù)數(shù)據(jù)庫部署任務(wù)中的需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù)進行數(shù)據(jù)庫的部署,以滿足業(yè)務(wù)需求。
因為在數(shù)據(jù)庫部署時,有需要建立主從式數(shù)據(jù)庫的情況,主從式數(shù)據(jù)庫包含有一個主數(shù)據(jù)庫和一個或者多個從數(shù)據(jù)庫,實現(xiàn)了數(shù)據(jù)庫讀寫功能的分離。主數(shù)據(jù)庫負(fù)責(zé)寫入數(shù)據(jù)的操作,從數(shù)據(jù)庫負(fù)責(zé)對主數(shù)據(jù)庫的數(shù)據(jù)進行備份以及負(fù)責(zé)數(shù)據(jù)查詢等操作。為了實現(xiàn)主從式數(shù)據(jù)庫的部署,在本發(fā)明的一個實施例中,步驟S120中的根據(jù)業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù)包括:根據(jù)業(yè)務(wù)需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,例如,是主數(shù)據(jù)庫還是從數(shù)據(jù)庫;根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,生成分別對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)。
例如,選擇4個服務(wù)器,需要部署1個主數(shù)據(jù)庫和3個從數(shù)據(jù)庫,那么就會生成1個主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)和相應(yīng)的3個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)。
具體地,從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端包括:根據(jù)確定的所需服務(wù)器數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的服務(wù)器,并將分別對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
這里的對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù),是隨機發(fā)送到所選擇的服務(wù)器上,也就是說每個選擇的服務(wù)器會接收到一個對應(yīng)角色信息的數(shù)據(jù)庫部署任務(wù),但是具體是哪個角色的數(shù)據(jù)庫部署任務(wù)是不確定的。任務(wù)的發(fā)送是自動化調(diào)度工具隨機分發(fā),不限定某個數(shù)據(jù)庫部署任務(wù)必須分發(fā)給一個指定的服務(wù)器,只要保證分發(fā)后,選擇的每個服務(wù)器均被分發(fā)了一個數(shù)據(jù)庫部署任務(wù)即可。例如,確定的服務(wù)器的數(shù)量是3,那么就需要選擇三個服務(wù)器,分別是服務(wù)器1、服務(wù)器2、服務(wù)器3,最終會生成1個主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)和相應(yīng)的2個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù),進行任務(wù)發(fā)送的時候,主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)可以分發(fā)給服務(wù)器1上的數(shù)據(jù)庫初始化客戶端,可以分發(fā)給服務(wù)器2上的數(shù)據(jù)庫初始化客戶端、也可以分發(fā)給服務(wù)器3上的數(shù)據(jù)庫初始化客戶端;另外2個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)可以分發(fā)給服務(wù)器1上的數(shù)據(jù)庫初始化客戶端,可以分發(fā)給服務(wù)器2上的數(shù)據(jù)庫初始化客戶端、也可以分發(fā)給服務(wù)器3上的數(shù)據(jù)庫初始化客戶端,最終分發(fā)后保證服務(wù)器1、服務(wù)器2和服務(wù)器3都有數(shù)據(jù)庫部署任務(wù)。
在一個具體的例子中,需要在4個服務(wù)器部署數(shù)據(jù)庫,其中一個是主數(shù)據(jù)庫,另外三個是從數(shù)據(jù)庫。數(shù)據(jù)庫部署任務(wù)打包后,其中一個數(shù)據(jù)庫部署任務(wù)中包含的參數(shù)信息為:P1=mongodb,P2=mdm,P3=30G,P4=200G。其中,P1代表數(shù)據(jù)庫類型,P2代表數(shù)據(jù)庫角色,P3代表內(nèi)存空間,P4代表磁盤空間。當(dāng)被選中的其中一個服務(wù)器的數(shù)據(jù)庫初始化客戶端接收到該數(shù)據(jù)庫部署任務(wù)后,通過該任務(wù)中的參數(shù)信息,就會在其服務(wù)器上建立一個mongodb數(shù)據(jù)庫的主數(shù)據(jù)庫,該數(shù)據(jù)庫有30G內(nèi)存,200G的磁盤空間。
需要說明的是,在進行主從式數(shù)據(jù)庫部署的時候,還需要考慮主數(shù)據(jù)庫在使用過程中出現(xiàn)問題的情況。如果主數(shù)據(jù)庫出現(xiàn)問題,不能進行數(shù)據(jù)的寫入,就會影響整個業(yè)務(wù)的運行。所以,如果主數(shù)據(jù)庫出現(xiàn)問題,那么還需要在剩下的從數(shù)據(jù)庫中選擇一個作為新的主數(shù)據(jù)庫使用。為了能順利的從從數(shù)據(jù)庫中選擇一個主數(shù)據(jù)庫,在進行主從式數(shù)據(jù)庫部署的時候,還需要建立一個或多個投票數(shù)據(jù)庫。所以上述的數(shù)據(jù)庫的角色信息包括:主數(shù)據(jù)庫、從數(shù)據(jù)庫和投票數(shù)據(jù)庫。然后再對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
例如,選擇4個服務(wù)器,需要部署1個主數(shù)據(jù)庫、2個從數(shù)據(jù)庫和1個投票數(shù)據(jù)庫,最終會生成1個主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)、相應(yīng)的2個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)和1個投票數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù),最后將這4個對應(yīng)角色信息的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的4個的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
主從數(shù)據(jù)庫部署好后,在使用過程中,如果主數(shù)據(jù)庫出現(xiàn)問題,變得不可用,那么投票數(shù)據(jù)庫就會將選票投給擁有最新數(shù)據(jù)的數(shù)據(jù)庫,使得擁有最新數(shù)據(jù)的數(shù)據(jù)庫成為新的主數(shù)據(jù)庫。
當(dāng)數(shù)據(jù)庫部署好后,在本發(fā)明的一個實施例中,圖1所示的方法進一步包括:接收所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交業(yè)務(wù)需求信息的業(yè)務(wù)方,以便業(yè)務(wù)方獲得數(shù)據(jù)庫部署后的信息。
上述實施例是針對數(shù)據(jù)庫部署的情況,在大量的業(yè)務(wù)需求中還包括數(shù)據(jù)庫擴容的請求。所以,針對數(shù)據(jù)庫擴容的情況,在本發(fā)明的一個實施例中,圖1所示的方法進一步包括:接收需要使用更多數(shù)據(jù)庫資源的業(yè)務(wù)擴容需求信息,根據(jù)業(yè)務(wù)擴容需求信息生成數(shù)據(jù)庫擴容部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫擴容部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)擴容部署任務(wù)在所在服務(wù)器上為相應(yīng)業(yè)務(wù)擴充部署相應(yīng)的數(shù)據(jù)庫。
例如,淘寶網(wǎng)站在雙11活動中的業(yè)務(wù)訪問量會成倍的增加,為了保證業(yè)務(wù)的正常運行,需要對數(shù)據(jù)庫擴容,獲得更多的數(shù)據(jù)庫資源,應(yīng)對突增的訪問量,那么淘寶網(wǎng)站的業(yè)務(wù)方就可以通過云平臺的業(yè)務(wù)需求接口提出相應(yīng)的業(yè)務(wù)擴容的需求,以進行數(shù)據(jù)庫的擴容,即增加相應(yīng)業(yè)務(wù)的數(shù)據(jù)庫,其具體的實現(xiàn)方法也是通過接收需求信息,生成相應(yīng)的數(shù)據(jù)庫擴容任務(wù),并發(fā)送給選擇的一定數(shù)量的服務(wù)器的數(shù)據(jù)庫初始化客戶端進行相應(yīng)的擴容處理。
業(yè)務(wù)擴容是針對業(yè)務(wù)量突增的情況,當(dāng)業(yè)務(wù)量恢復(fù)到正常情況后,為了減少數(shù)據(jù)庫資源的浪費,需要將擴容后的數(shù)據(jù)庫進行下線處理,例如,淘寶網(wǎng)站的雙11活動結(jié)束后,其訪問量就會下降至正常水平。在本發(fā)明的一個實施例中,上述方法進一步包括:在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫下線客戶端,每個服務(wù)器中的數(shù)據(jù)庫下線客戶端都是在該數(shù)據(jù)庫加入該數(shù)據(jù)庫系統(tǒng)的時候就已經(jīng)打包放進去的。當(dāng)業(yè)務(wù)擴容的需求結(jié)束后,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫,并對所確定的需要下線的數(shù)據(jù)庫進行下線處理。
在進行下線處理的時候,如果業(yè)務(wù)擴容需求信息中包含擴容數(shù)據(jù)庫過期時間,數(shù)據(jù)庫擴容部署任務(wù)中也包含擴容數(shù)據(jù)庫過期時間,那么數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫包括:數(shù)據(jù)庫下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴容數(shù)據(jù)庫過期時間,當(dāng)擴容數(shù)據(jù)庫過期時間到達時確定擴容部署的相應(yīng)數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。例如,在業(yè)務(wù)方提出業(yè)務(wù)擴容需求的時候,預(yù)先設(shè)定一個擴容的數(shù)據(jù)庫的過期時間是10天,那么當(dāng)該業(yè)務(wù)的擴容數(shù)據(jù)庫使用10天后,服務(wù)器中的數(shù)據(jù)庫下線客戶端確定出該擴容的數(shù)據(jù)庫已經(jīng)到達過期時間10天,就會對該數(shù)據(jù)庫進行下線處理。
在進行下線處理的時候,需要下線的數(shù)據(jù)庫不一定是新擴容的數(shù)據(jù)庫,也可以對該業(yè)務(wù)的整個數(shù)據(jù)庫系統(tǒng)整體分析后,確定需要下線的數(shù)據(jù)庫。在這種情況下,確定需要下線的數(shù)據(jù)庫的方法是:數(shù)據(jù)庫下線客戶端獲取所在服務(wù)器上部署的各數(shù)據(jù)庫的訪問信息,將在最近的一段時間內(nèi)訪問量低于預(yù)設(shè)值的數(shù)據(jù)庫確定為需要下線的數(shù)據(jù)庫。例如,設(shè)定預(yù)設(shè)值為100,那么在一段時間內(nèi)都被訪問數(shù)量低于100次的數(shù)據(jù)庫就可以視為是需要下線的數(shù)據(jù)庫。
這里的下線處理,首先將需要下線的數(shù)據(jù)庫下檔,然后登錄相應(yīng)的主數(shù)據(jù)庫,把下線的數(shù)據(jù)庫的節(jié)點刪除,然后清理下線數(shù)據(jù)庫的相關(guān)信息。
圖2示出了根據(jù)本發(fā)明一個實施例的實現(xiàn)自動化部署數(shù)據(jù)庫的裝置的結(jié)構(gòu)示意圖。如圖2所示,該實現(xiàn)自動化部署數(shù)據(jù)庫的裝置包括:
客戶端部署單元210,適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端中包含初始化多種不同類型數(shù)據(jù)庫的方法。
為了實現(xiàn)數(shù)據(jù)庫的自動部署,需要在每個服務(wù)器上都部署一個數(shù)據(jù)庫初始化客戶端,已完成業(yè)務(wù)需求中的數(shù)據(jù)庫部署任務(wù)。但是,業(yè)務(wù)的需求不同,所需要部署的數(shù)據(jù)庫類型也不同所以,為了應(yīng)對所有的需求,數(shù)據(jù)庫初始化客戶端中應(yīng)該包含初始化多種不同類型數(shù)據(jù)庫的方法。例如,Mysql數(shù)據(jù)庫的初始化、Oracle數(shù)據(jù)庫的初始化、MongoDB數(shù)據(jù)庫的初始化方法等。
每個服務(wù)器中的數(shù)據(jù)庫初始化客戶端都是在該數(shù)據(jù)庫加入該數(shù)據(jù)庫系統(tǒng)的時候就已經(jīng)打包放進去的。
需求接口單元220,適于接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息。
當(dāng)業(yè)務(wù)方有數(shù)據(jù)庫部署的業(yè)務(wù)需求時,可以通過相應(yīng)的需求接口提供需求信息。這里的需求接口可以是以一個云平臺的形式,云平臺提供有業(yè)務(wù)需求編輯界面,業(yè)務(wù)方將業(yè)務(wù)需求相應(yīng)的信息編輯后提交即可。
數(shù)據(jù)庫部署處理單元230,適于根據(jù)業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù),從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;當(dāng)數(shù)據(jù)庫初始化客戶端接收到數(shù)據(jù)庫部署任務(wù)后,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。
當(dāng)通過需求入口接收到業(yè)務(wù)需求信息時,根據(jù)相應(yīng)的業(yè)務(wù)需求信息生成相應(yīng)的數(shù)據(jù)庫部署任務(wù),以便服務(wù)器根據(jù)數(shù)據(jù)庫部署任務(wù)進行相應(yīng)的初始化數(shù)據(jù)庫的部署操作。將業(yè)務(wù)需求信息生成相應(yīng)的數(shù)據(jù)庫部署任務(wù)可以使用自動化調(diào)度工具saltstack來打包完成。
這里從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,一方面是根據(jù)各個服務(wù)器自身資源的可利用率和是否可用進行選擇可以用來部署該業(yè)務(wù)的服務(wù)器,以減少資源浪費;另一方面,也需要根據(jù)業(yè)務(wù)需求信息選擇部署該業(yè)務(wù)的服務(wù)器的數(shù)量,以滿足業(yè)務(wù)需求。例如,業(yè)務(wù)需求是300G的磁盤空間的大小,但是每個服務(wù)器可用的最大磁盤空間是30G,那么就需要10個可用的服務(wù)器部署該業(yè)務(wù)。
當(dāng)選擇好可用的一定數(shù)量的服務(wù)器后,自動化調(diào)度工具saltstack將打包好的業(yè)務(wù)的數(shù)據(jù)庫部署任務(wù)發(fā)送給選擇的相應(yīng)服務(wù)器中的數(shù)據(jù)庫初始化客戶端。
因為需要給每個選擇的服務(wù)器發(fā)送數(shù)據(jù)庫部署任務(wù),所以,一個業(yè)務(wù)需求的數(shù)據(jù)庫部署任務(wù)的個數(shù)與選擇的服務(wù)器的數(shù)量是一樣的,然后將該數(shù)量的數(shù)據(jù)庫部署任務(wù)發(fā)送到選擇的服務(wù)器上。
綜上,本發(fā)明可以根據(jù)業(yè)務(wù)需求,自動進行資源分配和初始化,完成數(shù)據(jù)庫的部署,提高了數(shù)據(jù)庫部署的效率,節(jié)省人工成本,且在滿足業(yè)務(wù)需求的情況下,提高數(shù)據(jù)庫資源的利用率,防止有效資源的浪費。
在本發(fā)明的一個實施例中,需求接口單元220,適于在指定的云平臺上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用數(shù)據(jù)庫的業(yè)務(wù)需求信息。
當(dāng)業(yè)務(wù)方有數(shù)據(jù)庫部署的業(yè)務(wù)需求時,可以通過指定的云平臺上提供的需求接口進行需求信息的提供。例如,云平臺提供一個網(wǎng)頁,業(yè)務(wù)方在該網(wǎng)頁上進行相應(yīng)業(yè)務(wù)需求的信息編輯。業(yè)務(wù)方編輯好后,進行提交,那么其業(yè)務(wù)需求就會通過這個云平臺的需求接口發(fā)送到后端進行數(shù)據(jù)庫部署的處理操作。
在本發(fā)明的一個實施例中,數(shù)據(jù)庫部署處理單元230生成的數(shù)據(jù)庫部署任務(wù)中包括:所需服務(wù)器的數(shù)量,需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù);數(shù)據(jù)庫部署處理單元230,適于根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
為滿足業(yè)務(wù)需求,需要根據(jù)相應(yīng)的數(shù)據(jù)庫部署任務(wù)中包括的所需服務(wù)器的數(shù)量進行選擇部署該業(yè)務(wù)的服務(wù)器,例如,數(shù)據(jù)庫部署任務(wù)中所需服務(wù)器的數(shù)量為5臺,那么選擇的時候需要選擇5臺可用的服務(wù)器。同時,在選在服務(wù)器的時候還要考慮服務(wù)器自身的資源可利用率,也必須滿足該業(yè)務(wù)的需要。綜合兩方面考慮后,才能最終選擇相應(yīng)數(shù)量的服務(wù)器。
當(dāng)該數(shù)據(jù)庫部署任務(wù)發(fā)送到選擇的服務(wù)器上后,服務(wù)器上的數(shù)據(jù)庫初始化客戶端還會根據(jù)數(shù)據(jù)庫部署任務(wù)中的需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù)進行數(shù)據(jù)庫的部署,以滿足業(yè)務(wù)需求。
因為在數(shù)據(jù)庫部署時,有需要建立主從式數(shù)據(jù)庫的情況,主從式數(shù)據(jù)庫包含有一個主數(shù)據(jù)庫和一個或者多個從數(shù)據(jù)庫,實現(xiàn)了數(shù)據(jù)庫讀寫功能的分離。主數(shù)據(jù)庫負(fù)責(zé)寫入數(shù)據(jù)的操作,從數(shù)據(jù)庫負(fù)責(zé)對主數(shù)據(jù)庫的數(shù)據(jù)進行備份以及負(fù)責(zé)數(shù)據(jù)查詢等操作。為了實現(xiàn)主從式數(shù)據(jù)庫的部署,在本發(fā)明的一個實施例中,數(shù)據(jù)庫部署處理單元230,適于根據(jù)業(yè)務(wù)需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,例如,是主數(shù)據(jù)庫還是從數(shù)據(jù)庫;以及根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,生成分別對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)。
例如,選擇4個服務(wù)器,需要部署1個主數(shù)據(jù)庫和3個從數(shù)據(jù)庫,那么就會生成1個主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)和相應(yīng)的3個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)。
具體地,數(shù)據(jù)庫部署處理單元230,適于根據(jù)確定的所需服務(wù)器數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的服務(wù)器,并將分別對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
這里的對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù),是隨機發(fā)送到所選擇的服務(wù)器上,也就是說每個選擇的服務(wù)器會接收到一個對應(yīng)角色信息的數(shù)據(jù)庫部署任務(wù),但是具體是哪個角色的數(shù)據(jù)庫部署任務(wù)是不確定的。任務(wù)的發(fā)送是自動化調(diào)度工具隨機分發(fā),不限定某個數(shù)據(jù)庫部署任務(wù)必須分發(fā)給一個指定的服務(wù)器,只要保證分發(fā)后,選擇的每個服務(wù)器均被分發(fā)了一個數(shù)據(jù)庫部署任務(wù)即可。例如,確定的服務(wù)器的數(shù)量是3,那么就需要選擇三個服務(wù)器,分別是服務(wù)器1、服務(wù)器2、服務(wù)器3,最終會生成1個主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)和相應(yīng)的2個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù),進行任務(wù)發(fā)送的時候,主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)可以分發(fā)給服務(wù)器1上的數(shù)據(jù)庫初始化客戶端,可以分發(fā)給服務(wù)器2上的數(shù)據(jù)庫初始化客戶端、也可以分發(fā)給服務(wù)器3上的數(shù)據(jù)庫初始化客戶端;另外2個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)可以分發(fā)給服務(wù)器1上的數(shù)據(jù)庫初始化客戶端,可以分發(fā)給服務(wù)器2上的數(shù)據(jù)庫初始化客戶端、也可以分發(fā)給服務(wù)器3上的數(shù)據(jù)庫初始化客戶端,最終分發(fā)后保證服務(wù)器1、服務(wù)器2和服務(wù)器3都有數(shù)據(jù)庫部署任務(wù)。
在一個具體的例子中,需要在4個服務(wù)器部署數(shù)據(jù)庫,其中一個是主數(shù)據(jù)庫,另外三個是從數(shù)據(jù)庫。數(shù)據(jù)庫部署任務(wù)打包后,其中一個數(shù)據(jù)庫部署任務(wù)中包含的參數(shù)信息為:P1=mongodb,P2=mdm,P3=30G,P4=200G。其中,P1代表數(shù)據(jù)庫類型,P2代表數(shù)據(jù)庫角色,P3代表內(nèi)存空間,P4代表磁盤空間。當(dāng)被選中的其中一個服務(wù)器的數(shù)據(jù)庫初始化客戶端接收到該數(shù)據(jù)庫部署任務(wù)后,通過該任務(wù)中的參數(shù)信息,就會在其服務(wù)器上建立一個mongodb數(shù)據(jù)庫的主數(shù)據(jù)庫,該數(shù)據(jù)庫有30G內(nèi)存,200G的磁盤空間。
需要說明的是,在進行主從式數(shù)據(jù)庫部署的時候,還需要考慮主數(shù)據(jù)庫在使用過程中出現(xiàn)問題的情況。如果主數(shù)據(jù)庫出現(xiàn)問題,不能進行數(shù)據(jù)的寫入,就會影響整個業(yè)務(wù)的運行。所以,如果主數(shù)據(jù)庫出現(xiàn)問題,那么還需要在剩下的從數(shù)據(jù)庫中選擇一個作為新的主數(shù)據(jù)庫使用。為了能順利的從從數(shù)據(jù)庫中選擇一個主數(shù)據(jù)庫,在進行主從式數(shù)據(jù)庫部署的時候,還需要建立一個或多個投票數(shù)據(jù)庫。所以上述的數(shù)據(jù)庫的角色信息包括:主數(shù)據(jù)庫、從數(shù)據(jù)庫和投票數(shù)據(jù)庫。然后再對應(yīng)角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
例如,選擇4個服務(wù)器,需要部署1個主數(shù)據(jù)庫、2個從數(shù)據(jù)庫和1個投票數(shù)據(jù)庫,最終會生成1個主數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)、相應(yīng)的2個從數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù)和1個投票數(shù)據(jù)庫的數(shù)據(jù)庫部署任務(wù),最后將這4個對應(yīng)角色信息的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的4個的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
主從數(shù)據(jù)庫部署好后,在使用過程中,如果主數(shù)據(jù)庫出現(xiàn)問題,變得不可用,那么投票數(shù)據(jù)庫就會將選票投給擁有最新數(shù)據(jù)的數(shù)據(jù)庫,使得擁有最新數(shù)據(jù)的數(shù)據(jù)庫成為新的主數(shù)據(jù)庫。
當(dāng)數(shù)據(jù)庫部署好后,在本發(fā)明的一個實施例中,數(shù)據(jù)庫部署處理單元230,進一步適于接收所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交業(yè)務(wù)需求信息的業(yè)務(wù)方,以便業(yè)務(wù)方獲得數(shù)據(jù)庫部署后的信息。
上述實施例是針對數(shù)據(jù)庫部署的情況,在大量的業(yè)務(wù)需求中還包括數(shù)據(jù)庫擴容的請求。所以,針對數(shù)據(jù)庫擴容的情況,在本發(fā)明的一個實施例中,需求接口單元220,進一步適于接收需要使用更多數(shù)據(jù)庫資源的業(yè)務(wù)擴容需求信息;數(shù)據(jù)庫部署處理單元230,進一步適于根據(jù)業(yè)務(wù)擴容需求信息生成數(shù)據(jù)庫擴容部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫擴容部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)擴容部署任務(wù)在所在服務(wù)器上為相應(yīng)業(yè)務(wù)擴充部署相應(yīng)的數(shù)據(jù)庫。
例如,淘寶網(wǎng)站在雙11活動中的業(yè)務(wù)訪問量會成倍的增加,為了保證業(yè)務(wù)的正常運行,需要對數(shù)據(jù)庫擴容,獲得更多的數(shù)據(jù)庫資源,應(yīng)對突增的訪問量,那么淘寶網(wǎng)站的業(yè)務(wù)方就可以通過云平臺的業(yè)務(wù)需求接口提出相應(yīng)的業(yè)務(wù)擴容的需求,以進行數(shù)據(jù)庫的擴容,即增加相應(yīng)業(yè)務(wù)的數(shù)據(jù)庫,其具體的實現(xiàn)方法也是通過接收需求信息,生成相應(yīng)的數(shù)據(jù)庫擴容任務(wù),并發(fā)送給選擇的一定數(shù)量的服務(wù)器的數(shù)據(jù)庫初始化客戶端進行相應(yīng)的擴容處理。
業(yè)務(wù)擴容是針對業(yè)務(wù)量突增的情況,當(dāng)業(yè)務(wù)量恢復(fù)到正常情況后,為了減少數(shù)據(jù)庫資源的浪費,需要將擴容后的數(shù)據(jù)庫進行下線處理,例如,淘寶網(wǎng)站的雙11活動結(jié)束后,其訪問量就會下降至正常水平。在本發(fā)明的一個實施例中,客戶端部署單元210,進一步適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫下線客戶端,每個服務(wù)器中的數(shù)據(jù)庫下線客戶端都是在該數(shù)據(jù)庫加入該數(shù)據(jù)庫系統(tǒng)的時候就已經(jīng)打包放進去的。當(dāng)業(yè)務(wù)擴容的需求結(jié)束后,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫,并對所確定的需要下線的數(shù)據(jù)庫進行下線處理。
在進行下線處理的時候,如果業(yè)務(wù)擴容需求信息中包含擴容數(shù)據(jù)庫過期時間,數(shù)據(jù)庫擴容部署任務(wù)中也包含擴容數(shù)據(jù)庫過期時間;那么數(shù)據(jù)庫下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴容數(shù)據(jù)庫過期時間,當(dāng)擴容數(shù)據(jù)庫過期時間到達時確定擴容部署的相應(yīng)數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫。例如,在業(yè)務(wù)方提出業(yè)務(wù)擴容需求的時候,預(yù)先設(shè)定一個擴容的數(shù)據(jù)庫的過期時間是10天,那么當(dāng)該業(yè)務(wù)的擴容數(shù)據(jù)庫使用10天后,服務(wù)器中的數(shù)據(jù)庫下線客戶端確定出該擴容的數(shù)據(jù)庫已經(jīng)到達過期時間10天,就會對該數(shù)據(jù)庫進行下線處理。
在進行下線處理的時候,需要下線的數(shù)據(jù)庫不一定是新擴容的數(shù)據(jù)庫,也可以對該業(yè)務(wù)的整個數(shù)據(jù)庫系統(tǒng)整體分析后,確定需要下線的數(shù)據(jù)庫。在這種情況下,確定需要下線的數(shù)據(jù)庫的方法是:數(shù)據(jù)庫下線客戶端獲取所在服務(wù)器上部署的各數(shù)據(jù)庫的訪問信息,將在最近的一段時間內(nèi)訪問量低于預(yù)設(shè)值的數(shù)據(jù)庫確定為需要下線的數(shù)據(jù)庫。例如,設(shè)定預(yù)設(shè)值為100,那么在一段時間內(nèi)都被訪問數(shù)量低于100次的數(shù)據(jù)庫就可以視為是需要下線的數(shù)據(jù)庫。
這里的下線處理,首先將需要下線的數(shù)據(jù)庫下檔,然后登錄相應(yīng)的主數(shù)據(jù)庫,把下線的數(shù)據(jù)庫的節(jié)點刪除,然后清理下線數(shù)據(jù)庫的相關(guān)信息。
綜上所述,根據(jù)本發(fā)明的技術(shù)方案,在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署包含初始化多種不同類型數(shù)據(jù)庫的方法的數(shù)據(jù)庫初始化客戶端;當(dāng)接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息后,根據(jù)業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;然后數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。可見,本發(fā)明可以根據(jù)業(yè)務(wù)需求,自動進行資源分配和初始化,完成數(shù)據(jù)庫的部署,提高了數(shù)據(jù)庫部署的效率,節(jié)省人工成本,且在滿足業(yè)務(wù)需求的情況下,提高數(shù)據(jù)庫資源的利用率,防止有效資源的浪費。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設(shè)備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的實現(xiàn)自動化部署數(shù)據(jù)庫的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了A1、一種實現(xiàn)自動化部署數(shù)據(jù)庫的方法,包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端中包含初始化多種不同類型數(shù)據(jù)庫的方法;
接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息,根據(jù)所述業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù);
從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。
A2、如A1所述的方法,其中,所述接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息包括:
在指定的云平臺上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用數(shù)據(jù)庫的業(yè)務(wù)需求信息。
A3、如A1所述的方法,其中,
所述數(shù)據(jù)庫部署任務(wù)中包括:所需服務(wù)器的數(shù)量,需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù);
所述從數(shù)據(jù)庫系統(tǒng)中選擇可用的服務(wù)器包括:根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
A4、如A1所述的方法,其中,所述根據(jù)所述業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù)包括:
根據(jù)所述業(yè)務(wù)需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息;
根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,生成分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)。
A5、如A4所述的方法,其中,所述從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端包括:
根據(jù)確定的所需服務(wù)器數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的服務(wù)器,并將分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
A6、如A1所述的方法,其中,該方法進一步包括:
接收所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端返回的初始化結(jié)果信息;
將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)需求信息的業(yè)務(wù)方。
A7、如A1所述的方法,其中,該方法進一步包括:
接收需要使用更多數(shù)據(jù)庫資源的業(yè)務(wù)擴容需求信息,根據(jù)所述業(yè)務(wù)擴容需求信息生成數(shù)據(jù)庫擴容部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫擴容部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)擴容部署任務(wù)在所在服務(wù)器上為相應(yīng)業(yè)務(wù)擴充部署相應(yīng)的數(shù)據(jù)庫。
A8、如A7所述的方法,其中,該方法進一步包括:
在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫下線客戶端;
其中,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫,并對所確定的需要下線的數(shù)據(jù)庫進行下線處理。
A9、如A8所述的方法,其中,
所述業(yè)務(wù)擴容需求信息中包含擴容數(shù)據(jù)庫過期時間,所述數(shù)據(jù)庫擴容部署任務(wù)中也包含擴容數(shù)據(jù)庫過期時間,以及所述數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫包括:
所述數(shù)據(jù)庫下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴容數(shù)據(jù)庫過期時間,當(dāng)擴容數(shù)據(jù)庫過期時間到達時確定擴容部署的相應(yīng)數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述數(shù)據(jù)庫下線客戶端獲取所在服務(wù)器上部署的各數(shù)據(jù)庫的訪問信息,將在最近的一段時間內(nèi)訪問量低于預(yù)設(shè)值的數(shù)據(jù)庫確定為需要下線的數(shù)據(jù)庫。
本發(fā)明公開了B10、一種實現(xiàn)自動化部署數(shù)據(jù)庫的裝置,包括:
客戶端部署單元,適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫初始化客戶端;其中,數(shù)據(jù)庫初始化客戶端中包含初始化多種不同類型數(shù)據(jù)庫的方法;
需求接口單元,適于接收需要使用數(shù)據(jù)庫資源的業(yè)務(wù)需求信息;
數(shù)據(jù)庫部署處理單元,適于根據(jù)所述業(yè)務(wù)需求信息生成數(shù)據(jù)庫部署任務(wù),從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)部署任務(wù)在所在服務(wù)器上部署相應(yīng)的數(shù)據(jù)庫。
B11、如B10所述的裝置,其中,
所述需求接口單元,適于在指定的云平臺上提供提交業(yè)務(wù)需求信息的接口,通過該接口接收需要使用數(shù)據(jù)庫的業(yè)務(wù)需求信息。
B12、如B10所述的裝置,其中,
所述數(shù)據(jù)庫部署處理單元生成的所述數(shù)據(jù)庫部署任務(wù)中包括:所需服務(wù)器的數(shù)量,需要部署的數(shù)據(jù)庫類型以及部署該類型數(shù)據(jù)庫的相關(guān)參數(shù);
所述數(shù)據(jù)庫部署處理單元,適于根據(jù)所需服務(wù)器的數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的可用的服務(wù)器。
B13、如B10所述的裝置,其中,
所述數(shù)據(jù)庫部署處理單元,適于根據(jù)所述業(yè)務(wù)需求信息,確定所需服務(wù)器的數(shù)量,以及所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息;以及根據(jù)所確定數(shù)量的各服務(wù)器上需要部署的數(shù)據(jù)庫的角色信息,生成分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)。
B14、如B13所述的裝置,其中,
所述數(shù)據(jù)庫部署處理單元,適于根據(jù)確定的所需服務(wù)器數(shù)量從數(shù)據(jù)庫系統(tǒng)中選擇相應(yīng)數(shù)量的服務(wù)器,并將分別對應(yīng)所述角色信息的所確定數(shù)量的數(shù)據(jù)庫部署任務(wù)隨機一一對應(yīng)地分發(fā)給所選擇的相應(yīng)數(shù)量的服務(wù)器上的數(shù)據(jù)庫初始化客戶端。
B15、如B10所述的裝置,其中,
所述數(shù)據(jù)庫部署處理單元,進一步適于接收所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端返回的初始化結(jié)果信息;將所接收的初始化結(jié)果信息通過指定通信渠道發(fā)送給提交所述業(yè)務(wù)需求信息的業(yè)務(wù)方。
B16、如B10所述的裝置,其中,
所述需求接口單元,進一步適于接收需要使用更多數(shù)據(jù)庫資源的業(yè)務(wù)擴容需求信息;
所述數(shù)據(jù)庫部署處理單元,進一步適于根據(jù)所述業(yè)務(wù)擴容需求信息生成數(shù)據(jù)庫擴容部署任務(wù);從數(shù)據(jù)庫系統(tǒng)中選擇可用的一定數(shù)量的服務(wù)器,并將所述數(shù)據(jù)庫擴容部署任務(wù)分發(fā)給所選擇的各服務(wù)器上的數(shù)據(jù)庫初始化客戶端;
其中,數(shù)據(jù)庫初始化客戶端根據(jù)所接收的數(shù)據(jù)擴容部署任務(wù)在所在服務(wù)器上為相應(yīng)業(yè)務(wù)擴充部署相應(yīng)的數(shù)據(jù)庫。
B17、如B16所述的裝置,其中,
客戶端部署單元,進一步適于在數(shù)據(jù)庫系統(tǒng)中的各服務(wù)器上分別部署數(shù)據(jù)庫下線客戶端;
其中,數(shù)據(jù)庫下線客戶端確定所在服務(wù)器上的需要下線的數(shù)據(jù)庫,并對所確定的需要下線的數(shù)據(jù)庫進行下線處理。
B18、如B17所述的裝置,其中,
所述業(yè)務(wù)擴容需求信息中包含擴容數(shù)據(jù)庫過期時間,所述數(shù)據(jù)庫擴容部署任務(wù)中也包含擴容數(shù)據(jù)庫過期時間;所述數(shù)據(jù)庫下線客戶端通過掃描所在服務(wù)器上的資源信息獲取擴容數(shù)據(jù)庫過期時間,當(dāng)擴容數(shù)據(jù)庫過期時間到達時確定擴容部署的相應(yīng)數(shù)據(jù)庫為需要下線的數(shù)據(jù)庫;
或者,
所述數(shù)據(jù)庫下線客戶端獲取所在服務(wù)器上部署的各數(shù)據(jù)庫的訪問信息,將在最近的一段時間內(nèi)訪問量低于預(yù)設(shè)值的的數(shù)據(jù)庫確定為需要下線的數(shù)據(jù)庫。