• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            云計(jì)算實(shí)踐2

             

            上一篇《基于云計(jì)算的價(jià)格查詢實(shí)現(xiàn)》就算是云計(jì)算實(shí)踐1吧,所以這篇就叫《云計(jì)算實(shí)踐2》。其實(shí)今年開(kāi)始研究云計(jì)算有一段時(shí)間了,約3個(gè)月前研究md5破解(http://www.shprog.com/HashCrack.aspx),那個(gè)項(xiàng)目就是選來(lái)玩云計(jì)算的,當(dāng)時(shí)覺(jué)得md5破解這個(gè)小項(xiàng)目好玩,邏輯很簡(jiǎn)單,密碼字母組合可長(zhǎng)可短,規(guī)模可大可小,1臺(tái)機(jī)器不嫌少,1萬(wàn)臺(tái)不嫌多,所以就選中了它,沒(méi)想到第一個(gè)md5破解版本后來(lái)演變成了主要是密碼數(shù)據(jù)庫(kù)的制造,雖然第一版沒(méi)有做成標(biāo)準(zhǔn)云計(jì)算,但也算有個(gè)結(jié)果,而且存儲(chǔ)效率、制造速度還是令人滿意的,也就是說(shuō)那個(gè)項(xiàng)目只是云計(jì)算研究的副產(chǎn)品,我的本意并不是想做一個(gè)md5破解或者qq密碼破解,但結(jié)果就產(chǎn)生了這么一個(gè)產(chǎn)品,也算是努力了一個(gè)多月的結(jié)果,期間對(duì)hash算法、存儲(chǔ)格式等絞盡腦汁思考了很久,也因此對(duì)云計(jì)算倒是考慮得不多,最終偏離了大目標(biāo)。

            好在后續(xù)研究基于云計(jì)算的價(jià)格查詢終于又回到云計(jì)算上來(lái)了,而且仿照googlemap/reduce做了一個(gè)標(biāo)準(zhǔn)的jobserver + tasknode形式的實(shí)現(xiàn),雖然兄弟們未必對(duì)價(jià)格查詢項(xiàng)目看好,但對(duì)這個(gè)基于windows實(shí)現(xiàn)的云計(jì)算框架還是一致看好的,價(jià)格查詢項(xiàng)目第一階段基本完成預(yù)定目標(biāo),所以昨天我又將以前md5破解的東西寫(xiě)了一個(gè)在線版的dll,拿到云計(jì)算框架里面來(lái)試圖云破解,不過(guò)這個(gè)不是特別成功,主要是即時(shí)計(jì)算耗時(shí)有些多,平均1個(gè)task計(jì)算1億組合大約需要30秒,因此在我現(xiàn)在只有2個(gè)點(diǎn)參與運(yùn)算的情況下遍歷很大區(qū)間是很耗時(shí)的,也因此我沒(méi)有做一個(gè)在線云破解md5的頁(yè)面,這個(gè)工作作為研究性探索也只在我的控制端下了幾個(gè)云計(jì)算的任務(wù)就告一段落,今后將致力于其他更實(shí)用的云計(jì)算實(shí)踐。

            為了做這第二個(gè)云計(jì)算的dll,我將原來(lái)定義的jobtask接口(可參見(jiàn)《基于云計(jì)算的價(jià)格查詢實(shí)現(xiàn)》)修改了一下,不再使用原來(lái)的c風(fēng)格接口,直接改成c++風(fēng)格了,如下:

            interface IJobTask

            {

                    virtual HMODULE free() = 0;

                    //初始化函數(shù),部署環(huán)境等

                    virtual bool init(bool tasknode) = 0;

                    //分割函數(shù),分割輸入

                    virtual size_t split(const char *input, size_t len, std::vector<CAutoBuffer *> &vbuf) = 0;

                    //task執(zhí)行函數(shù)

                    virtual bool map(const char *cmdline, CAutoBuffer &buf, CAutoBuffer &ibuf) = 0;

                    //reduce打包輸出函數(shù)

                    virtual bool reduce(std::vector<CAutoBuffer *> &vbuf, CAutoBuffer &buf) = 0;

                    //獲取執(zhí)行錯(cuò)誤

                    virtual char *geterror() = 0;

            };

            有朋友批評(píng)我,說(shuō)我的接口使用stl容器,使用自定義類(lèi)CAutoBuffer等不好,我以前也是這么跟別人講的,接口不要使用這些東西,但看了googlemap/reduce實(shí)現(xiàn)用的都是MapInputReduceInput之后我改變了看法,暫時(shí)就這樣定義吧,大不了各個(gè)dll都用同一版本的vc編譯就是了,也沒(méi)有什么大不了的,如果不行整體升級(jí)一下總可以吧,為了短時(shí)間盯住主要目標(biāo),也只能大刀闊斧不考慮過(guò)多細(xì)節(jié)了,這也算是一個(gè)平衡的結(jié)果吧。

            這次修改除了修改了接口,簡(jiǎn)化了實(shí)現(xiàn)之外,還實(shí)現(xiàn)了一些特性,動(dòng)態(tài)卸載,上一個(gè)版本裝入之后就不卸載了,要關(guān)閉exe才能卸載這些dll,所以無(wú)法熱更新,這個(gè)版本實(shí)現(xiàn)動(dòng)態(tài)卸載之后就支持熱更新了,關(guān)鍵就在那個(gè)free函數(shù),

            virtual HMODULE free() = 0;

            該函數(shù)實(shí)例如下:

                    virtual HMODULE free()

                    {

                            HMODULE h = m_hlib;

                            delete this;

                            return h;

                    //     if(h) FreeLibrary(h);                這里釋放是有問(wèn)題的,所以不能這樣釋放

                    }

            在外部調(diào)用的地方

            FreeLibrary(jf->free());

            這樣就實(shí)現(xiàn)了動(dòng)態(tài)卸載dll的功能

             

            用上云計(jì)算布局的價(jià)格查詢的這段時(shí)間,還是有一些經(jīng)驗(yàn)教訓(xùn)的,基于這種相隔很遠(yuǎn),網(wǎng)絡(luò)條件差別很大的機(jī)器布局的云計(jì)算環(huán)境,可靠性是很差的,大多數(shù)時(shí)間可能反應(yīng)還是比較快,但有的時(shí)候反應(yīng)就特別慢,可能網(wǎng)絡(luò)延時(shí)會(huì)相差200ms,或者500ms,或者更多,我特意記錄了每個(gè)task的實(shí)際執(zhí)行時(shí)間和包括網(wǎng)絡(luò)傳輸在內(nèi)的總時(shí)間,就是從這兩個(gè)時(shí)間看出差距的,所以如果要基于這種環(huán)境做實(shí)時(shí)性很高的計(jì)算還是不適合的,如果對(duì)節(jié)點(diǎn)反饋實(shí)時(shí)性要求很高,那一定要布置類(lèi)似局域網(wǎng)形式的計(jì)算環(huán)境,點(diǎn)點(diǎn)反饋時(shí)間1ms內(nèi),而且響應(yīng)穩(wěn)定不易受到影響。此外磁盤(pán)Log時(shí)間是不定的,我記錄最后一個(gè)task完成到job完成之間調(diào)用了兩次WriteLog,對(duì)大多數(shù)job來(lái)說(shuō),最后一個(gè)完成的task的時(shí)間和job完成的時(shí)間一致,但偶爾有少數(shù)job時(shí)間和最后一個(gè)完成的task時(shí)間差別很大,甚至有超過(guò)1s的,原先沒(méi)有這么精細(xì)的測(cè)量,這次在jobserver寫(xiě)了很多log,起初是為了找錯(cuò)誤,后來(lái)是為了追蹤jobtask執(zhí)行,倒是意外的發(fā)現(xiàn)了一些問(wèn)題,也獲得了一些意外的收獲。

            云計(jì)算好啊,早年我做過(guò)一個(gè)遠(yuǎn)程控制的程序,當(dāng)時(shí)做了一條命令broadcast,可以廣播其他任意命令,當(dāng)時(shí)很得意于這個(gè)設(shè)計(jì),也有指揮千軍萬(wàn)馬的感覺(jué),但當(dāng)時(shí)各自執(zhí)行,結(jié)果并不匯總,各個(gè)任務(wù)完全獨(dú)立。現(xiàn)在給云計(jì)算環(huán)境下達(dá)一個(gè)任務(wù),也有同樣的感覺(jué),可能對(duì)使用我的價(jià)格查詢(http://www.oldworm.com/pps.aspx)的用戶或者使用google查詢的用戶根本感覺(jué)不到,他這一個(gè)查詢提交下去后面有那么多機(jī)器聯(lián)動(dòng)運(yùn)算,但作為開(kāi)發(fā)人員,真真切切的看到后面那么多機(jī)器在執(zhí)行任務(wù),真的是很爽的一件事情,一起看下我兩臺(tái)機(jī)器聯(lián)動(dòng)執(zhí)行任務(wù)的場(chǎng)面共勉吧:

             

             

             

            圖看得不是很清楚,實(shí)際上第一個(gè)taskmanager是一臺(tái)機(jī)器,另一個(gè)taskmanager是另一臺(tái)機(jī)器,那兩個(gè)都是在遠(yuǎn)程桌面里面運(yùn)行的,下面ie是我的網(wǎng)頁(yè),可以看到我在網(wǎng)頁(yè)里面查詢nokia的時(shí)候,上面兩臺(tái)機(jī)器的tasknodeapp里面就接收到任務(wù)并執(zhí)行了任務(wù),那個(gè)tasknodeapp是我臨時(shí)用來(lái)演示的,事實(shí)上里面都是調(diào)用tasknode.dlltasknode的主要任務(wù)都是tasknode.dll執(zhí)行的,為這個(gè)dll做了好幾個(gè)不同的容器,有service的有普通mfc的還有console的,這也是我的得意設(shè)計(jì)哦。

            未來(lái)還將繼續(xù)云計(jì)算實(shí)踐,期待有相同興趣愛(ài)好的朋友一起交流。

            Posted on 2010-10-03 14:23 袁斌 閱讀(362) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久777国产线看观看精品| 午夜精品久久久久久影视riav| 伊人久久精品无码av一区| 午夜精品久久久久久毛片| 国产精品99精品久久免费| 国产精品永久久久久久久久久 | 91麻精品国产91久久久久| 久久一本综合| 久久婷婷五月综合色奶水99啪| 中文字幕亚洲综合久久| 亚洲色大成网站WWW久久九九| 久久婷婷国产麻豆91天堂| 人妻无码αv中文字幕久久琪琪布| 人妻少妇久久中文字幕一区二区| 久久久久久一区国产精品| 69SEX久久精品国产麻豆| 久久亚洲精品无码播放| 国产亚洲美女精品久久久久狼| 欧美大战日韩91综合一区婷婷久久青草| 男女久久久国产一区二区三区| 色婷婷久久综合中文久久一本| 国产亚洲欧美成人久久片| 午夜欧美精品久久久久久久| 久久婷婷五月综合成人D啪| 99久久久精品免费观看国产| 久久中文字幕人妻丝袜| 久久精品桃花综合| 色播久久人人爽人人爽人人片aV | 欧美一区二区三区久久综| 亚洲欧洲精品成人久久曰影片 | 久久精品国产福利国产琪琪| 久久婷婷五月综合色奶水99啪| 久久精品卫校国产小美女| 国产精品成人久久久| 无码人妻少妇久久中文字幕| 国产精品女同一区二区久久| 久久久久久免费一区二区三区| 精品久久777| 青青草国产精品久久久久| 久久九九青青国产精品| 久久无码av三级|