日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

DCFramework 動態(tài)分布式計(jì)算框架(00) -- 序

系統(tǒng) 1824 0

分布式計(jì)算最基本的目的之一就是為了充分利用空閑的計(jì)算節(jié)點(diǎn)的計(jì)算能力。通常,我們 首先 會將要被分布式計(jì)算的 程序 在每個(gè)計(jì)算節(jié)點(diǎn) 部署 好,然后才可以調(diào)用分布式計(jì)算。這種 部署 是一種靜態(tài)的。之所以稱為靜態(tài)的,是因?yàn)檫€有一種更動態(tài)更靈活的方式 -- 我們可以 隨時(shí)的、動態(tài)的 將我們 完成的程序 自動【提交】到 已經(jīng)部署好的 分布式框架里動態(tài)運(yùn)行起來。比如,假設(shè)我剛寫了一個(gè)新的排序的算法程序(假設(shè)程序集為 X.dll ),然后我要對現(xiàn)有的 10000000 個(gè)數(shù)據(jù)進(jìn)行排序,但是,我的機(jī)器配置太差,運(yùn)行不了如此大的計(jì)算任務(wù),那么我就可以將 X.dll 和要排序的數(shù)據(jù)傳遞給部署在其它地方的動態(tài)分布式計(jì)算框架實(shí)例,動態(tài)分布式計(jì)算框架會調(diào)用 X.dll 中的排序算法來對數(shù)據(jù)進(jìn)行排序,并返回結(jié)果。這就是 動態(tài) 的含義。我寫 DCFramework Dynamic Distributed Computing Framework )這個(gè)框架的主要目標(biāo)是達(dá)到這樣的一個(gè)效果。不知道這種分布式計(jì)算架構(gòu)和 云計(jì)算 是否有點(diǎn)關(guān)系?

如果是使用 C C++ 來實(shí)現(xiàn)這樣的動態(tài)效果,應(yīng)該不是一件簡單的事情,但是強(qiáng)大的 .Net 平臺使得實(shí)現(xiàn)這一目標(biāo)稱為可能,并且不是那么難。

我將平臺選定在 .NET ,這可以使很多功能更加容易實(shí)現(xiàn),也使得很多問題得到簡化。 DCFramework 的主要特性如下:

1 )基于 .NET 平臺。這有兩種含義: DCFramework 是用 .NET 2.0 )實(shí)現(xiàn)的;也只有基于 .NET 的程序才可以使用 DCFramework 支撐的動態(tài)分布式計(jì)算架構(gòu)。

2 DCFramework 使用 DCTask 表示動態(tài)分布式計(jì)算任務(wù)。

3 )分布式計(jì)算節(jié)點(diǎn)可以動態(tài)的增加、刪除。所謂計(jì)算節(jié)點(diǎn)就是用于真正執(zhí)行分布式計(jì)算任務(wù)的節(jié)點(diǎn),在 DCFramework 中稱為 DC Worker Node

4 )在 DCFramework 架構(gòu)中有一個(gè)特殊的節(jié)點(diǎn)叫 DC Master Node ,它的作用在于統(tǒng)一管理所有的 DC Worker Node ,并將新的分布式計(jì)算任務(wù)分配給當(dāng)前負(fù)載最低的那個(gè) DC Worker Node

5 DCFramework 使用 Remoting 技術(shù)解決 DC Worker Node DC Master Node ,以及 DC Master Node Client (需要動態(tài)分布式計(jì)算的客戶端)之間的通信。

6 DCFramework 使用反射技術(shù)來動態(tài)加載程序集和調(diào)用計(jì)算方法。

7 DCFramework 使用 DCAppDomain (對 .NET AppDomain 的封裝)來構(gòu)建執(zhí)行分布式任務(wù)的獨(dú)立環(huán)境。即每個(gè)分布式計(jì)算任務(wù)最終在一個(gè)獨(dú)立的 DCAppDomain 種執(zhí)行。

8 DCFramework 使用序列化技術(shù)來傳遞被調(diào)用的對象。

關(guān)于 DCFramework 中節(jié)點(diǎn)部署的簡單圖示如下:

DCFramework 動態(tài)分布式計(jì)算框架(00) -- 序

現(xiàn)在,我們假設(shè)某個(gè)Client A有個(gè)計(jì)算任務(wù)要提交給DCFramework執(zhí)行,讓我們來看看這個(gè)過程是怎樣進(jìn)行的。

Client A 將計(jì)算的邏輯封裝在MyClass類中,其位于X.dll程序集中,而X.dll有依賴于Y.dll,Y.dll又依賴于Z.dll,而X.dll、Y.dll、Z.dll都是用戶自定義的程序集。如果是在Client A本地執(zhí)行計(jì)算任務(wù),是這樣做的:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> MyClass myClass = new MyClass ();
// 為myClass屬性賦值,并初始化,此處省略若干代碼
object result = myClass.DoSomething();

下面的代碼將會在DCFramework架構(gòu)的某個(gè)DC Worker Node上執(zhí)行MyClass.DoSomething()方法。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> MyClass myClass = new MyClass ();
// 為myClass屬性賦值,并初始化,此處省略若干代碼

DCJobDispatcher dispatcher = ...... ;
dispatcher.Dispatch(myClass,
" DoSomething " );

分布式計(jì)算執(zhí)行的過程簡述如下:

(1)DCJobDispatcher 會自動Remoting連接到DC Master Node。

(2)DCJobDispatcher 將分布式計(jì)算任務(wù)封裝為一個(gè)DCTask,DCTask實(shí)例中會包含X.dll、Y.dll、Z.dll程序集對應(yīng)的文件數(shù)據(jù)。

(3)DCJobDispatcher 將DCTask提交給DC Master ,DC Master 會將其交與DC Worker Node中負(fù)載最小的那個(gè)節(jié)點(diǎn)(假設(shè)為Worker A)執(zhí)行。

(4)Worker A會為新任務(wù)創(chuàng)建一個(gè)單獨(dú)的DCAppDomain,然后加載傳遞過來的DCTask中的X.dll、Y.dll、Z.dll,接著就可以反序列化 MyClass 對象,最后通過反射調(diào)用其DoSomething方法,以開始執(zhí)行計(jì)算任務(wù)。

(5)計(jì)算完成后,Worker A會卸載對應(yīng)的DCAppDomain,并將計(jì)算結(jié)果返回。

上述就是DCFramework執(zhí)行動態(tài)分布式任務(wù)的一個(gè)簡單介紹,更詳細(xì)的部分會在后續(xù)的文章中介紹。

歡迎討論,謝謝。

目錄:

DCFramework 動態(tài)分布式計(jì)算框架(01)-- 基礎(chǔ)結(jié)構(gòu)

下載:

1.DCFramework 的完整Demo源碼 DCFrameworkDemo

DCFramework 動態(tài)分布式計(jì)算框架(00) -- 序


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 昌吉市| 舞钢市| 潞城市| 轮台县| 岳西县| 宝丰县| 高清| 土默特右旗| 腾冲县| 安宁市| 天门市| 襄樊市| 繁昌县| 济宁市| 宜州市| 临沭县| 英德市| 留坝县| 龙岩市| 墨玉县| 清丰县| 崇文区| 仙桃市| 襄城县| 溧水县| 富阳市| 临清市| 莱阳市| 溆浦县| 湾仔区| 巴彦县| 贵溪市| 咸宁市| 昭平县| 庆元县| 永泰县| 望奎县| 依兰县| 镇原县| 红河县| 邵阳县|