北大數(shù)字中國研究院副院長方裕演講
新浪科技訊 2009GIS產(chǎn)業(yè)發(fā)展論壇11月18日在深圳舉行,本屆論壇主題為“自主創(chuàng)新 合作共贏”。新浪網(wǎng)為獨(dú)家支持網(wǎng)絡(luò)媒體。以上圖為北京大學(xué)數(shù)字中國研究院副院長方裕做題為《GIS技術(shù)發(fā)展重要方向----網(wǎng)格GIS》的主題演講。
以下為演講實(shí)錄
各位下午好,我今天下午報(bào)告的題目是網(wǎng)格GIS。網(wǎng)格計(jì)算技術(shù)的名字比較新,實(shí)際上由來已久。20世紀(jì)的60年代的時(shí)候已經(jīng)進(jìn)入了第三代計(jì)算機(jī),這個(gè)時(shí)候就有這樣一種夢(mèng)想,能不能把計(jì)算機(jī)連起來變成一個(gè)超級(jí)計(jì)算機(jī),變成一個(gè)大的計(jì)算環(huán)境,可以共享計(jì)算資源。那個(gè)時(shí)候只是僅僅說說而已,因?yàn)榫W(wǎng)絡(luò)技術(shù)沒有發(fā)展到這個(gè)程度。當(dāng)時(shí)局域網(wǎng)還不太成熟,所以僅僅是一些想法。到70年代、80年代的時(shí)候局域網(wǎng)的技術(shù)已經(jīng)基本成熟了,所以這個(gè)時(shí)候就正式提出“分布式計(jì)算”,分布式計(jì)算在美國當(dāng)時(shí)也花了上百萬美元開始研究,開始研究的這個(gè)公司后來倒閉了。
當(dāng)時(shí)第一個(gè)實(shí)驗(yàn)系統(tǒng)叫MEDUSA,是用了12臺(tái)PDP器,當(dāng)然那個(gè)時(shí)候由于種種原因特別是技術(shù)上的原因,包括系統(tǒng)軟件方面的原因,最后這個(gè)項(xiàng)目以失敗告終。但是給人們留下了很多思考的問題,也就是說它的教訓(xùn)為后人積淀了很多避免類似錯(cuò)誤發(fā)生的基礎(chǔ)。分布式計(jì)算那個(gè)時(shí)候失敗以后沉寂了一段時(shí)間,80年代以后也沒有再提分布式計(jì)算,那個(gè)時(shí)候網(wǎng)絡(luò)技術(shù)與局域網(wǎng)技術(shù)已經(jīng)非常成熟了,當(dāng)然也提出了CSCW就是所謂的協(xié)同工作技術(shù),但沒有大的項(xiàng)目出現(xiàn),沒有花大力氣研究,而只是在理論上進(jìn)行探討。進(jìn)入20世紀(jì)90年代IT技術(shù)方面主要是兩大進(jìn)展,第一大進(jìn)展是面向?qū)ο蟮募夹g(shù)日趨成熟,而且進(jìn)入了使用階段,像BS結(jié)構(gòu)取代了CS結(jié)構(gòu)。到了90年代中期提出了網(wǎng)格計(jì)算,又重新拾起原來的分布式計(jì)算。應(yīng)該這么說,60年代起對(duì)分布式計(jì)算的技術(shù)目標(biāo)定的過高,所以一直存在著許多問題。那么,在90年代以后開始對(duì)目標(biāo)做一些小小的修正,特別是一些無法實(shí)現(xiàn)的目標(biāo)做了修正。比方說我們并不想把許許多多的東西都塞到里頭去,比方說在大的計(jì)算機(jī)集群,很多很多計(jì)算機(jī)連在一起的環(huán)境中不一定要做編輯、不一定要做修改,這個(gè)東西也是可以理解的。因?yàn)檫呺H修改的東西在單機(jī)上就可以實(shí)現(xiàn),何必在這個(gè)上面做。而在這上面做主要是解決如何共享資源,這個(gè)資源包括計(jì)算資源和數(shù)據(jù)資源,計(jì)算資源當(dāng)然是以硬件為主的。網(wǎng)格計(jì)算在90年代又掀起高潮,盡管到目前為止還是在受限的條件下投入使用,但仍然在進(jìn)一步的發(fā)展中。所以最近又出現(xiàn)了所謂的云技術(shù)、所謂的云計(jì)算。說句老實(shí)話,凡是同樣一個(gè)內(nèi)容的東西老在變名字說明什么呢?說明它還不夠完善或者說還不夠完備,還存在問題。換名字大概就是這樣,否則完全成熟了,像“計(jì)算機(jī)”就沒有再聽說叫另外的名字。
在國外首先提出網(wǎng)格計(jì)算的時(shí)候就是希望這個(gè)機(jī)器用了網(wǎng)格就像我們的電一樣,一拉開關(guān)燈就亮了,至于電網(wǎng)里面的這個(gè)電是哪兒供應(yīng)的,我相信像深圳也不止由一個(gè)電廠供應(yīng),是不是大亞灣也進(jìn)行了供應(yīng),這個(gè)我并不知道。我并不關(guān)心電是哪個(gè)電廠發(fā)的,當(dāng)然在系統(tǒng)內(nèi)部要結(jié)算還是需要的,作為用戶根本不需要。也就是說我可以去任何一個(gè)地方,只要是連了電網(wǎng)的,任何一個(gè)結(jié)點(diǎn)上的資源都可以用,想用我們就可以用。大家都知道Grid,像中國電網(wǎng)就叫China Grid。
網(wǎng)格計(jì)算的實(shí)質(zhì)是三個(gè)共享:一是實(shí)現(xiàn)計(jì)算資源的高度共享;二是實(shí)現(xiàn)數(shù)據(jù)資源的高度共享;三是實(shí)現(xiàn)服務(wù)的高度共享。換句話說就是借助于互聯(lián)網(wǎng)將有限個(gè)參與的同構(gòu)或異構(gòu)計(jì)算機(jī)系統(tǒng)整合,形成一個(gè)巨大的虛擬計(jì)算平臺(tái),如同一個(gè)計(jì)算機(jī)一樣。
網(wǎng)格技術(shù)最關(guān)鍵的一條就是協(xié)調(diào)廣域范圍內(nèi)的資源。而網(wǎng)格計(jì)算的基本原理就是說在任何一個(gè)結(jié)點(diǎn)上都可以使用到網(wǎng)格內(nèi)的任何資源,不管這個(gè)資源生存在哪個(gè)結(jié)點(diǎn)上。當(dāng)然,在網(wǎng)格基本技術(shù)研究方面比較典型的就是所謂的層次模型,這個(gè)我也不再細(xì)講。
按照應(yīng)用可以分為計(jì)算網(wǎng)格、數(shù)據(jù)網(wǎng)格和服務(wù)網(wǎng)格。相關(guān)的工作在美國、在歐洲及其他國家都做的很多,美國有NTG、DTF,國防部也有GIG,GIG主要是空間數(shù)據(jù)的共享。歐洲也有,像歐洲的數(shù)據(jù)網(wǎng)格,英國有英國的國家網(wǎng)格等等。這是一些地方典型網(wǎng)格的資料介紹。這是一張列表,我們國家也有,十一五建設(shè)網(wǎng)格。還有中國的教育科研網(wǎng)格。
P2P就是對(duì)等計(jì)算是廣域分布式計(jì)算的新趨勢,基本的思路我剛才已經(jīng)講過了,在一個(gè)結(jié)點(diǎn)上可以使用任意一個(gè)加入這個(gè)系統(tǒng)結(jié)點(diǎn)的資源。也試圖用不同的計(jì)算系統(tǒng)統(tǒng)一到Grid上來。網(wǎng)格計(jì)算的核心技術(shù)就是對(duì)等計(jì)算技術(shù),包括資源管理技術(shù)、計(jì)算任務(wù)調(diào)度技術(shù)、負(fù)載平衡技術(shù)、容錯(cuò)技術(shù)等等,同時(shí)要求信息隱蔽和數(shù)據(jù)抽象,還包括一些安全方面的比如數(shù)據(jù)方面的完整性、一致性問題。
關(guān)于地理信息系統(tǒng)也很快的說一下,地理信息系統(tǒng)是一類獲取、處理、分析、表示并在不同系統(tǒng)、不同地點(diǎn)和不同用戶之間傳輸空間數(shù)據(jù)的計(jì)算機(jī)應(yīng)用系統(tǒng)。這個(gè)定義本身包含了在不同的機(jī)器之間如何共享資源的問題。地理信息系統(tǒng)從學(xué)科分界的角度來說,任何一個(gè)學(xué)科都一樣,包含三個(gè)層次:理論方法、技術(shù)工具、應(yīng)用和服務(wù)。作為GIS層次應(yīng)該在一層次和二層次范疇,重點(diǎn)在第二層次,當(dāng)然有一部分是在第一層次。這是GIS平臺(tái)的三層架構(gòu),包括基礎(chǔ)平臺(tái)、行業(yè)應(yīng)用開發(fā)平臺(tái)以及應(yīng)用系統(tǒng)和應(yīng)用軟件。實(shí)際上網(wǎng)格計(jì)算應(yīng)該屬于最底層的技術(shù)。
網(wǎng)格計(jì)算對(duì)我們來說就是地理信息系統(tǒng),實(shí)際上在應(yīng)用中要求是非常迫切的,也就是說無論在廣域的范圍內(nèi)的應(yīng)用以及行業(yè)范圍內(nèi)的一些應(yīng)用,都希望使用網(wǎng)格技術(shù)、使用網(wǎng)格地理信息系統(tǒng),尤其GIS更是這樣,因?yàn)樗枰臄?shù)據(jù)非常多,大量的應(yīng)用涉及到的數(shù)據(jù)非常多,而這些數(shù)據(jù)又不可能完全集中在一臺(tái)或數(shù)臺(tái)機(jī)器上。特別是在我們國家更是有很多數(shù)據(jù),比如各省的數(shù)據(jù)由省里來維護(hù)、更新,往往是放在本地的。但是他們的使用卻是很多地方都用得到,所以先把數(shù)據(jù)完全統(tǒng)起來,從管理的角度比較困難一些。對(duì)于網(wǎng)格GIS來說,它的目標(biāo)跟網(wǎng)格計(jì)算是一樣的。換句話說網(wǎng)格GIS的總體目標(biāo)是建立一個(gè)分布式的地理信息系統(tǒng)軟件平臺(tái),這個(gè)軟件平臺(tái)由若干臺(tái)計(jì)算機(jī)所組成,互聯(lián)網(wǎng)環(huán)境下可以跨地域、跨平臺(tái)、協(xié)同工作的GIS集群系統(tǒng)??梢詫?shí)現(xiàn)用戶能夠使用第四代語言自行組織和定制地理信息和地理空間數(shù)據(jù)的計(jì)算服務(wù),為空間數(shù)據(jù)的網(wǎng)格計(jì)算提供系統(tǒng)級(jí)軟件支持。最后當(dāng)然是實(shí)現(xiàn)共享,實(shí)現(xiàn)計(jì)算資源和計(jì)算能力的共享。
它的主要技術(shù)指標(biāo):首先是面向空間實(shí)體及其關(guān)系的數(shù)據(jù)組織與存儲(chǔ),怎么存,怎么反應(yīng)出來,不光是存,而且要反應(yīng)出來,讓其他的結(jié)點(diǎn)所了解、所知道,這是第一個(gè)問題。第二是如何支持多個(gè)空間數(shù)據(jù)庫,一個(gè)應(yīng)用可能涉及到很多空間數(shù)據(jù)庫,我們這里也不妨把它叫做空間數(shù)據(jù)庫集群,如何運(yùn)用多個(gè)空間數(shù)據(jù)庫來完成一件計(jì)算任務(wù),完成一個(gè)應(yīng)用;第三是支持組成這個(gè)系統(tǒng)的各個(gè)計(jì)算機(jī)之間的協(xié)同計(jì)算,換句話說一個(gè)計(jì)算任務(wù)完全可以分布在若干個(gè)計(jì)算結(jié)點(diǎn)上。第四是計(jì)算完了經(jīng)過整理向用戶提交計(jì)算結(jié)果,而用戶本身并不關(guān)心提交的任務(wù)在哪些結(jié)點(diǎn)上運(yùn)行。另外是要提供一種讓用戶提交計(jì)算任務(wù)的手段,這就是所謂的面向問題的空間查詢語言,然后利用這個(gè)空間查詢語言可以開發(fā)查詢的程序,然后提交,最后提交結(jié)果。這里面可能還有一些新型的空間數(shù)據(jù)模型和新型的空間數(shù)據(jù)關(guān)系和空間的算式。
它的運(yùn)行架構(gòu)說起來簡單也非常簡單,這張圖很形象的說明,我們把這些叫做服務(wù)器(見圖),實(shí)際上叫做網(wǎng)格計(jì)算結(jié)點(diǎn),通過互聯(lián)網(wǎng)聯(lián)系起來。聯(lián)系起來以后用戶可以通過互聯(lián)網(wǎng)連到某一臺(tái)結(jié)點(diǎn)上,這時(shí)候利用門戶技術(shù),實(shí)際上中間也可以再加一臺(tái)機(jī)器,這臺(tái)機(jī)器叫門戶機(jī),門戶機(jī)進(jìn)行提交,當(dāng)然這個(gè)門戶機(jī)完全可以不在分布式結(jié)點(diǎn)上,在網(wǎng)格結(jié)點(diǎn)上就合一了。就像售票一樣,火車售票處離開了火車站就是個(gè)門戶,如果北京站下面就有一個(gè)售票處,那就是北京站的售票,實(shí)際上是一樣的,這個(gè)售票處就是門戶的概念,我這里為了畫的方便把門戶省掉了。這個(gè)沒關(guān)系,門戶就是個(gè)二轉(zhuǎn)手。
具體來說,要解決一個(gè)計(jì)算任務(wù)或者要完成一個(gè)計(jì)算任務(wù),在網(wǎng)格里的計(jì)算任務(wù)分哪幾步呢?首先第一步是用戶用第四代語言在本機(jī)上起草任務(wù)解決方案,也就是編制所謂的計(jì)算任務(wù)程序,我們叫做空間查詢語言以及結(jié)合常規(guī)的計(jì)算語言編輯它的任務(wù)書,然后向計(jì)算結(jié)點(diǎn)提交或者說通過門戶向計(jì)算結(jié)點(diǎn)提交,這是第一步。第二步,協(xié)同的計(jì)算結(jié)點(diǎn)或網(wǎng)格結(jié)點(diǎn),網(wǎng)格結(jié)點(diǎn)接到計(jì)算任務(wù)以后對(duì)計(jì)算任務(wù)進(jìn)行解意,形成了操作原語(包括操作對(duì)象、操作體)在內(nèi)所組成的完整系列。網(wǎng)格結(jié)點(diǎn)接到任務(wù)以后就對(duì)它進(jìn)行解意,形成操作序列。形成操作序列以后第三步是網(wǎng)格結(jié)點(diǎn)根據(jù)全局目錄對(duì)操作系列進(jìn)行拆分,確保每一個(gè)操作原語的執(zhí)行地點(diǎn),這樣就形成了分布方案。形成分布方案就要向相關(guān)的計(jì)算結(jié)點(diǎn)發(fā)送操作原理,這樣發(fā)起了一次分布式的或者網(wǎng)格計(jì)算事務(wù)。第四步,有關(guān)網(wǎng)格結(jié)點(diǎn)接到了操作任務(wù)以后就啟動(dòng)分布式計(jì)算系統(tǒng),然后分別進(jìn)行計(jì)算,當(dāng)然這里面如果有必要可以進(jìn)行二次分布,比方說在空間信息計(jì)算里有時(shí)候有二位運(yùn)算,單位運(yùn)算好辦,送過去的數(shù)據(jù)肯定有,沒有就不會(huì)分了,可能還有二次運(yùn)算,有時(shí)候可能會(huì)出現(xiàn)這種情況。二次運(yùn)算的兩個(gè)操作對(duì)象分別在不同的機(jī)器上,可能把這個(gè)結(jié)點(diǎn)交給另外一個(gè)結(jié)點(diǎn),這叫做數(shù)據(jù)遷移了,我們叫做二次運(yùn)算,類似的情況是這樣。當(dāng)計(jì)算任務(wù)完成以后接到分任務(wù)的結(jié)點(diǎn)就回送計(jì)算結(jié)果,如果有必要的話發(fā)起一個(gè)同步任務(wù),相當(dāng)于數(shù)據(jù)庫里所謂的二次提交技術(shù)。另外如果有進(jìn)行修改的話,計(jì)算過程中有進(jìn)行修改的話還要發(fā)起數(shù)據(jù)同步,因?yàn)橐WC主副器,這種情況我們盡量避免出現(xiàn),因?yàn)橛械臅r(shí)候會(huì)出現(xiàn)不確定性問題。為什么呢?普通計(jì)算問題不大,特別是修改,如果說一個(gè)數(shù)據(jù)在這個(gè)網(wǎng)格系統(tǒng)里有多個(gè),單機(jī)上我們完全可以遵循語音,任何一次修改以后的結(jié)果立刻被大家所感受到,在單機(jī)上可以,在網(wǎng)絡(luò)系統(tǒng)上會(huì)出現(xiàn)這樣的問題,完全有可能在同一個(gè)時(shí)間分別在兩個(gè)結(jié)點(diǎn)上對(duì)主本、副本或兩個(gè)副本同時(shí)進(jìn)行修改,這時(shí)候就會(huì)出現(xiàn)數(shù)據(jù)的不一致性問題,所以這個(gè)盡量慎用。
各個(gè)結(jié)點(diǎn)都已經(jīng)完成計(jì)算任務(wù)以后,向發(fā)起結(jié)點(diǎn)回送計(jì)算結(jié)果以后,那么就由發(fā)起這次分布式事務(wù)的結(jié)點(diǎn)進(jìn)行匯總和整理。完成以后就是極速分布式事務(wù)就是所謂的二次提交,然后向用戶返回計(jì)算結(jié)果。用戶接到計(jì)算結(jié)果以后本次任務(wù)就結(jié)束了。
從這個(gè)流程看,實(shí)際上當(dāng)一個(gè)用戶提交了網(wǎng)格計(jì)算任務(wù)以后,他并不知道你這個(gè)任務(wù)到底涉及到多少個(gè)結(jié)點(diǎn),到底涉及到多少個(gè)結(jié)點(diǎn)進(jìn)行計(jì)算,這個(gè)是一樣的。對(duì)用戶來說我只需要得到正確的結(jié)果就可以。這里頭有一些關(guān)鍵技術(shù),首先一個(gè)關(guān)鍵技術(shù)是計(jì)算任務(wù)的組織,計(jì)算任務(wù)的組織實(shí)際上就涉及到網(wǎng)格空間計(jì)算語言的審計(jì),我們把它叫做面向問題的計(jì)算任務(wù)描述語言以及它的(解譯)機(jī)制。如何設(shè)計(jì)出一套語言來,這套語言可以用來描述一個(gè)大的計(jì)算任務(wù),然后又怎么能夠?qū)@個(gè)任務(wù)進(jìn)行解譯變成若干個(gè)操作步,這是第一個(gè)比較大的關(guān)鍵技術(shù)。第二個(gè)大的關(guān)鍵技術(shù),已經(jīng)描述成了若干個(gè)操作步所組成的序列,如何根據(jù)系統(tǒng)當(dāng)時(shí)的資源情況進(jìn)行分布,分布到不同的結(jié)點(diǎn)上,也就是說要為這些計(jì)算原語尋找執(zhí)行地點(diǎn),而且要經(jīng)常優(yōu)化,因?yàn)橥耆赡艹霈F(xiàn)具備這個(gè)計(jì)算能力的若干個(gè)結(jié)點(diǎn),你怎么來開,開哪個(gè)?第三個(gè)關(guān)鍵問題就是實(shí)現(xiàn)計(jì)算,這里面包括了面向?qū)ο蟮臄?shù)據(jù)組織、存儲(chǔ)與操縱,第三點(diǎn)原則上和單機(jī)上的任務(wù)相仿,只不過這里頭會(huì)出現(xiàn)計(jì)算過程中出現(xiàn)問題的時(shí)候做二次補(bǔ)償?shù)膯栴},我做不了了再把它傳給另一個(gè)有能力進(jìn)行計(jì)算任務(wù)的結(jié)點(diǎn)。另外一點(diǎn)要保證地理空間數(shù)據(jù)的完整性和一致性,在可能的情況下還要實(shí)現(xiàn)系統(tǒng)的負(fù)載平衡和容錯(cuò),負(fù)載平衡也比較困難,但還可以做到一些,容錯(cuò)實(shí)現(xiàn)很困難,這個(gè)要求很高,目前也沒有很好的辦法。
首先設(shè)計(jì)一個(gè)面向問題的時(shí)空查詢語言,我們叫做STCQL。這個(gè)查詢語言的目標(biāo)就是提供計(jì)算任務(wù)的組織工具和任務(wù)解譯機(jī)制,這里面包括這樣一些內(nèi)容,計(jì)算任務(wù)的組織工具部署在客戶端上,這是沒有問題的,客戶端書寫他的計(jì)算任務(wù)。而任務(wù)解析解譯機(jī)制是部署在網(wǎng)格結(jié)點(diǎn)上,包括提供了詞法檢查、語法檢查、目標(biāo)代真(生成計(jì)算原語的序列及其分布方案),配合計(jì)算任務(wù)分布引擎發(fā)出去。這個(gè)語言的使用方法既可以單獨(dú)使用,也可以嵌入程序設(shè)計(jì)語言使用。它的特點(diǎn)是引入了一系列新的空間,引入了一些新的數(shù)據(jù)類型,包括時(shí)空數(shù)據(jù)類型和“場” 數(shù)據(jù)類型。另外定義了關(guān)系監(jiān)測、關(guān)系計(jì)算、關(guān)系合成和幾何體之間運(yùn)算等四大類的空間關(guān)系算子以及他們的組合算子,然后定義一些空間的函數(shù),時(shí)間的函數(shù)和時(shí)空結(jié)合的函數(shù),包括他們的實(shí)現(xiàn)。還要定義一些“長”數(shù)據(jù)進(jìn)行計(jì)算進(jìn)行的解析和數(shù)據(jù)。
STCQL的數(shù)據(jù)類型包括時(shí)空復(fù)合體類型、空間體類型、時(shí)間體類型、空間尺度類寫、時(shí)間尺度類型、“場”類型,他們的對(duì)象實(shí)例可以通過按照一定規(guī)格排列的字符串來表示,也可以通過時(shí)空函數(shù)或聚集函數(shù)來生成。實(shí)際上計(jì)算任務(wù)經(jīng)過解譯以后就生成了這么一個(gè)計(jì)算方案,這個(gè)計(jì)算方案是由并行語句所組成的,也就是說這些語句是可以分布到別的機(jī)器上去,并行語句本身又有若干個(gè)并行線索所組成,實(shí)際上它是兩個(gè)并行。一個(gè)并行是并行語句的并行,并行語句可以分布在不同的結(jié)點(diǎn)上。第二是當(dāng)一個(gè)并行語句分布到了一個(gè)網(wǎng)格結(jié)點(diǎn)上,那么它又可以采用多道程序技術(shù)形成了并行線索,也就是說在同一臺(tái)機(jī)器上進(jìn)行計(jì)算。換句話說,同一個(gè)并行語句中的一個(gè)線索是在一臺(tái)機(jī)上進(jìn)行的。
這是一個(gè)控制流序列的例子(見圖),在這里就不細(xì)講了,是我們測試的例子。另外是STCQL的空間關(guān)系謂詞和空間函數(shù)也不惜說了,總共擴(kuò)充了11類時(shí)間關(guān)系謂詞和1類時(shí)間關(guān)系函數(shù),設(shè)計(jì)了4類時(shí)空關(guān)系謂詞和13類時(shí)空構(gòu)造函數(shù),還有1類時(shí)空運(yùn)動(dòng)構(gòu)造函數(shù)和4類具體運(yùn)動(dòng)函數(shù),因?yàn)闀r(shí)間關(guān)系也不多講例子了,包括平移運(yùn)動(dòng)、收縮運(yùn)動(dòng)、穿越關(guān)系等等。
剛才已經(jīng)說到當(dāng)一個(gè)并行結(jié)點(diǎn)生成并行方案以后就要進(jìn)行分布,生成并行方案我們有幾個(gè)優(yōu)先,也就是說確定分布到哪里去有幾個(gè)優(yōu)先,第一個(gè)優(yōu)先是就地計(jì)算,就地計(jì)算最優(yōu)先,在本地能夠計(jì)算的盡可能在本地計(jì)算,因?yàn)檫@樣省去了很多網(wǎng)絡(luò)的開銷和其他不確定性因素,自己做最放心。除非自己的計(jì)算任務(wù)已經(jīng)非常重了需要分布出去,另外一類是本地沒有條件進(jìn)行計(jì)算,也就是說計(jì)算時(shí)所涉及到的空間資源我本地沒有,這時(shí)候就要將計(jì)算分布到擁有資源的結(jié)點(diǎn)上去,所以我們第二優(yōu)先是資源的分布,也就是說分到具有合適的計(jì)算資源結(jié)點(diǎn)上。只有第三優(yōu)先才考慮計(jì)算能力或負(fù)載平衡,假如說同時(shí)可以有兩個(gè)或三個(gè)結(jié)點(diǎn)能夠計(jì)算這個(gè)任務(wù),這時(shí)候分布就要挑計(jì)算負(fù)載比較輕的結(jié)點(diǎn)作為目的地。而分布的依據(jù),實(shí)際上這個(gè)系統(tǒng)設(shè)計(jì)了一個(gè)全局目錄,全局目錄在每個(gè)結(jié)點(diǎn)上都有一個(gè),當(dāng)然要對(duì)全局目錄進(jìn)行同步,每次計(jì)算任務(wù)完了以后都要進(jìn)行同步,因?yàn)槿重?fù)載目錄首先包括加入這個(gè)系統(tǒng)的多少個(gè)結(jié)點(diǎn),都在什么地方,這是第一步。第二步是要有一個(gè)全局的資源目錄。第三步是有全局計(jì)算資源目錄,這也是屬于目錄的一部分。主要是看它的負(fù)載,當(dāng)前負(fù)載是比較簡單的,這個(gè)負(fù)載就是CPU的利用率,CPU利用率越高負(fù)載越大。
這里面還有許多細(xì)節(jié)問題,其中一個(gè)細(xì)節(jié)問題剛才已經(jīng)提到了,就是所謂的多目算子,(二目)以上的,這個(gè)肯定會(huì)出現(xiàn)二次分布。另外是全局目錄的一致性問題,如何進(jìn)行全局目錄的同步。第三個(gè)問題是分布式數(shù)據(jù)庫事務(wù)的組織和嵌套,整個(gè)計(jì)算任務(wù)是一個(gè)分布式事務(wù),但分布到每個(gè)結(jié)點(diǎn)上的任務(wù)也是一個(gè)事務(wù),按照事務(wù)的原子系統(tǒng),它的事務(wù)就是這個(gè)子事務(wù)正確完成以后就要進(jìn)行提交,提交就變成永久的了。當(dāng)然不排除一個(gè)計(jì)算任務(wù)有八個(gè)子任務(wù)、有八個(gè)子事務(wù),一個(gè)主事務(wù)有八個(gè)子事務(wù),八個(gè)子事務(wù)里有七個(gè)子事務(wù)都正確完成了,其中一個(gè)子事務(wù)出了錯(cuò),要回滾,這時(shí)候那七個(gè)事務(wù)已經(jīng)提交了,要引入永久的所以要提交二次分布。等整個(gè)任務(wù)提交以后各個(gè)子事務(wù)的提交才算完成,否則不能算完成。當(dāng)然還有空間數(shù)據(jù)的一致性問題,這個(gè)問題實(shí)在太麻煩了,實(shí)際上這個(gè)系統(tǒng)里來了一個(gè)干脆的不需編輯,需要編輯就退出系統(tǒng),編輯完了以后再加入系統(tǒng),加入系統(tǒng)以后緊接著就是數(shù)據(jù)同步,同步完了再計(jì)算。這里頭還會(huì)碰到冗余計(jì)算的問題,兩個(gè)或兩個(gè)以上的結(jié)點(diǎn)都具備承擔(dān)某個(gè)子任務(wù)能力的時(shí)候完全可以進(jìn)行冗余計(jì)算,哪個(gè)對(duì)算哪個(gè),這里面有個(gè)取舍問題,如果都對(duì)了取一個(gè),只有一個(gè)對(duì)就取一個(gè)。這是空間數(shù)據(jù)操作分布執(zhí)行機(jī)制的一個(gè)表示(見圖),剛才說到了補(bǔ)償,就是當(dāng)某一個(gè)結(jié)點(diǎn)得到計(jì)算任務(wù)時(shí)又沒有計(jì)算成功,這時(shí)候還要進(jìn)行二次分布,這是所謂的補(bǔ)償,這個(gè)補(bǔ)償從投影里可以看出來(見圖),有個(gè)服務(wù)的補(bǔ)償。實(shí)際上有很多事情,大量的工作是放在異常處理下,而且異常處理是怎么也處理不全、處理不完。
從實(shí)用角度來說網(wǎng)格結(jié)點(diǎn)可以動(dòng)態(tài)的加入與退出,實(shí)際上就是系統(tǒng)的基本配置和維護(hù)問題,還有系統(tǒng)的容錯(cuò)問題,系統(tǒng)容錯(cuò)問題我們實(shí)際上沒有做,因?yàn)檫@個(gè)太困難了。所謂分布式系統(tǒng)里發(fā)現(xiàn)錯(cuò)誤主要是兩類錯(cuò):一類是Sail-Silent,發(fā)現(xiàn)就停了,這個(gè)好半;還有一類叫Byzantine,這個(gè)我們現(xiàn)在沒管,結(jié)點(diǎn)壞了沒死,神經(jīng)錯(cuò)亂,給他的計(jì)算任務(wù)他貌似認(rèn)真的給你做完,然后把結(jié)果傳過來,根本就不對(duì)。這類情況很復(fù)雜,首先誰有權(quán)判斷哪個(gè)是神經(jīng)錯(cuò)亂,這個(gè)要引入表決機(jī)制,少數(shù)服從多數(shù),可以做,但極大的影響系統(tǒng)資源,所以我們沒有做這個(gè)。
還有一個(gè)比較關(guān)鍵的問題是全局目錄的同步,全局目錄是網(wǎng)格系統(tǒng)中最重要的配置目錄,一個(gè)資源的配置目錄,需要不斷地在系統(tǒng)中對(duì)全局目錄進(jìn)行同步,同步的時(shí)刻就包括這么幾個(gè):一是某一個(gè)結(jié)點(diǎn)加入或退出了,這時(shí)候進(jìn)行同步;二是當(dāng)一個(gè)結(jié)點(diǎn)故障,這個(gè)可以歸到上面,故障就退出了;三是當(dāng)數(shù)據(jù)庫發(fā)生變化的時(shí)候需要同步;四是計(jì)算負(fù)荷變化的時(shí)候也需要進(jìn)行同步,因?yàn)橛?jì)算資源目錄總的來說比較小,這個(gè)同步比較簡單。
從實(shí)現(xiàn)的角度來說我們充分利用Open Source提供的有利條件,加以有選擇地使用改造。核心處理技術(shù)是自行研發(fā)的,包括:面向問題的時(shí)空復(fù)合查詢語言、空間數(shù)據(jù)計(jì)算的分布和實(shí)現(xiàn)機(jī)制、數(shù)據(jù)一致性維護(hù)機(jī)制、新型數(shù)據(jù)模型與存儲(chǔ)、操縱機(jī)制等。從實(shí)現(xiàn)技術(shù)的考慮我們采用了基于語義的迭代式操作原語序列解譯機(jī)制,基于分級(jí)優(yōu)先的原語執(zhí)行分布機(jī)制。這個(gè)機(jī)制得到了國家863項(xiàng)目的支持,列了一個(gè)重點(diǎn)項(xiàng)目,我們和中國地大(武)教授那邊密切合作,現(xiàn)在武教授正在進(jìn)行軟件開發(fā),部分已經(jīng)實(shí)現(xiàn),特別是在分布計(jì)算主體正在實(shí)現(xiàn),包括查詢語言等等東西,預(yù)計(jì)明年年底之前能夠完成。而且目前同樣的分布式成果開始做,同樣一個(gè)大的項(xiàng)目里有一個(gè)示范應(yīng)用在進(jìn)行實(shí)驗(yàn),這是一個(gè)比較好的應(yīng)用環(huán)境,好多數(shù)據(jù)是被計(jì)算結(jié)點(diǎn)所有的。好,我的演講就到這里,謝謝。
{{item.content}}