負(fù)載均衡方法及云平臺(tái)計(jì)算方法、云平臺(tái)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,尤其涉及一種負(fù)載均衡方法及云平臺(tái)計(jì)算方法、云 平臺(tái)。
【背景技術(shù)】
[0002] 云計(jì)算是繼1980年代大型計(jì)算機(jī)到客戶端-服務(wù)器的大轉(zhuǎn)變之后的又一種巨變, 是分布式計(jì)算(Distributed Computing)、并行計(jì)算(Parallel Computing)、效用計(jì)算 (Utility Computing)、網(wǎng)絡(luò)存儲(chǔ)(Network Storage Technologies)、虛擬化 (Virtualization)、負(fù)載均衡(Load Balance)、熱備份冗余(High Available)等傳統(tǒng)計(jì)算 機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物。云計(jì)算是通過(guò)使計(jì)算分布在大量的分布式計(jì)算機(jī)上,而非 本地計(jì)算機(jī)或遠(yuǎn)程服務(wù)器中,這使得企業(yè)能夠?qū)①Y源切換到需要的應(yīng)用上,根據(jù)需求訪問(wèn) 計(jì)算機(jī)和存儲(chǔ)系統(tǒng)。云計(jì)算平臺(tái)向用戶提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問(wèn)。用戶進(jìn)入可 配置的計(jì)算資源共享池(資源包括網(wǎng)絡(luò)、服務(wù)器、存儲(chǔ)、應(yīng)用軟件、服務(wù)),可以在投入很少的 管理工作以及與服務(wù)供應(yīng)端很少交互的情況下,快速獲取上述資源。
[0003] 云計(jì)算平臺(tái)需要面對(duì)大量的用戶,需要根據(jù)這些用戶的需求提供不同的服務(wù)。云 計(jì)算平臺(tái)在任務(wù)調(diào)度和資源分配的過(guò)程中,如果選中不能勝任的節(jié)點(diǎn)或者負(fù)載過(guò)重的節(jié) 點(diǎn),則會(huì)大大降低云計(jì)算平臺(tái)的執(zhí)行性能。因此如何為不同的用戶分配資源以及實(shí)現(xiàn)資源 的均衡分配是該云計(jì)算平臺(tái)所需要解決的問(wèn)題。目前解決云計(jì)算平臺(tái)負(fù)載均衡方法主要包 括靜態(tài)均衡策略和動(dòng)態(tài)均衡策略兩種方式。靜態(tài)均衡策略利用數(shù)學(xué)函數(shù)調(diào)度算法選擇節(jié)點(diǎn) 實(shí)現(xiàn)分配、執(zhí)行任務(wù)。但是不能動(dòng)態(tài)地調(diào)整云計(jì)算平臺(tái)中節(jié)點(diǎn)信息,從而使得部分節(jié)點(diǎn)的利 用率較低。動(dòng)態(tài)負(fù)載均衡策略根據(jù)平臺(tái)當(dāng)前狀態(tài)或最近狀態(tài)決定為每個(gè)節(jié)點(diǎn)分配任務(wù)。如 果存在節(jié)點(diǎn)任務(wù)超載,則將超載任務(wù)轉(zhuǎn)移給其它節(jié)點(diǎn)處理,從而達(dá)到動(dòng)態(tài)均衡的目的。但 是,超載任務(wù)的轉(zhuǎn)移會(huì)給平臺(tái)帶來(lái)額外的負(fù)擔(dān)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的其中一個(gè)目的在于提供一種負(fù)載均衡方法及云平臺(tái)計(jì)算方法、云平臺(tái), 以解決現(xiàn)有技術(shù)中部分節(jié)點(diǎn)利用率較低或者部分節(jié)點(diǎn)超載進(jìn)行超載任務(wù)轉(zhuǎn)移給平臺(tái)帶來(lái) 額外負(fù)擔(dān)的技術(shù)問(wèn)題。
[0005] 為實(shí)現(xiàn)上述發(fā)明目的,第一方面,本發(fā)明實(shí)施例提供了一種負(fù)載均衡方法,包括:
[0006] 獲取每個(gè)細(xì)粒度任務(wù)完成所需資源以及最晚完成時(shí)間,并按照最晚完成時(shí)間對(duì)全 部所述細(xì)粒度任務(wù)進(jìn)行排序,以獲取序列S;
[0007] 獲取每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度,并按照每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度大小進(jìn)行排序,以獲 取序列Si;
[0008] 從所述序列Sl內(nèi)選取節(jié)點(diǎn)分配給所述序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所分配的節(jié)點(diǎn) 需要實(shí)時(shí)負(fù)載度最小,且滿足每個(gè)細(xì)粒度任務(wù)完成所需資源的需求。
[0009] 可選地,所述從所述序列Sl內(nèi)選取節(jié)點(diǎn)分配給所述序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所 分配的節(jié)點(diǎn)需要實(shí)時(shí)負(fù)載度最小,且滿足每個(gè)細(xì)粒度任務(wù)完成所需資源的需求的步驟之 后,包括:
[0010]更新每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度。
[0011]可選地,所述獲取每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度的步驟中采用如下公式獲取實(shí)時(shí)負(fù)載 度:
i
[0013] 公式中,&為實(shí)時(shí)負(fù)載度;S1為權(quán)重系數(shù),且〇 < S1 J1為第i個(gè)計(jì)算因素;η為計(jì) 算因素總數(shù)。
[0014] 第二方面,本發(fā)明實(shí)施例還提供了一種基于負(fù)載均衡的云平臺(tái)計(jì)算方法,包括:
[0015] 當(dāng)接收到客戶端的服務(wù)請(qǐng)求時(shí),云平臺(tái)根據(jù)該服務(wù)請(qǐng)求獲取相對(duì)應(yīng)的服務(wù);
[0016] 將該服務(wù)分解成相互獨(dú)立的多個(gè)子任務(wù),并利用該多個(gè)子任務(wù)形成并行處理集 群;
[0017] 對(duì)所述并行處理集群進(jìn)行邏輯解析,以獲取多個(gè)邏輯任務(wù);
[0018] 將每個(gè)邏輯任務(wù)分解成多個(gè)細(xì)粒度任務(wù);
[0019] 利用負(fù)載均衡方法為每個(gè)細(xì)粒度任務(wù)分配資源;
[0020] 云平臺(tái)根據(jù)每個(gè)細(xì)粒度任務(wù)的完成情況將分析結(jié)果返回至客戶端。
[0021 ]可選地,所述負(fù)載均衡方法包括:
[0022]獲取每個(gè)細(xì)粒度任務(wù)完成所需資源以及最晚完成時(shí)間,并按照最晚完成時(shí)間對(duì)全 部所述細(xì)粒度任務(wù)進(jìn)行排序,以獲取序列S;
[0023] 獲取每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度,并按照每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度大小進(jìn)行排序,以獲 取序列SI;
[0024] 從所述序列Sl內(nèi)選取節(jié)點(diǎn)分配給所述序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所分配的節(jié)點(diǎn) 需要實(shí)時(shí)負(fù)載度最小,且滿足每個(gè)細(xì)粒度任務(wù)完成所需資源的需求。
[0025] 可選地,所述從所述序列Sl內(nèi)選取節(jié)點(diǎn)分配給所述序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所 分配的節(jié)點(diǎn)需要實(shí)時(shí)負(fù)載度最小,且滿足每個(gè)細(xì)粒度任務(wù)完成所需資源的需求的步驟之 后,包括:
[0026] 更新每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度。
[0027] 可選地,當(dāng)接收到上報(bào)信息時(shí),該云平臺(tái)對(duì)所述上報(bào)信息進(jìn)行元數(shù)據(jù)描述,以獲取 統(tǒng)一格式的數(shù)據(jù);
[0028]將該統(tǒng)一格式的數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0029] 可選地,采用可擴(kuò)展標(biāo)記語(yǔ)言XML對(duì)所述上報(bào)信息進(jìn)行元數(shù)據(jù)描述。
[0030] 第三方面,本發(fā)明實(shí)施例又提供了一種云平臺(tái),基于上文所述的云平臺(tái)計(jì)算方法 實(shí)現(xiàn),包括:
[0031] 數(shù)據(jù)存儲(chǔ)模塊,與邏輯處理模塊連接,用于上報(bào)信息的存儲(chǔ)與管理;
[0032] 數(shù)據(jù)請(qǐng)求分析模塊,分別與客戶端、邏輯處理模塊和負(fù)載均衡模塊相連,用于執(zhí)行 以下步驟:當(dāng)接收到客戶端的服務(wù)請(qǐng)求時(shí),根據(jù)該服務(wù)請(qǐng)求獲取相對(duì)應(yīng)的服務(wù);
[0033]將該服務(wù)分解成相互獨(dú)立的多個(gè)子任務(wù),并利用該多個(gè)子任務(wù)形成并行處理集 群;
[0034]對(duì)所述并行處理集群進(jìn)行邏輯解析,以獲取多個(gè)邏輯任務(wù);以及,
[0035]將數(shù)據(jù)分析結(jié)果返回客戶端;
[0036] 邏輯處理模塊,與數(shù)據(jù)請(qǐng)求分析模塊、數(shù)據(jù)存儲(chǔ)模塊以及負(fù)載均衡模塊連接,用于 根據(jù)多個(gè)邏輯任務(wù)訪問(wèn)數(shù)據(jù)存儲(chǔ)模塊以獲取存儲(chǔ)數(shù)據(jù),并將存儲(chǔ)數(shù)據(jù)返回?cái)?shù)據(jù)分析數(shù)據(jù)請(qǐng) 求分析模塊;
[0037] 負(fù)載均衡模塊,用于執(zhí)行以下步驟:
[0038]獲取每個(gè)細(xì)粒度任務(wù)完成所需資源以及最晚完成時(shí)間,并按照最晚完成時(shí)間對(duì)全 部所述細(xì)粒度任務(wù)進(jìn)行排序,以獲取序列S;
[0039] 獲取每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度,并按照每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度大小進(jìn)行排序,以獲 取序列SI;
[0040] 從所述序列Sl內(nèi)選取節(jié)點(diǎn)分配給所述序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所分配的節(jié)點(diǎn) 需要實(shí)時(shí)負(fù)載度最小,且滿足每個(gè)細(xì)粒度任務(wù)完成所需資源的需求。
[0041] 可選地,本發(fā)明實(shí)施例提供的云平臺(tái)還包括:數(shù)據(jù)上報(bào)分析模塊,與客戶端和數(shù)據(jù) 存儲(chǔ)平臺(tái)連接,用于當(dāng)接收到上報(bào)信息時(shí),對(duì)所述上報(bào)信息進(jìn)行元數(shù)據(jù)描述,以獲取統(tǒng)一格 式的數(shù)據(jù);并將該統(tǒng)一格式的數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0042] 本發(fā)明通過(guò)細(xì)粒度任務(wù)分解和時(shí)間排序,通過(guò)對(duì)細(xì)粒度任務(wù)的逐次資源分配,實(shí) 現(xiàn)了對(duì)云平臺(tái)各個(gè)節(jié)點(diǎn)負(fù)載情況的平衡。而細(xì)粒度任務(wù)的時(shí)間排序,保證了任務(wù)能在規(guī)定 的時(shí)間內(nèi)完成。本發(fā)明可以保證了網(wǎng)絡(luò)中節(jié)點(diǎn)的負(fù)載基本均衡,提高了資源的利用率,節(jié)約 了任務(wù)的執(zhí)行時(shí)間跨度,從而實(shí)現(xiàn)在云計(jì)算環(huán)境下安全高效地執(zhí)行任務(wù),又能夠?qū)崿F(xiàn)系統(tǒng) 中負(fù)載基本均衡的目標(biāo)。
【附圖說(shuō)明】
[0043]通過(guò)參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理 解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
[0044] 圖1是本發(fā)明實(shí)施例提供的一種負(fù)載均衡方法框圖;
[0045] 圖2是本發(fā)明實(shí)施例提供的一種基于負(fù)載均衡的云平臺(tái)計(jì)算方法流程示意圖;
[0046] 圖3是本發(fā)明實(shí)施例提供的一種云平臺(tái)框圖。
【具體實(shí)施方式】
[0047] 下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)描述。以下實(shí)施 例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。
[0048] 第一方面,本發(fā)明實(shí)施例提供了一種負(fù)載均衡方法,如圖1所示,包括:
[0049]獲取每個(gè)細(xì)粒度任務(wù)完成所需資源以及最晚完成時(shí)間,并按照最晚完成時(shí)間對(duì)全 部細(xì)粒度任務(wù)進(jìn)行排序,以獲取序列S;
[0050] 獲取每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度,并按照每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度大小進(jìn)行排序,以獲 取序列SI;
[0051] 從序列Sl內(nèi)選取節(jié)點(diǎn)分配給序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所分配的節(jié)點(diǎn)需要實(shí)時(shí) 負(fù)載度最小,且滿足每個(gè)細(xì)粒度任務(wù)完成所需資源的需求。
[0052] 本發(fā)明實(shí)施例中,假設(shè)有m個(gè)細(xì)粒度任務(wù):S1,s2,…sm,計(jì)算每個(gè)細(xì)粒度任務(wù)完成所 需資源和最晚完成時(shí)間,表示為:Sl(ri,tl),S2(r2,t2) ,以及計(jì)算所有細(xì)粒度任 務(wù)需要的資源總和R。
[0053] 實(shí)際應(yīng)用中,節(jié)點(diǎn)NJj為正整數(shù))每隔一定時(shí)間檢查自身的實(shí)際負(fù)載度實(shí)際 負(fù)載度采用以下公式(1)計(jì)算:
[0055]公式(1)中,'y為實(shí)時(shí)負(fù)載度J1為權(quán)重系數(shù),且〇< S1 <1也為第i個(gè)計(jì)算因素 ;η 為計(jì)算因素總數(shù)。
[0056]例如,本發(fā)明一實(shí)施例中,實(shí)時(shí)負(fù)載度的計(jì)算因素包括:CPU利用率E1、內(nèi)存性能E2、 磁盤性能E3、網(wǎng)絡(luò)性能E4和平均響應(yīng)時(shí)間E5。因此實(shí)時(shí)負(fù)載度計(jì)算公式為:
[0058]為節(jié)省節(jié)點(diǎn)查詢實(shí)時(shí)負(fù)載度所用時(shí)間,本發(fā)明實(shí)施例中,在從序列Sl內(nèi)選取節(jié)點(diǎn) 分配給序列S內(nèi)的每個(gè)細(xì)粒度任務(wù),所分配的節(jié)點(diǎn)需要實(shí)時(shí)負(fù)載度最小,且滿足每個(gè)細(xì)粒度 任務(wù)完成所需資源的需求的步驟之后,包括:
[0059]更新每個(gè)節(jié)點(diǎn)的實(shí)時(shí)負(fù)載度。
[0060]為保證在規(guī)定時(shí)間內(nèi)完成每個(gè)細(xì)粒度任務(wù),本發(fā)明實(shí)施例中根據(jù)每個(gè)細(xì)粒度任務(wù) 的最晚完成時(shí)間對(duì)所有細(xì)粒度任務(wù)進(jìn)行時(shí)間次序排序,按照時(shí)間次序依次完成每個(gè)細(xì)粒度 任務(wù),從而節(jié)約了任務(wù)的執(zhí)