<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    放翁(文初)的一畝三分地

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      210 隨筆 :: 1 文章 :: 320 評論 :: 0 Trackbacks

    #

        中午左右收到一個看我blog的朋友的郵件,最近他在研究mapreduce,然后想用hadoop來做一些工作,不過遇到了一些問題,我這邊也貼一下他的幾個問題,同時覺得自己把自己的一些看法分享一下,當然只是自己的一些想法,也許對新學習的同學有幫助。

       問題:

    1. 從Map(K,V)的方式來看,難道mapreduce只能做統計?
    2. 目前我想除了日志分析之類的功能外,還想做一個全文檢索的功能,類似windows查詢一下,通過關鍵字查詢文件的位置即可(可能還要根據匹配度做排序),這個我很迷茫不知道怎么下手,痛苦ing
    3. 你的實踐是一個單機模式,如果用戶把一個1G的log已經上傳到hdfs了,此時分割工作已經完成,只需要從client那里得到文件基本信息和塊的location就可以了,那mapreduce怎么進行下去呢?

       我給回復的郵件內容:

       首先,MapReduce的思想和Hadoop的MapReduce的架構不是一個概念,說的具體一點也就是Hadoop的架構設計只是MapReduce的一個子集思想的實現。每個人都可以根據自己對MapReduce的理解去實現業務處理,簡單來說多線程處理就是MapReduce的一種最簡單的實現,復雜來說多機協調工作就是一種復雜的實現。

       MapReduce的思想里面最值得借鑒的:

       a.問題分而治之。(找到流程的關鍵路徑,優化可以并行處理的工作)

       b.計算靠近數據。(這也是hdfs存在的最重要的特點,計算的轉移往往要比數據轉移廉價,特別是對海量數據的處理)

       c.數據規模化隨著并行處理成數量級遞減。

       剩下的內容就是各個框架對于非業務性需求的處理,例如容災,如何盡量少穿數據協調處理等等。

       針對他提出的三個問題:

        1. Hadoop的mapreduce從架構上來說最適合的就是統計分析計算。做其他方面的工作需要考慮是否適合,而不是為了技術而技術,先有需求再有技術選型。
        2.  對于你這個需求直接用搜索技術實現就可以了,不一定要硬套在mapreduce上。
        3. 對于海量數據是否一定要到hdsf上,或者就簡單得數據物理或者邏輯切割來直接處理,根據自己業務場景選擇。hdfs的特點就是對文件切割,容災,數據邏輯存儲和物理存儲無關性(便于擴容管理,同時也是計算靠近數據的技術保證)。

        是否使用MapReduce框架,HDFS存儲關鍵還是看你是否真的需要,當現有框架對自己來說并不合適的時候可以對小規模問題定制MapReduce的處理,最簡化就是你去多線程或者多進程處理問題,需求決定技術選型。

      

    posted @ 2009-12-09 13:09 岑文初 閱讀(2590) | 評論 (1)編輯 收藏

    Author:放翁(文初)
    Email:fangweng@taobao.com
    Blog:http://blog.csdn.net/cenwenchu79 

     

    當前問題:

    1.       不小比重的Rest請求都是無效請求,全部接納數據消耗比較多的時間。

    2.       Multipart類型的大文件流請求無法做到合理快速過濾。(參數錯誤請求,數據文件過多請求,文件大小過大請求)

    歸結來說,TOP平臺處理的服務在解析參數時比較消耗時間和帶寬(客戶端網絡速度慢導致傳輸字節流比較慢,文件比較大導致帶寬占用嚴重)

    處理方式:

    通過自行解析字節流方式來lazy化處理請求,減少無效請求對于解析參數時間消耗(導致web容器連接消耗)及帶寬消耗。

    優化目標:

             Get由于內容長度有限不列入在優化范圍。

             優化Post方式的請求(普通的和Multipart),要求優化后:在正常請求處理上兩者處理速度不低于傳統方式,非正常請求在策略命中情況下(后面會談到什么情況下優化失效),性能有明顯提高。

    具體實現:

            由于現在用的是傳統IO模式,因此可以用流的方式來lazy解析和處理請求(NIOchannel + buffer package就無法lazy了)。




             一共有三個組件角色:

    1. 請求處理配置策略:配置在解析參數時,優先的規則(參數可以從header,uri,post body中獲取,相互之間的優先性),異常拋出規則(字節流長度,文件大小,文件個數限制等),字節流解析模塊的參數配置(字節流解析的窗口大小,超時時間等)。

    2. 線程上下文:用來保存處理過的請求參數。一來復用,二來也是由于請求字節流處理不可逆(不保存字節流副本),必須保留。

    3. Http請求字節流解析模塊。根據具體的配置以及解析策略來解析字節流,同時將解析結果保存在線程上下文中。主要的實現代碼在于對Post消息體逐步解析部分(普通的Postmultipart

    壓力測試結果:

        正常請求場景( 100并發用戶,multipart 文件大小300k,當前業務場景這個值已經滿足了):

    普通post的處理能力1000TPS。(servlet方式處理差不多,不過有波動)  

      multipart處理能力610TPS。(apache開源項目fileupload,處理能力400TPS左右)

    錯誤請求場景

             異常情況的處理有了很大提高,對于遠程客戶端傳輸較慢或者是大流量圖片的錯誤請求都有很大的優化。

    優化存在問題:

    1. 參數缺失導致優化失效。

    2. sign類似的交驗,導致獲取所有的參數。

    3. 當前圖片限制在300k,由于考慮處理速度快,就都沒有設置超過閥值存儲到本地,因此在高并發大流量的情況下也會有內存問題,當然已經做了部分保護。

    針對上面的兩個問題,作了部分的協議限制,對于API2.0希望將所有的系統參數和業務參數區分開,放入到Http header中或者url中,這樣可以避免系統參數缺失導致優化失敗,同時大量過濾系統參數出現問題的無效請求。

    Sign類似的交驗放在流程最后,避免過早獲取所有參數。

    作安全保護,設定簡單丟棄或者io交互來緩解這個問題。

             這部分內容還有很多可以做得工作,其實最初的目的就是為了防止系統對于無效請求的處理消耗,我想在很多系統都會有這樣的問題,利用緩存設置黑名單防止攻擊也是這樣的初衷。因此這點可以考慮在很多系統設計的時候都作一樣的優化,對正常的不能優化,起碼對錯誤的可以做一些優化,防止在異常請求高漲的時候,系統被擊垮.

    posted @ 2009-12-08 01:51 岑文初 閱讀(2243) | 評論 (2)編輯 收藏

    Author:放翁(文初)
    Email:fangweng@taobao.com
    Blog:http://blog.csdn.net/cenwenchu79


    其實想說這句話很久了
    ,和很多同事接觸,有時候或多或少的都會發現大家會陷入在自己的一畝三分地里面.

             主要表現得癥狀

    1.       PD的需求就是目標,踏實的實現,不懂的就猜。

    2.       經驗蓋過一切,設計系統就是要夠完備夠復雜。

    從開發人員角度來看,第一種人多半比較有自己的想法,同時也有不少的工作經驗,同時可能對技術比較著迷。另一種人多半是剛剛工作或者經驗不足,要么就是習慣性把工作當任務,而不是愛好,寫程序也就是一份賺錢的活。但看起來其實各自都在自己的一畝三分地上搗鼓,忘記了作為一個開發人員最基本的原則:“滿足客戶需求”。

    先說1類型吧,在我們的Team有一個剛畢業一年多的同學,很勤奮,不論從學習以及工作,實實在在,踏踏實實。我們這邊來需求,通常大需求我們都會全體過一下,一些小點的需求他就自己考慮一下就作了。那天正要上線,突然說了一下設計修改的內容,發現不僅滿足不了PD原有的需求,而且給系統帶來了緩存暴增的隱患。然后找來PD一談,其實他要的功能已經在現有系統中已經實現,只是需要做部分的修改,而不需要新的去建立一套機制。這樣的情況其實在前前后后出現了不少次數了,但其實一直沒有和他細談。后來我下班時候和他一起回家的時候說:“很多時候, PD為了讓你理解,從開發的角度想要去描述一個需求,但其實最終失去了他自己想要的東西。因此對你來說第一步不是急忙的去考慮如何實現PD的想法或者和他爭論他的設計是否合理,而是需要先問他:你想要什么,想要實現的東西最終目的是什么,能滿足客戶的什么需求?當他能夠說清楚他想要什么,也知道要的東西能給客戶帶來什么價值的時候,我們再回過頭來看,究竟應該怎么做?”這其實和我每次和同學分享一些設計的時候步驟是一樣的,首先為什么要這么做,然后才是考慮如何從我的目標去尋找行動的方法方式,不然你會發現你和別人討論了許久的東西,實現出來的時候已經背離了你的目標很遠。因此在做任何需求或者設計的時候第一個問題就要問自己為什么要做,作的過程中時刻要記得我的目標是什么。這讓我想起了我在離開阿軟的那些日子和王堅博士談話以及聽他的一些對于設計的理念,很多時候還沒有到規模化的情況下,先解決客戶的需求,在解決客戶需求以后,逐步的去考慮規模化問題的設計。(當然不是說第一版設計就可以隨便作,良好的基礎能夠提升后續改進的速度)。

    二類型的就比較多了,其實是很多開發人員的通病,包括有時候我自己也會陷入這樣的誤區。通常情況下有兩種場景會陷入這樣的誤區,同時當事人卻又不愿意改變。第一種情況就是覺得自己有不少的經驗,同時對技術很執著,希望設計出來的都是很完美的,一次發布就可以滿足個12年,但其實從這些年的設計角度來看,首先系統都是不斷迭代進化的,因此一步到位的說法基本上不靠譜(除非就是一模一樣的場景代碼重復使用),其次系統的架構要做的足夠靈活,通常情況就需要先做核心功能,預留出足夠的空間和切入點,這樣對未來擴展和需求變化有足夠的適應度。從這兩點來看,其實設計初期就是要求找到客戶最想要的,擴展可以實現客戶可能要的,防范客戶沒有估量到的。但這其實就需要和我們的產品設計師有充分的交流,好的產品設計師不會告訴你你怎么去實現,但是他會告訴你我想要的是什么,這些能給客戶帶來什么,這時候你可以告訴他我能夠通過什么方式來滿足你的需求。這樣的開發和產品設計交流的結果才是技術化的產品,大家各司其職,同時也通曉對方領域的一些情況,對對方領域的只能給出建議,不是指導,這點在TOP我很慶幸有很好的黑羽同學,我們的交流就是這樣產生良性互動。這有點撤遠了,剛才說了第一種場景,然后說說第二種場景,就是初期其實大家都沒有明確細節,但是在實施過程中開發人員會根據自己的接觸面來選擇一些技術和架構設計,最后看起來很復雜,很完美,但其實越是復雜的設計背后有越多的隱患。但是此時因為已經設計好了,就不愿意再去簡化,也不愿意聽任何人的意見,其實這是很危險的。我過去也犯過類似的錯誤,但是其實當你冷靜下來,想想那句話,我們的目標是什么:“滿足客戶需求”,這時候你就會考慮,這么復雜的系統會不會給客戶帶來更多的不穩定以及復雜度,其實客戶不關心你背后如何實現的,但是你需要滿足客戶的最基本的需求,用起來方便,高效,實實在在提供了解決問題的手段。

    今天下午面試了一個外部的同學,工作年限比我長,看了簡歷也經歷了很多項目,同時在描述的時候寫了對高并發,分布式等等都很熟悉和熱衷,我開始看了簡歷就擔心,可能我這邊不一定要他,因為我怕他開口就是說一大堆如何做高并發和分布式的內容。在我看來如果你沒有搞清楚你什么時候要用牛刀,什么時候要用剪刀的人,和你談論牛刀的構造其實沒啥意思,因為在我看來,技術只要你肯花時間去學,沒什么學不到的,但是做事方式和項目設計經驗卻是長時間積累的。幸好今天和他一談,他對于技術的態度以及架構設計的思想都和我想的比較接近,不是為了技術而技術,不是為了過程而過程,了解如何從簡如繁,再從繁入簡,最終能夠找到自己的目標。當然后來還是談了很多技術細節的問題,畢竟干活還是要一個好手,作了那么多年如果沒有經驗和技術積累也是很可怕的事情。最后我問了他兩個問題:1.你學習一個新技術的過程是怎么樣的?2.你和你同事如果在設計方案上有沖突你怎么解決?他告訴我他學習新技術首先會去考慮這個技術的特點是什么,和其他技術的差別,他的擅長領域是什么,這樣才能夠用到實處。第二個問題他和我說就是開會討論,最后大家群體決定。我對他第一個問題感到很滿意,因為我就需要這樣的同事,第二個問題我給了他一個建議,其實在很多時候,將別人的架構設計的優點融入到自己的設計中,不再以方案作為邊界,那么大家最終就很容易達成一致,因為你在接受別人的思想時其實能夠看到自己的不足,同時對待別人不是用否定的態度,會讓你更容易得到認可和接受。(這點作起來需要不斷的改變程序員自身的好勝個性,我起碼還是出于變化中

    我記得我小時候上政治課的時候,老師給我們劃分了三種人:有能力但是沒有道德的人是危險的人,沒有能力但是有道德的人是對社會無害的人(覺得像葛優說的那個對社會無害的海龜一個概念),有能力同時也有道德的人是對社會有益的人。我覺得其實程序員也就可以從兩個緯度看:

    1.       有能力,有經驗,對技術有追求。

    2.       對產品化和客戶沒有任何感覺。

    擁有了素質1但是沒有素質2,那么最多也就只能說是試驗室的花朵,在大學搞搞研究還不錯,實際要做出產品來可能就是紙上談兵,好鋼始終用不到刀刃上,有力沒地使。

    素質1有所欠缺,素質2很明晰,對自己目標不斷追求,其實這樣的人,有時候笨鳥也會飛的比聰明的鳥更高。

    擁有12的人,當然就是最好的人,只需要學會做人那么就可以發揮自己的能量。(程序員有時候就是很難改變自己的個性,去學會如何溝通和理解)
             最后一類就是自以為有12的人,這類人最怕就是面試的時候被考官通過,那么后續的問題就大了。

    說了怎么多,其實也無非想說出一個程序員這些年的經歷,從做開發到做基礎平臺,到做業務平臺,該怎么踏實做事,該在什么時候找到自己的瓶頸,該在什么時候改變自己的狀態,都需要自己好好的讓自己冷靜下來想想。做基礎平臺需要耐得住寂寞,同時也要知道自己是有客戶的,服務不好客戶,那么基礎組件平臺就是玩具。做業務平臺需要學會去分析和溝通,需要去了解每一個層次的設計如何協作,同時在兼顧業務需求的同時滿足隱性需求(穩定性,可用性,響應速度,規模化等等)。但歸根到底,能給開發人員不斷能量的不是技術本身,而是你用技術給你的客戶帶來的價值,對你的認可是長期做事的一個最基本的動力,因為當你現在覺得純做技術能夠支持你不斷向前走的時候,其實在不遠的將來你會體會到原來過程和目標是同樣重要的。走出自己的一畝三分地,給自己多一點的空間,會讓自己看得更遠,走的更高。

    posted @ 2009-12-08 00:54 岑文初 閱讀(4238) | 評論 (6)編輯 收藏

       今年blog更新的速度比去年慢很多,當然最大的原因就是工作的轉變。當選擇留在云公司還是去淘寶,自己做了很快的抉擇,去淘寶。其實在阿軟的后面這一年,對自己來說是一個技術提升的階段,工作任務不緊,技術預研范圍較大,但對于自己這么一個已經到了30的人來說,應該是把技術轉變為產品的時候了,因此義無反顧地選擇了TOP作為我新的開端。

        其實每個人都會有自己不同的階段,任何階段都有自己的目標,同時當你發現在一個階段停留很久,都沒有什么突破,或者漸漸失去目標的時候,那么就需要考慮如何找到新的起點。對我來說,技術追求和提升是沒有止盡的,但是需要真正的將所學的作出一點實在的產品,同時在參與產品團隊的過程中,學會溝通,交流,分析問題,全面地看問題,這些也是不可缺少的成長經驗,如果僅僅局限在狹隘的某一個技術立領域,那么就和普通的學生無異。

        到了TOP,自己的工作分成了三大塊:1.救火及防火。2.整體架構支持。3.核心代碼的編寫。前期花了不少時間在1上,同時和各個Team交流,參與各個團隊的關鍵性設計評審,以及對平臺的統一規劃,讓我實實在在的作了一點2的事情。(說道實實在在,記得在阿軟很多團隊都抱怨我所在的架構組整天派一個人掛個名字,然后就算是架構支持了,當然這有很多原因造成,并不一定是負責架構的同學的問題)。對于3這點當然是自己最樂意做的,也是自己一直告誡自己要不斷提升的,不論自己有多少理由說自己忙碌,寫代碼是我們這種人的生命所在,不然就會漂浮在空中,漸漸的走向“另一個世界”。 但自己覺得其實還少了一塊,就是對業界的發展深入了解,這會讓我看的不夠遠(幸好我們的產品經理黑羽同學總還會給我一些新的思路),到了年底將會多花一點時間作這部分內容。

        去年年底我寫了關于對于Open API的思考和探索的一篇文章作為年底總結,今年一樣,對于當前自己的工作將會有一份總結和規劃,即是對今年平臺發展的一個回顧,也是對平臺未來的一點思考,大致已經列了一個綱要,對外可能部分內容不能全寫出來,不過就算不寫細節也會將一些思路寫一下,大家可以相互探討一下。這部分內容也將會成為我12月份參加淘寶內部淘寶大學講課的內容,希望能夠將今年新進淘寶的同學吸引到TOP來,為TOP增加人氣。

       下面是一個mind 圖,大致描述了一些內容:

    posted @ 2009-11-27 00:58 岑文初 閱讀(2933) | 評論 (2)編輯 收藏

         摘要: 常用模式的細節問題看設計穩定性  閱讀全文
    posted @ 2009-11-10 01:52 岑文初 閱讀(2872) | 評論 (4)編輯 收藏

    在自己的blog上做個招聘廣告,TOP平臺架構Team歡迎各位資深或者剛畢業的對TOP有興趣的同學加入,可以直接給我留言或者發mail到fangweng@taobao.com,非誠勿擾^_^,同事可能比老婆相處的時間都要長。對了,請附加上你的簡歷,方便繼續溝通。
    posted @ 2009-10-30 15:51 岑文初 閱讀(1334) | 評論 (2)編輯 收藏

         摘要: Author:放翁(文初) Email:fangweng@taobao.com Blog:http://blog.csdn.net/cenwenchu79   閑話:(如果圖片看不清楚可以看另一個blog,因為圖片在家,這里上傳就只能轉貼了)          為什么又叫做什么…的點滴,...  閱讀全文
    posted @ 2009-10-30 12:27 岑文初 閱讀(3667) | 評論 (6)編輯 收藏

         摘要: 上海校招回來  閱讀全文
    posted @ 2009-10-13 21:27 岑文初 閱讀(1464) | 評論 (4)編輯 收藏

         摘要: 客戶端NIO實踐分析  閱讀全文
    posted @ 2009-09-24 08:57 岑文初 閱讀(3374) | 評論 (7)編輯 收藏

         摘要: 應用架構設計“防火”經驗分享  閱讀全文
    posted @ 2009-08-27 00:59 岑文初 閱讀(3183) | 評論 (5)編輯 收藏

    僅列出標題
    共12頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 
    主站蜘蛛池模板: 2021久久精品免费观看| 一级白嫩美女毛片免费| 免费人成毛片动漫在线播放| 深夜国产福利99亚洲视频| 亚洲精品中文字幕无码A片老| 久9这里精品免费视频| 国产亚洲色婷婷久久99精品| 黄色毛片视频免费| 亚洲一级片免费看| www.av在线免费观看| 亚洲精品乱码久久久久久不卡 | 操美女视频免费网站| 无码AV片在线观看免费| 亚洲AV无码一区二区三区DV| 在线观看免费视频网站色| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲美女在线国产| 人人鲁免费播放视频人人香蕉| vvvv99日韩精品亚洲| 亚洲黄片手机免费观看| 亚洲国产无套无码av电影| 国产无遮挡裸体免费视频在线观看| 亚洲αv久久久噜噜噜噜噜| 日韩在线永久免费播放| 亚洲精品自在线拍| 免费无码又爽又高潮视频| 美女尿口扒开图片免费| 中文字幕在线亚洲精品| 无码日韩精品一区二区免费暖暖| 亚洲色成人网一二三区| 在线播放高清国语自产拍免费| 免费国产污网站在线观看不要卡| 亚洲综合无码精品一区二区三区| 亚洲免费视频在线观看| 亚洲人成在线播放| 四虎永久在线精品免费观看地址 | 亚洲精品成人片在线播放| 2021精品国产品免费观看| 亚洲AV成人一区二区三区在线看| 免费h黄肉动漫在线观看| 三级网站免费观看|