青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

基于云計算的價格查詢實現

 

 

上篇博客提到價格查詢功能,當時正在考慮做成云計算模式,所以當時連多線程都沒考慮,就是準備將功能都交給云計算系統的,由云計算內部管理線程和調度問題,所以當時實現就根本不用考慮多線程,現在功能基本實現,下面大致講講我的做法。

國內很多人談到全文檢索就必提lucene,提到云計算就必提googlemap/reduce、開源的hadoop、amazonec2,似乎只有那些東西才叫云計算,咱是實戰派,沒興趣口舌之爭,在俺看來分布式存儲+分布式計算就叫云計算,俺就看了看googlemap/reduce論文,照其思想在win下做了個簡單的job/task調度系統,使其能支撐俺的第一個實戰應用價格查詢,圖示如下:

 

 

 

 

    adminclient承擔管理功能,可查看任務及執行情況,可查看Tasknode機器情況,如果需要可管理Task,目前只支持簡單的幾條命令,adminclient主動連jobserver登錄成功后可發送管理命令。

 

    JobOwner提交一個Job之后返回一個jobid,如果意外斷開可通過下次重連的時候提交jobid和一個sessionid可提取job結果數據,job提交通過提交一個zip包即可,參數等文件都打在包里面,tasknode可直接解包執行里面的dllJobowner主動連jobserver,登錄成功后可發job命令。

 

    TaskNode是執行具體任務的客戶端,job包用zip打包后發布給tasknodetasknode參與計算并反饋結果。TaskNode設計成多線程模式,一個線程保持和jobserver的通信,其他線程參與運算,Tasknode可同時執行多個不同的任務,如a線程執行價格查詢,b線程執行hash破解等。Tasknode主動連jobserver,登錄后可接受jobserver分派的任務,由于tasknode是主動連jobserver的,所以即使是內網機器或者任意有閑置資源的機器都可作為Tasknode,不管它是家里的、公司的、還是網吧的,這也是該系統基于windows實現的一個重要前提,因為win的機器是如此的多,在國內win的機器無處不在。

 

JobServerjob調度器,管理包分發以及任務分割、調度,典型的執行流程是這樣,jobowner提交一個命名的包給jobserverjobserver將該包部署管理,之后jobowner 可給jobserver提交任務,jobserver收到任務后根據任務指定的包配置執行,如部署包后裝載dll并執行任務分割操作,分割是將一個job分割為多個task,之后再將每個task提交給一個tasknode執行,并管理tasknode的輸出以及可能的出錯,出錯現在的處理是交給另一個tasknode執行,當剩下最后一個tasknode的時候會將該tsaknode同步叫給另一個不同的tasknode執行,不管誰最后成功執行這個tasknode,只要該task執行成功立即結束整個job,并將結果反饋給jobownerjobowner也可在執行中提交查詢命令,jobserver會將被查詢job當前的輸出返回,這樣碰到需要長時間執行的任務也能適用。

 

從以上介紹可以看到,具體任務是由包執行的,這個包實際上可能是一個dll,也可能是幾個dll加上一些配置文件組成,之所以設計成這種模式,主要是考慮整個系統在win上方便部署,主dll需要支持幾個固定的接口:

 

//任務dll初始化函數

typedef bool (*jobtask_init_)(jobtaskfunc *jtfunc, bool tasknode);

//map分割函數

typedef size_t (*jobtask_split_)(jobtaskfunc *jtfunc,

                                   const char *input, size_t len,

                                   std::vector<CAutoBuffer *> &vbuf);

//reduce打包函數

typedef size_t (*jobtask_reduce_)(jobtaskfunc *jtfunc,

                                         std::vector<CAutoBuffer *> &vbuf,

                                         CAutoBuffer &buf);

//Task執行函數

typedef bool (*jobtask_map_)(jobtaskfunc *jtfunc, const char *cmdline, CAutoBuffer &outbuf);

//釋放函數

typedef bool (*jobtask_free_)(jobtaskfunc *jtfunc);

 

 

上面init函數主要執行線程相關的初始化,該函數典型的可能是空,或者是

CoInitialize(NULL);

Split函數是用來將job輸入分割為Ntasknode輸入的,該函數由jobserver調用,每個tasknode輸入就是map函數的輸入,tasknode的任務就是調用map函數,并傳遞輸入,最后將輸出返回給jobserverjobserver在需要的時候調用reduce將各個tasknode的輸出打包返回,free函數是個輔助函數,釋放資源的。

熟悉googlemap/reduce的應該知道,我的實現簡化了reduce,在我的實現里面并沒有獨立的reduce worker,該任務由jobserver自己做了,這一方面是簡化實現,另方面也是適應需求的結果,畢竟在我的需求里面輸入是很少的(一個典型任務100字節量級)tasknode的計算是很多的,輸出也是不多的(1k量級),所以由jobserver打包整個輸出也很輕松,用不著一組獨立的reduce來管理輸出。另外可以看到上面接口用了我的自定義類CAutoBuffer,這個類主要管理不定長數據的,其實用vector<char>也可,但考慮方便,我的實現內部都用了CAutoBuffer。一個典型的分布式應用只要做一個dll,有上面幾個函數,并輸出一個

 

struct jobtaskfunc

{

        //初始化函數

        jobtask_init_ init;

        //釋放函數

        jobtask_free_ free;

 

        //以下被tasknode調用

        jobtask_map_ map;

 

        //以下被jobserver調用

        jobtask_split_ split;

        jobtask_reduce_ reduce;

};

typedef jobtaskfunc *(WINAPI *create_jobtask_)();

函數即可。

 

學習map/reduce重要的是學習其思想,并不拘泥于實現形式,我想這大概正是國內環境欠缺的,國內能說得頭頭是道的人太多,能動手干出結果來的人很少,真正坐下來做實事的不多,只喜歡抄抄概念,拿別人的東西過來架設一下,就是這樣的人也能混成大拿。我從map/reduce思想出發,學習其思想,簡化其實現,為實際應用服務,雖然這個東西很簡單,甚至可以說有些簡陋,但實際效果不錯,雖然現在只部署了兩個點,但總體上還是令人滿意的。

 

實現這個jobserver/tasknode系統并部署價格查詢花了不到兩周時間,實際上花在jobservertasknode上的時間大概只有一周多一點,ppsget.dll(具體干活的dll)用正則表達式分析網頁并提取輸出,該dll被應用到多線程環境后也出了一些問題,用boost::reg的時候居然偶爾會出現異常,原以為boost::reg這樣的應用應該是非常明確的,要么找到,要么沒有找到,除此不應該有第三態,沒想到boost::reg這個不爭氣的東西不但不是二態的,還容易出現異常,試用了一下tr1::regex也是類似的問題,無奈只能在外面包了一層異常處理,雖然不再被異常搞死,但一旦出現異常就是很慢的,要10s左右才返回,現在也沒有特別好的辦法,只在異常的時候將頁面保存,事后分析并改寫正則表達式,盡量將正則表達式做小,將非貪婪式查找用少一點。

下面看看我們價格查詢網站 http://www.shprog.com/pps.aspx 的輸出:

 

 

那個360的價格居然是圖片,ocr模塊是俺同事搞的,現在識別率能達到99%以上,還是很不錯的。

Posted on 2010-10-03 14:22 袁斌 閱讀(227) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精选久久| 猫咪成人在线观看| 狠狠色丁香婷婷综合影院 | 国产无一区二区| 欧美精品日韩综合在线| 久久男人资源视频| 久久成人久久爱| 久久久精品性| 欧美91精品| 欧美日韩国产首页| 国产精品激情电影| 国产欧美一区二区精品性色| 国产精品理论片| 国内精品亚洲| 亚洲欧洲日产国产网站| 亚洲日韩中文字幕在线播放| 亚洲国产高清在线观看视频| 99精品国产福利在线观看免费| 一区二区欧美在线观看| 亚洲欧美日韩一区二区三区在线| 亚洲伦理在线| 久久久久九九视频| 亚洲精品视频免费在线观看| 亚洲一区在线看| 欧美国产三区| 国产精品视频免费在线观看| 激情另类综合| 亚洲欧美日韩精品| 亚洲国产精品电影| 日韩亚洲欧美一区| 久久久久综合一区二区三区| 国产精品福利片| 一区二区三区.www| 狠狠综合久久av一区二区小说| 一区二区福利| 久久久精品国产99久久精品芒果| 亚洲精品国产精品国自产观看| 久久精品噜噜噜成人av农村| 欧美成人一品| 91久久在线播放| 亚洲国产精品va在线看黑人| 久久久久久久久久久久久久一区| 欧美天堂亚洲电影院在线观看| 欧美激情一区二区三区不卡| 午夜精品久久久久久久久久久久久| 麻豆九一精品爱看视频在线观看免费| 欧美日韩在线一区| 一区二区三区日韩| 亚洲韩国青草视频| 欧美日韩国产一区| 亚洲欧美国产高清| 久久精品二区亚洲w码| 一区二区三区在线看| 欧美国产日韩视频| 免费在线欧美黄色| 99国产精品久久久久老师| 亚洲国内自拍| 国内精品久久久久影院色| 亚洲电影中文字幕| 国产欧美日韩免费| 老**午夜毛片一区二区三区| 美日韩精品免费观看视频| 一区二区三区高清视频在线观看| 亚洲卡通欧美制服中文| 国产精品亚洲综合| 欧美大学生性色视频| 国产精品久久国产精品99gif | 欧美激情一区二区久久久| 亚洲一区二区在线| 久久国内精品自在自线400部| 在线免费不卡视频| 亚洲综合电影| 亚洲视频在线二区| 欧美精品在线免费播放| 亚洲精品日韩久久| 在线亚洲一区| 亚洲国产精品电影| 欧美一区二区三区免费看| 午夜在线成人av| 欧美日韩精品系列| 亚洲精品欧洲| 99视频精品免费观看| 欧美另类99xxxxx| 亚洲伦理久久| 一区二区三区欧美激情| 欧美激情精品久久久六区热门 | 国产一二三精品| 免费不卡在线视频| 一区免费观看| 免费视频亚洲| 亚洲高清不卡在线| 在线日本欧美| 欧美日本精品在线| 亚洲一线二线三线久久久| 久久久久久久高潮| 亚洲精品色婷婷福利天堂| 欧美成人嫩草网站| 午夜精品999| 91久久线看在观草草青青| 久久久久五月天| 亚洲人成人一区二区在线观看| a4yy欧美一区二区三区| 国产精品久久久免费| 亚洲一区二区日本| 久久先锋资源| 亚洲欧美日韩另类精品一区二区三区| 久久久999精品视频| av成人手机在线| 一区精品在线播放| 在线观看福利一区| 国产精品美女久久久久久免费 | 亚洲精品久久久久久久久久久久 | 国产亚洲精品久久久久婷婷瑜伽| 亚洲欧美色一区| 亚洲精品欧美日韩| 亚洲全部视频| 亚洲国产欧美国产综合一区| 久久久99国产精品免费| 亚洲欧美国产一区二区三区| 99视频在线观看一区三区| 亚洲肉体裸体xxxx137| 91久久国产综合久久| 欲香欲色天天天综合和网| 国外成人在线视频| 在线观看日韩av| 最新中文字幕亚洲| 一区二区三区精品久久久| 亚洲视频一区二区在线观看| 国产精品99久久久久久久女警| 亚洲视频在线观看三级| 亚洲欧美韩国| 久久免费黄色| 欧美韩日视频| 亚洲自拍偷拍视频| 久热这里只精品99re8久| 性欧美8khd高清极品| 久久精品在这里| 国产精品久久久99| 黑人操亚洲美女惩罚| 在线欧美日韩国产| 亚洲天堂av在线免费观看| 亚洲淫片在线视频| 老牛嫩草一区二区三区日本| 久久综合导航| 性色av一区二区三区| 欧美激情第3页| 国外成人网址| 亚洲欧美清纯在线制服| 久久综合色一综合色88| 91久久精品久久国产性色也91| 亚洲一区二区毛片| 老鸭窝91久久精品色噜噜导演| 欧美日韩视频在线一区二区观看视频| 国产精品视频不卡| 一区二区国产日产| 亚洲国产另类久久久精品极度| 亚洲精品色婷婷福利天堂| 亚洲线精品一区二区三区八戒| 欧美日韩高清在线| 一二三区精品| 亚洲毛片av| 欧美日韩一区二区视频在线| 亚洲精品欧美日韩专区| 欧美福利精品| 欧美激情精品久久久久久变态| 亚洲精品国产精品国产自| 亚洲精品国产精品国自产观看浪潮| 久久久97精品| 亚洲国产精品成人久久综合一区| 久久久久久97三级| 免费看的黄色欧美网站| 最新日韩在线视频| 中文在线不卡视频| 国产欧美日韩在线| 另类春色校园亚洲| 男女av一区三区二区色多| 亚洲毛片播放| 亚洲作爱视频| 久久精品水蜜桃av综合天堂| 在线精品国产成人综合| 最近看过的日韩成人| 国产精品免费观看视频| 亚洲欧美色婷婷| 欧美v亚洲v综合ⅴ国产v| 欧美视频在线一区| 免费成人黄色| 国产精品青草久久久久福利99| 亚洲欧美制服中文字幕| 米奇777在线欧美播放| 欧美精品一区在线发布| 久久亚洲影院| 国产一区二区三区免费不卡| 久久影院午夜论| 欧美综合国产| 久久国产99| 这里只有精品视频在线| 亚洲精品视频免费在线观看| 亚洲欧美影院| 久久精品午夜| 国内精品国语自产拍在线观看|