通過調(diào)用和協(xié)調(diào)算法來獲取計(jì)算結(jié)果的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)程序的開發(fā)和應(yīng)用,具體提供一種通過調(diào)用和協(xié)調(diào)算法來獲取計(jì)算結(jié)果的方法和系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)有的計(jì)算機(jī)程序開發(fā)過程涉及業(yè)務(wù)人員與程序開發(fā)人員之間的緊密配合。具體而言,當(dāng)需要開發(fā)一款實(shí)現(xiàn)特定業(yè)務(wù)功能的程序時(shí),首先由業(yè)務(wù)人員將該業(yè)務(wù)的目標(biāo)和需求描述給程序開發(fā)人員,在充分理解該業(yè)務(wù)的細(xì)節(jié)之后,程序開發(fā)人員將這些需求和細(xì)節(jié)翻譯成計(jì)算機(jī)可識(shí)別的代碼。這些程序的應(yīng)用包括三個(gè)主要過程,即,讀取數(shù)據(jù)、程序計(jì)算以及系統(tǒng)給出計(jì)算結(jié)果。
[0003]上述程序的開發(fā)和應(yīng)用存在一些問題。首先,程序開發(fā)需要開發(fā)人員準(zhǔn)確理解具體業(yè)務(wù)內(nèi)容,否則便會(huì)導(dǎo)致開發(fā)出的程序運(yùn)算出錯(cuò)甚至無法實(shí)現(xiàn)業(yè)務(wù)需求。其次,如果出現(xiàn)新的業(yè)務(wù),就需要修改整個(gè)系統(tǒng)程序。再者,整個(gè)系統(tǒng)如果有一個(gè)計(jì)算出錯(cuò),也需要全部重新計(jì)算;如果業(yè)務(wù)或數(shù)據(jù)格式有變動(dòng)就需要更新整個(gè)系統(tǒng)。并且,系統(tǒng)的所有錯(cuò)誤都需要程序開發(fā)人員通過程序語言來調(diào)試。
【發(fā)明內(nèi)容】
[0004]本發(fā)明旨在解決現(xiàn)有技術(shù)中的上述問題,S卩,解決現(xiàn)有的計(jì)算機(jī)程序開發(fā)過程過度依賴程序開發(fā)人員的問題。
[0005]為此目的,本發(fā)明提供一種通過調(diào)用和協(xié)調(diào)算法來獲取計(jì)算結(jié)果的方法,該方法包括下列步驟:提供數(shù)據(jù)源,該數(shù)據(jù)源包括作為運(yùn)算對(duì)象而存儲(chǔ)的基礎(chǔ)數(shù)據(jù);提供算法庫,該算法庫包括實(shí)現(xiàn)具體業(yè)務(wù)所需的各種算法;其特征在于還包括下列步驟:將具體業(yè)務(wù)的計(jì)算過程按照優(yōu)先級(jí)分成多個(gè)層;為每個(gè)層分配層域協(xié)調(diào)器、一個(gè)或多個(gè)算法以及與所述算法對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)隊(duì)列,所述算法來自所述算法庫,而所述數(shù)據(jù)隊(duì)列來自所述數(shù)據(jù)源,其中所述層域協(xié)調(diào)器用于約定同層或不同層的算法與數(shù)據(jù)隊(duì)列之間的對(duì)應(yīng)關(guān)系,以便根據(jù)業(yè)務(wù)邏輯形成不同的計(jì)算處理路徑;以及匯聚各個(gè)層域協(xié)調(diào)器在每次業(yè)務(wù)計(jì)算過程中形成的動(dòng)態(tài)業(yè)務(wù)計(jì)算邏輯拓?fù)?,從而合并生成全局業(yè)務(wù)計(jì)算邏輯拓?fù)洹?br>[0006]在優(yōu)選實(shí)施方式中,每一層的數(shù)據(jù)隊(duì)列由該層的層域協(xié)調(diào)器根據(jù)本層算法的個(gè)數(shù)動(dòng)態(tài)生成,并且一個(gè)數(shù)據(jù)隊(duì)列僅對(duì)應(yīng)于一個(gè)算法。
[0007]在優(yōu)選實(shí)施方式中,一個(gè)算法可以從與同層其他算法對(duì)應(yīng)的數(shù)據(jù)隊(duì)列上獲取數(shù)據(jù)。
[0008]在優(yōu)選實(shí)施方式中,當(dāng)一個(gè)算法需要跨層獲取數(shù)據(jù)時(shí),由跨下層的算法將計(jì)算結(jié)果掛到自己的數(shù)據(jù)輸入隊(duì)列上。
[0009]在優(yōu)選實(shí)施方式中,所述跨層和跨數(shù)據(jù)隊(duì)列的數(shù)據(jù)獲取由涉及到的各個(gè)層的層域協(xié)調(diào)器進(jìn)行配置和約定。
[0010]在優(yōu)選實(shí)施方式中,當(dāng)同層的一個(gè)算法的計(jì)算結(jié)果需要作為另一個(gè)算法的數(shù)據(jù)輸入時(shí),所述另一個(gè)算法將越級(jí)到上一層。
[0011]在更優(yōu)選的實(shí)施方式中,所述全局業(yè)務(wù)計(jì)算邏輯拓?fù)淠軌蝻@示每個(gè)計(jì)算路徑的每個(gè)節(jié)點(diǎn)涉及到的算法、參數(shù)和數(shù)據(jù),并且所述全局業(yè)務(wù)計(jì)算邏輯拓?fù)湓诤罄m(xù)同類業(yè)務(wù)的計(jì)算過程中被直接調(diào)用。
[0012]在更優(yōu)選的實(shí)施方式中,所述多個(gè)層按照從最底層到最頂層的順序優(yōu)先級(jí)逐漸升高,并且所述方法的計(jì)算過程也是從最底層到最頂層依次進(jìn)行。
[0013]在更優(yōu)選的實(shí)施方式中,當(dāng)同層的一個(gè)算法引用另一個(gè)算法時(shí),所述另一個(gè)算法的優(yōu)先級(jí)高于所述一個(gè)算法。
[0014]在更優(yōu)選的實(shí)施方式中,在同一層內(nèi),如果有多個(gè)算法,則按照被引用的順序來排列優(yōu)先級(jí),并且不引用其他算法的那個(gè)算法的優(yōu)先級(jí)最高。
[0015]在更優(yōu)選的實(shí)施方式中,具有相同優(yōu)先級(jí)的算法在同一時(shí)刻被分布式執(zhí)行。
[0016]在更優(yōu)選的實(shí)施方式中,所述全局業(yè)務(wù)計(jì)算邏輯拓?fù)溆扇衷\斷器生成,并且所述全局診斷器和/或所述層域協(xié)調(diào)器對(duì)各個(gè)算法和算法的結(jié)果被調(diào)用的次數(shù)進(jìn)行統(tǒng)計(jì),以便確定特定算法是否需要具有實(shí)體。這里的表述“算法具有實(shí)體”意指系統(tǒng)會(huì)在沒有開始計(jì)算的時(shí)候?yàn)榱颂岣咝阅?節(jié)約準(zhǔn)備時(shí)間)而在內(nèi)存中先創(chuàng)建算法的實(shí)體。類似cache (緩存),主要用于提高系統(tǒng)響應(yīng)速度。
[0017]在更優(yōu)選的實(shí)施方式中,所述全局診斷器和/或所述層域協(xié)調(diào)器對(duì)各個(gè)算法的執(zhí)行時(shí)間長度進(jìn)行統(tǒng)計(jì),以便分析算法的性能。
[0018]在更優(yōu)選的實(shí)施方式中,當(dāng)一個(gè)算法不能執(zhí)行時(shí),引用該算法的算法也不再執(zhí)行;并且當(dāng)一個(gè)不能執(zhí)行的算法恢復(fù)執(zhí)行時(shí),引用該算法的算法也恢復(fù)執(zhí)行。
[0019]在更優(yōu)選的實(shí)施方式中,所述全局診斷器和所述層域協(xié)調(diào)器都是調(diào)度算法。
[0020]根據(jù)本發(fā)明的另一個(gè)方面,提供了一種通過調(diào)用和協(xié)調(diào)算法來獲取計(jì)算結(jié)果的系統(tǒng),包括:數(shù)據(jù)源,該數(shù)據(jù)源包括作為運(yùn)算對(duì)象而存儲(chǔ)的基礎(chǔ)數(shù)據(jù);算法庫,該算法庫包括實(shí)現(xiàn)具體業(yè)務(wù)所需的各種算法;其特征在于還包括:按照具體業(yè)務(wù)計(jì)算過程的優(yōu)先級(jí)分出的多個(gè)層,每個(gè)層都包括層域協(xié)調(diào)器、一個(gè)或多個(gè)算法以及與所述算法對(duì)應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)隊(duì)列,所述算法來自所述算法庫,而所述數(shù)據(jù)隊(duì)列來自所述數(shù)據(jù)源,其中所述層域協(xié)調(diào)器用于約定同層或不同層的算法與數(shù)據(jù)隊(duì)列之間的對(duì)應(yīng)關(guān)系,以便根據(jù)業(yè)務(wù)邏輯形成不同的計(jì)算處理路徑;以及全局診斷器,該全局診斷器用于匯聚各個(gè)層域協(xié)調(diào)器在每次業(yè)務(wù)計(jì)算過程中形成的動(dòng)態(tài)業(yè)務(wù)計(jì)算邏輯拓?fù)?,從而合并生成全局業(yè)務(wù)計(jì)算邏輯拓?fù)洹?br>[0021]在優(yōu)選實(shí)施方式中,每一層的數(shù)據(jù)隊(duì)列由該層的層域協(xié)調(diào)器根據(jù)本層算法的個(gè)數(shù)動(dòng)態(tài)生成,并且一個(gè)數(shù)據(jù)隊(duì)列僅對(duì)應(yīng)于一個(gè)算法。
[0022]在優(yōu)選實(shí)施方式中,一個(gè)算法可以從與同層其他算法對(duì)應(yīng)的數(shù)據(jù)隊(duì)列上獲取數(shù)據(jù)。
[0023]在優(yōu)選實(shí)施方式中,當(dāng)一個(gè)算法需要跨層獲取數(shù)據(jù)時(shí),由跨下層的算法將計(jì)算結(jié)果掛到自己的數(shù)據(jù)輸入隊(duì)列上。
[0024]在優(yōu)選實(shí)施方式中,所述跨層和跨數(shù)據(jù)隊(duì)列的數(shù)據(jù)獲取由涉及到的各個(gè)層的層域協(xié)調(diào)器進(jìn)行配置和約定。
[0025]在優(yōu)選實(shí)施方式中,當(dāng)同層的一個(gè)算法的計(jì)算結(jié)果需要作為另一個(gè)算法的數(shù)據(jù)輸入時(shí),所述另一個(gè)算法將越級(jí)到上一層。
[0026]在更優(yōu)選的實(shí)施方式中,所述全局業(yè)務(wù)計(jì)算邏輯拓?fù)淠軌蝻@示每個(gè)計(jì)算路徑的每個(gè)節(jié)點(diǎn)涉及到的算法、參數(shù)和數(shù)據(jù),并且所述全局業(yè)務(wù)計(jì)算邏輯拓?fù)湓诤罄m(xù)同類業(yè)務(wù)的計(jì)算過程中被直接調(diào)用。
[0027]在更優(yōu)選的實(shí)施方式中,所述多個(gè)層按照從最底層到最頂層的順序優(yōu)先級(jí)逐漸升高,并且所述方法的計(jì)算過程也是從最底層到最頂層依次進(jìn)行。
[0028]在更優(yōu)選的實(shí)施方式中,當(dāng)同層的一個(gè)算法引用另一個(gè)算法時(shí),所述另一個(gè)算法的優(yōu)先級(jí)高于所述一個(gè)算法。
[0029]在更優(yōu)選的實(shí)施方式中,在同一層內(nèi),如果有多個(gè)算法,則按照被引用的順序來排列優(yōu)先級(jí),并且不引用其他算法的那個(gè)算法的優(yōu)先級(jí)最高。
[0030]在更優(yōu)選的實(shí)施方式中,具有相同優(yōu)先級(jí)的算法在同一時(shí)刻被分布式執(zhí)行。
[0031]在更優(yōu)選的實(shí)施方式中,所述全局診斷器和/或所述層域協(xié)調(diào)器對(duì)各個(gè)算法和算法的結(jié)果被調(diào)用的次數(shù)進(jìn)行統(tǒng)計(jì),以便確定特定算法是否需要具有實(shí)體。
[0032]在更優(yōu)選的實(shí)施方式中,所述全局診斷器和/或所述層域協(xié)調(diào)器對(duì)各個(gè)算法的執(zhí)行時(shí)間長度進(jìn)行統(tǒng)計(jì),以便分析算法的性能。
[0033]在更優(yōu)選的實(shí)施方式中,當(dāng)一個(gè)算法不能執(zhí)行時(shí),引用該算法的算法也不再執(zhí)行;并且當(dāng)一個(gè)不能執(zhí)行的算法恢復(fù)執(zhí)行時(shí),引用該算法的算法也恢復(fù)執(zhí)行。
[0034]在更優(yōu)選的實(shí)施方式中,所述全局診斷器和所述層域協(xié)調(diào)器都是調(diào)度算法。
[0035]本領(lǐng)域技術(shù)人員能夠理解的是,本發(fā)明的系統(tǒng)和方法形成了一種自底層向頂層逐級(jí)計(jì)算的彈性分層框架,每個(gè)層的層域協(xié)調(diào)器負(fù)責(zé)該層的算法和數(shù)據(jù)隊(duì)列的調(diào)用和協(xié)調(diào),而全局診斷器負(fù)責(zé)