posts - 431,  comments - 344,  trackbacks - 0
          公告
           Don't Repeat Yourself
          座右銘:you can lose your money, you can spent all of it, and if you work hard you get it all back. But if you waste your time, you're never gonna get it back.
          公告本博客在此聲明部分文章為轉(zhuǎn)摘,只做資料收集使用。


          微信: szhourui
          QQ:109450684
          Email
          lsi.zhourui@gmail.com
          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          留言簿(15)

          隨筆分類(1019)

          文章分類(3)

          文章檔案(21)

          收藏夾

          Link

          好友博客

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 860072
          • 排名 - 44

          最新評論

          閱讀排行榜

          原文地址: http://tech.it168.com/a2008/1209/259/000000259786.shtml
          對于任何一個軟件開發(fā)人員來說,架構(gòu)師都是一個令人向往的角色。就連世界首富比爾蓋茨在2000年卸任公司CEO的同時,也擔任了微軟公司的榮譽角色“首席軟件架構(gòu)師”,可見“架構(gòu)師”這一稱謂的吸引力。架構(gòu)師是公司的“金領”,有著非常高的收入,很少需要考慮生存的問題,從而有更多的精力思考關(guān)鍵技術(shù)問題,形成“強者愈強”的良性循環(huán)。部分優(yōu)秀的開發(fā)人員在工作了一定時間后,就要開始考慮自己的未來到底向哪個方向發(fā)展。如果開發(fā)人員的溝通能力強過技術(shù)能力,在補充一定的項目管理知識后,可以向技術(shù)管理的方向轉(zhuǎn)型。如果其對技術(shù)一直很感興趣,而溝通能力也不弱,則可以試著進一步加強技術(shù)修養(yǎng),以期向架構(gòu)師的方向發(fā)展,最終“修成正果”。

                  那么,到底什么是架構(gòu)師呢?所謂的架構(gòu)師,應該是一個技術(shù)企業(yè)的最高技術(shù)決策者。他主要負責公司軟件產(chǎn)品或軟件項目的技術(shù)路線與技術(shù)框架的制訂。好的架構(gòu)師都是善良的獨裁者,具有很強的技術(shù)、良好的寫作能力、良好的口頭表達能力,能夠在各個層次進行溝通。從開發(fā)人員到架構(gòu)師的成長應該是階梯式的,一般來講開發(fā)人員在剛剛開始工作時只能開發(fā)簡單的獨立軟件模塊,慢慢的隨著經(jīng)驗的增長,他開始接觸一些相互之間有信息傳遞的模塊,而后來,他會發(fā)現(xiàn)自己接到的開發(fā)任務已經(jīng)不是一個獨立的單體,這些任務由一些專門的軟件部分組成,可能包含數(shù)據(jù)庫,工作流引擎,消息服務等等各種功能模塊,可能分布在不同的服務器上,所有的部分協(xié)同起來,完成軟件功能。而這時候,體系結(jié)構(gòu)的好壞將直接決定了系統(tǒng)的性能和可擴展性,而就在這時候,這名優(yōu)秀的開發(fā)人員也開始思考架構(gòu)師應該思考的問題了,或者說,他向成長為架構(gòu)師的道路邁出了一大步。

                  什么是架構(gòu)師最具價值的技能呢?就是要了解不同的知識,做一個“雜家”或者說“博學家”。當然,如果你的數(shù)據(jù)庫技術(shù)非常棒,或者你在工作流引擎方面具有不可超越的專家知識,那也是很不錯的。好的架構(gòu)師有好多都是從專家成長過來的。但是,這不是架構(gòu)師應該做的事情,架構(gòu)師應該做的是了解所有的東西,既了解技術(shù)的宏觀面,又了解技術(shù)的細節(jié)。真正的架構(gòu)師不僅僅要了解軟件,也要了解硬件,在關(guān)鍵的部位使用合適的硬件來取代軟件,可以成倍甚至成百倍的提高整個系統(tǒng)的效率。下面我將會以互聯(lián)網(wǎng)行業(yè)對的架構(gòu)師的要求為例,向大家講解作為架構(gòu)師應該具備的知識。

                  互聯(lián)網(wǎng)行業(yè)是當前最激動人心的行業(yè)之一,很多的創(chuàng)新都來自于這個行業(yè),而每一個大型的網(wǎng)站如Google,Yahoo,Myspace等都需要解決一個非常復雜的問題,就是網(wǎng)站的分布式向外擴展(Scale Out)的問題。解決這個問題,需要最優(yōu)秀的架構(gòu)師對業(yè)務進行剖析,利用軟硬件將網(wǎng)站進行重構(gòu),甚至根據(jù)業(yè)務研發(fā)相應的分布式技術(shù),解決網(wǎng)站復雜的分布式計算的問題。

                  如果你想在這個行業(yè)中成為一名架構(gòu)師的話,需要至少掌握網(wǎng)絡知識,硬件,軟件,網(wǎng)站優(yōu)化等方方面面的知識:
          網(wǎng)絡知識
                  當前的軟件已經(jīng)絕對不是那種僅僅跑在一臺單機上的孤立應用了。不僅僅是在互聯(lián)網(wǎng)行業(yè),任何一個行業(yè)的軟件,都要求其具有網(wǎng)絡功能。因此,網(wǎng)絡知識是架構(gòu)師必備的知識。我們所說的網(wǎng)絡知識,不僅僅包括TCP/IP,http等互聯(lián)網(wǎng)行業(yè)常用的軟件協(xié)議,也包括網(wǎng)絡規(guī)劃,甚至更具體的說,根據(jù)網(wǎng)站應用所處的地理環(huán)境進行網(wǎng)絡規(guī)劃。比如人們常說:“這世界上最遠的距離不是生與死的距離,而是電信到網(wǎng)通的距離”(笑)如果應用是建立在中國的,就要考慮電信用戶和網(wǎng)通用戶訪問網(wǎng)站的速度應該都比較快才可以。這時候的解決方案可能有多種,比如采用CDN(Content Delivery Network內(nèi)容分發(fā)網(wǎng)絡)使得網(wǎng)站的內(nèi)容發(fā)布到離用戶最近的服務器,又可以采用把服務器放在一些所謂的雙線機房中,甚至將幾種方案結(jié)合起來使用。這些都統(tǒng)統(tǒng)歸到網(wǎng)絡知識中。做為公司的架構(gòu)師,要對這些知識都有所了解,才有助于在遇到問題時找到最佳答案。
          硬件知識
                  了解硬件的極限,是架構(gòu)師的基本功。我見過一些人,他們的眼中軟件硬件都是沒有極限的,需要資源就申請,系統(tǒng)性能下降了就買更高級的設備。然而,硬件的性能有很大一部分取決于I/O設備。而這些I/O設備依靠的都是機械物理運動,這種運動是有極限的。因此當資源訪問量增大到一定的程度時,這種物理運動將成為瓶頸。比如說,在開發(fā)網(wǎng)站的過程中,記錄訪客的狀態(tài)是一件很重要的事情,一般來說可以使用HttpSession來記錄。而HttpSession的存儲問題將是一個很大的挑戰(zhàn),尤其是多機共享Session時,將HttpSession存成文件并通過多機共享或網(wǎng)絡備份的方式來解決分布式的問題是常用的方案,然而,架構(gòu)師必須考慮到這種方案是有I/O極限限制的,很難擴展到超過一定規(guī)模的大型網(wǎng)絡。同時,架構(gòu)師應該了解目前最近的硬件發(fā)展是否對軟件系統(tǒng)會造成一定的影響,比如在多核的條件下是否對軟件編程有新的要求,是否會對運行在虛擬機和非虛擬機上的程序有影響等等。
          軟件知識
                  軟件知識所包含的范圍就更加廣泛了。對于互聯(lián)網(wǎng)行業(yè)來講,架構(gòu)師要了解操作系統(tǒng),數(shù)據(jù)庫,應用服務器等各方面的知識。比如說,如果網(wǎng)站使用的操作系統(tǒng)是Linux,就要了解這個Linux版本的性能與局限性,比如說最多可以存放的單個文件為多大。有的數(shù)據(jù)庫的數(shù)據(jù)是以單個文件來存放的,雖然我們很少見到數(shù)據(jù)庫中的數(shù)據(jù)多到不能再放入一條記錄的情況,但是作為架構(gòu)師,請時刻注意,這種可能性是有的。而且如果你有幸在一家高速成長的互聯(lián)網(wǎng)企業(yè)中,而你所負責的應用又沒有經(jīng)過優(yōu)化的話,可能你會很快見到這種現(xiàn)象。這種現(xiàn)象的發(fā)生可能是由于操作系統(tǒng)不支持大文件的原因,也可能是數(shù)據(jù)庫不支持大文件。不論如何,架構(gòu)師應該在這種現(xiàn)象發(fā)生之前就把一切都準備好。對數(shù)據(jù)庫中表的拆分是架構(gòu)師應該遇到的另外一個困難。一般來說增加應用服務器比較簡單而增加數(shù)據(jù)庫服務器則是比較復雜的問題,如果一個站點由多個數(shù)據(jù)庫支持,架構(gòu)師需要考慮如何在保證數(shù)據(jù)一致的情況下,讓多個數(shù)據(jù)庫分擔壓力。有些解決方案是將數(shù)據(jù)庫的讀寫分開,使得大多數(shù)的查詢sql不經(jīng)過核心數(shù)據(jù)庫,而只是訪問數(shù)據(jù)庫的副本,但事實上,這種方式也只能維護規(guī)模不大的網(wǎng)站。對于大型的網(wǎng)站來說,把業(yè)務分散到不同的數(shù)據(jù)庫中,只共享必要的數(shù)據(jù),才是合理的提高網(wǎng)站擴展性的解決方案。
          其他知識
                  作為系統(tǒng)架構(gòu)師,可能還需要對分布式系統(tǒng),負載均衡,網(wǎng)絡安全,數(shù)據(jù)監(jiān)控等等各方面都有所了解。不僅僅是了解理論知識,也要對相關(guān)的產(chǎn)品和業(yè)界進展有一定的認識。比如說做負載均衡最好的產(chǎn)品是那種。目前最常用的備份策略是什么,有什么缺點。如何使用緩存,如何做好日志分析等等。
                  剛剛談到的是架構(gòu)師需要掌握的知識,然而,冰凍三尺非一日之寒。這個過程需要我們慢慢的積累。如果你已經(jīng)進入到公司進行軟件開發(fā),請時刻關(guān)注你所開發(fā)軟件的性能與可擴展性,而不僅僅局限在功能上,時刻想著任何一個簡單的問題:我開發(fā)的模塊如果放在多人并發(fā)的環(huán)境下會怎樣,慢慢的就會有所心得。如果你還是一個在校學生,不要想著自己離架構(gòu)師這個職位還很遙遠。要知道,成為架構(gòu)師的修煉之路是很長的,甚至可以說是終身的,因此早點進入學習狀態(tài),不斷修煉自己。在學校期間學好離散數(shù)學,數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),編譯原理,體系結(jié)構(gòu),數(shù)據(jù)庫原理等關(guān)鍵課程,并積極尋找機會到外面實習,增長自己的工作經(jīng)驗。如果有機會去到一些技術(shù)主導的公司中工作,就一定不要放棄這種機會,慢慢就會成長起來。最重要的,你會養(yǎng)成關(guān)注技術(shù),勤于思考的好習慣。當有一天你發(fā)現(xiàn)自己對任何技術(shù)難題都可以一眼看到其本質(zhì),并能夠?qū)⑵浞纸鉃橐粋€個可輕松解決的模塊,你會由衷的感覺到知識給你帶來的快樂,或許那一天,你已經(jīng)是一個架構(gòu)師了。

          posted on 2008-12-17 16:35 周銳 閱讀(194) 評論(0)  編輯  收藏 所屬分類: 軟件工程
          主站蜘蛛池模板: 凤庆县| 富川| 临夏市| 乌兰察布市| 沁源县| 怀远县| 嫩江县| 平南县| 马龙县| 绥棱县| 获嘉县| 攀枝花市| 克什克腾旗| 通道| 深泽县| 鄂托克前旗| 万源市| 乌恰县| 延安市| 台中县| 龙陵县| 中宁县| 财经| 双桥区| 郯城县| 偏关县| 彭水| 乐山市| 临邑县| 得荣县| 木兰县| 潞城市| 腾冲县| 绥芬河市| 民丰县| 太仓市| 汝州市| 清涧县| 略阳县| 鸡西市| 吉安县|