日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

做架構優(yōu)化的方法 - 84年的礦泉水 - 博客園

 jack.wang@net 2010-08-25


        一直有很多人問做架構的方法。其實架構不是做出來的,而是改出來的。但是萬變不離其宗啊--萬事都是有規(guī)律和方法的嘛!去年我有幸做了一個分布式文件系統(tǒng)(DFS)優(yōu)化的架構工作,和大家sharing。

         分布式文件系統(tǒng)(DFS),關于這個是什么東西,不知道的各位同仁請g之。

         首先要明白自己的問題在哪里?我們的問題在于圖片的量太大,導致了站點很卡。這是外表現(xiàn)象,那么里面到底是什么問題呢?為什么要用DFS呢?他主要用來干什么呢?怎么用呢?

         DFS的作用說白了很簡單。目前在我們的系統(tǒng)中,主要就是用來解決用戶上傳圖片的問題(不是圖片的問題嗎,那就解決它)。是不是有人大驚小怪了?上傳圖片 還要單獨用一個DFS系統(tǒng)?這不是復雜設計了嗎?你直接把文件上傳到站點根目錄不就完了嗎?是的,這是一種解決方法。但是你有沒有想過我們的圖片有多大的 量?我們的圖片需要在線維護的少說是TB級別的。還有我們的Web服務器是由F5做負載均衡的,也就是說不是單獨一臺web服務器,所以你的圖片必須要集 中起來管理維護了。

        也許有人會說,直接把圖片放到數(shù)據(jù)庫!其實以前我們就是這么做的(因為以前的量不大)。這樣的好處是管理方便,壞處是相當于給數(shù)據(jù)庫安裝了病毒(量大就 卡)。當圖片的量上來的時候,只能升級硬件,但是升級硬件那是一條死胡同,你早晚得把硬件策略換到軟件策略,taobao就是一個很好的例子。

       還有解決方法嗎?WS/emoting?!是的,如果速度夠快的話也是一種,但是現(xiàn)實是很殘酷的!我們曾經(jīng)做過嘗試,包括用net寫了一個tcp的服務, 最終還是選擇了放棄。原因是速度實在不敢恭維,其二,windows的磁盤管理對于這種純文件服務,不是太管用。

        那么這個時候,就想到了linux,天生的內(nèi)存和文件服務器。但是要在linux上跑,你的選擇就是c,c++,java,另外一些腳本語言的東西。語言 和平臺不重要?不,很重要。因為下面你要修改它,維護它,管理它。選擇一個你不熟悉的語言和平臺無疑就是噩夢的開始。對我們這個net團隊而言,那個最可 控呢?顯然是c。c++是一門正房地位,二奶權益,野花誘惑的語言,很少能做到全局控制。java,這個……,還是不要了吧?!現(xiàn)在留下的唯一一個問題就 是你是自己寫?還是準備找一個開源的呢?答案是看看你有多少成本。

       成本不管是錢,還有時間和人。對我們而言,錢倒不是大問題,但是做DFS的時候,我們組只有兩個人,另外一個還在那邊做緩存的優(yōu)化,根本沒有時間做 DFS,我自從學校出來后c已經(jīng)基本上還給老師了。短時間無法接手c。所以自己寫的話,時間長不說,風險還很大。我和他討論后還是選擇了開源。

       開源是一個不錯的東西。每每在關鍵的時候能救你一把!當然了開源的軟件不是商業(yè)軟件,別要求太高,別指望它像MS的東西那樣,拿來就用。你得根據(jù)你的需求 自己去改。我們改了幾處和我們需求不符合的地方。然后開源軟件一定要測試。要做非常復雜和全面的測試。性能,功能,災難等等,這些測試一定要做,而且要做 的全。我們的做法是由我寫測試用例,因為一般而言只有架構人員和開發(fā)人員才知道這個東西最可能出現(xiàn)的問題在哪里,那么就重點測。你的目標其實很簡單,就是 當你把你的測試用例發(fā)給測試人員的時候,測試人員能看懂這個文檔并且“哭出來”,那么如果在這種情況下測試通過的話,這個開源軟件基本上已經(jīng)夠用了。

        這里為什么要先把測試放在前面呢?開源軟件很多時候都不是非??孔V的,特別在一些極端情況下的功能和性能問題,所以一定要先測試,測試完了,能滿足自己的 功能和性能需求了,你再去真正開始做細致的業(yè)務分析,再怎么樣去搞定這個東西。是不是有人會問,你不知道業(yè)務需求什么,你怎么選型,怎么安排測試?你肯定 知道大概要什么吧?你不知道?開玩笑,你不知道要什么你優(yōu)化這個干嗎?你肯定是知道了問題再去解決這個問題的嘛!這個問題少說也占80%吧?下面的20% 是細微的一些細節(jié)。做架構首要抓西瓜,實在不得已才丟芝麻。

       下一步就是怎么樣優(yōu)化你的系統(tǒng)。先要做一些調查。業(yè)務組是首當其沖,因為他們是一線的工作人員,他們對于客戶需要什么,他們需要什么無比的了解。所以不要 放過。第二個是誰?以前做架構的那個人,他肯定知道以前為什么怎么做,怎么做的好處和壞處,等等。所以這個人也有價值。第三個呢?你的領導??!他對于這個 東西肯定有自己的想法,比如一些性能問題的要求等等。把這些全部收集起來,然后一個一個看你測試的功能點能否滿足?能,那么就萬事大吉,不能?辛苦一下, 自己動手改一下唄!

       這樣,再經(jīng)過測試人員測試一下,你的系統(tǒng)基本上已經(jīng)沒啥問題了。

      你上面去調查了細節(jié)的需求,你是不是對你這個東西很明白了?是不是可以做出最適合你的架構出來了?比如是否需要讀寫分離,是否需要熱備份等等。這樣架構圖畫出來后,和運維兄弟商量一下是不是就八九不離十了?

      那么你下面還要做什么?跟蹤這個優(yōu)化方案,至少1-2年,在這1-2年內(nèi),你還會碰到不同BT的需求,不管這些需求是因為你的疏忽,還是運維人員的管理方 便等等原因??傊倳懈脑诘戎?。也許你認為這些需求實在是太無語,但是存在即合理。所以面對它,解決它,這才是你一個人的價值體現(xiàn)。聽過一句話 嗎?20%的人完成了公司80%有價值的工作,80%的人完成了公司20%有價值的工作。不管你做什么,總要做前面那個20%。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多