PHP工程師面臨成長瓶頸 先明確這里所指的PHP工程師,,是指主要以PHP進行Web系統(tǒng)的開發(fā),,沒有使用其的語言工作過,。工作經(jīng)驗大概在3~4年,普通的Web系統(tǒng)(百萬級訪問,千成級數(shù)據(jù)以內(nèi)或業(yè)務(wù)邏輯不是特別復(fù)雜)開發(fā)起基本得心應(yīng)手,,沒有什么問題,。但他們會有這樣的誤點: ◆ 除了PHP不使用其它的語言,,可能會點shell 腳本。 ◆ 對PHP的掌握不精(很多PHP手冊都沒有看完,,庫除外)。 ◆ 知識面比較窄(面對需求,,除開使用PHP和MYSQL,,不知道其它的解決辦法),。 ◆ PHP代碼以過程為主,,認為面向?qū)ο蟮膶崿F(xiàn)太繞,,看不懂。 這些PHPer在遇到需要高性能,,處理高并發(fā),,大量數(shù)據(jù)的項目或業(yè)務(wù)邏輯比較復(fù)雜(系統(tǒng)需要解決多領(lǐng)域業(yè)務(wù)的問題)時,缺少思路,。不能分析問題的本質(zhì),技術(shù)判斷力比較差,,對于問題較快能找出臨時的解決辦法,但常常在不斷臨時性的解決辦法中,,系統(tǒng)和自己一步步走向崩潰。那怎么提高自己呢,?怎么可以挑戰(zhàn)難度更高的系統(tǒng)? 更高的挑戰(zhàn)在那里,? 結(jié)合我自己的經(jīng)驗,,我列出一些具體挑戰(zhàn),,讓大家先有個感性的認識,。 高性能系統(tǒng)的挑戰(zhàn)在那里? ◆ 如何選擇Web服務(wù)器,?要不要使用fast-cgi 模式,; ◆ 要不要使用反向代理服務(wù)?選擇全內(nèi)存緩存還是硬盤緩存,? ◆ 是否需要負載均衡,?是基于應(yīng)用層,還是網(wǎng)絡(luò)層,? 如何保證高可靠性? ◆ 你的PHP代碼性能如何,,使用優(yōu)化工具后怎么樣? 性能瓶頸在那里,? 是否需要寫成C的擴展,? ◆ 用戶訪問有什么特點,,是讀多還是寫多?是否需要讀寫分離,? ◆ 數(shù)據(jù)如何存儲?寫入速度和讀出速度如何,? 數(shù)據(jù)增漲訪問速讀如何變化,? ◆ 如何使用緩存,? 怎么樣考慮失效,?數(shù)據(jù)的一致性怎么保證? 高復(fù)雜性系統(tǒng)的挑戰(zhàn)在那里,? ◆ 能否識別業(yè)務(wù)所對應(yīng)的領(lǐng)域,?是一個還是多個,? ◆ 能否合理對業(yè)務(wù)進行抽象,在業(yè)務(wù)規(guī)則變化能以很小的代價實現(xiàn),? ◆ 數(shù)據(jù)的一致性、安全性可否保證,? ◆ 是否撐握了面向?qū)ο蟮姆治龊驮O(shè)計的方法,? 這里所列出的問題,你都能肯定的回答,,說明在技術(shù)上你基本已經(jīng)可能成為架構(gòu)師了。如何你還不能回答,,你需要在以下幾個方向加強。 怎么樣提高,,突破瓶頸 如何你還不能回答,,你需要在以下幾個方向加強: ◆ 分析你所使用的技術(shù)其原理和背后運行的機制,這樣可以提高你的技術(shù)判斷力,,提高你技術(shù)方案選擇的正確性; ◆ 學(xué)習(xí)大學(xué)期間重要的知識,,操作系統(tǒng)原理,數(shù)據(jù)結(jié)構(gòu)和算法,。知道你以前學(xué)習(xí)都是為了考試,但現(xiàn)在你需要為自己學(xué)習(xí),,讓自己知其所以然,; ◆ 重新開始學(xué)習(xí)C語言,,雖然你在大學(xué)已經(jīng)學(xué)過,。這不僅是因為你可能需要寫PHP擴展,而且還因為,,在做C的應(yīng)用中,有一個時刻關(guān)心性能,、內(nèi)存控制,、變量生命周期,、數(shù)據(jù)結(jié)構(gòu)和算法的環(huán)境; ◆ 學(xué)習(xí)面向?qū)ο蟮姆治雠c設(shè)計,,它是解決復(fù)雜問題的有效的方法,。學(xué)習(xí)抽象,它是解決復(fù)雜問題的唯一之道,。 |
|