2012年6月27日 星期三

PHP工程師面臨成長瓶頸

PHP工程師面臨成長瓶頸

●除了PHP不使用其他的語言,可能會點 Shell 腳本。
●對PHP的掌握不精(很多PHP手冊都沒有看完,庫除外)。
●知識面比較窄(面對需求,除開使用 PHP 和 MySQL ,不知道其他的解決辦法)。
●PHP代碼以過程為主,認為面向對象的實現太繞,看不懂。

這些 PHPer 在遇到需要高性能,處理高並發,大量數據的項目或業務邏輯比較複雜(系統需要解決多領域業務的問題)時,缺少思路。不能分析問題的本質,技術判斷力比較差,對於問題較快能找出臨時的解決辦法,但常常在不斷臨時性的解決辦法中,系統和自己一步步走向崩潰。那怎麼提高自己呢?怎麼樣可以挑戰難度更高的系統?

更高的挑戰在那裏?
結合我自己的經驗,我列出一些具體挑戰,讓大家先有個感性的認識。
高性能系統 的挑戰在那裏?

●如何選擇Web服務器?要不要使用 fast-cgi 模式;
●要不要使用反向代理服務?選擇全內存緩存還是硬盤緩存?
●是否需要負載均衡?是基於應用層,還是網絡層?如何保證高可靠性?
●你的 PHP 代碼性能如何,使用優化工具後怎麼樣?性能瓶頸在那裏?是否需要寫成C的擴展?
●用戶訪問有什麼特點,是讀多還是寫多?是否需要讀寫分離?
●數據如何存儲?寫入速度和讀出速度如何? 數據增漲訪問速讀如何變化?
●如何使用緩存?怎麼樣考慮失效?數據的一致性怎麼保證?

高複雜性系統 的挑戰在那裏?

●能否識別業務所對應的領域?是一個還是多個?
●能否合理對業務進行抽象,在業務規則變化能以很小的代價實現?
●數據的一致性、安全性可否保證?
●是否撐握了面向對象的分析和設計的方法

如果你還不能回答,你需要在以下幾個方向加強:

●分析你所使用的技術其原理和背後運行的機制,這樣可以提高你的技術判斷力,提高你技術方案選擇的正確性;
●學習大學期間重要的知識, 操作系統原理,數據結構和算法。知道你以前學習都是為了考試,但現在你需要為自己學習,讓自己知其所以然;
●重新開始學習 C 語言,雖然你在大學已經學過。這不僅是因為你可能需要寫 PHP 擴展,而且還因為,在做 C 的應用中,有一個時刻關心性能、內存控制、變量生命週期、數據結構和算法的環境;
●學習面向對象的分析與設計,它是解決複雜問題的有效的方法。學習抽象,它是解決複雜問題的唯一之道。

沒有留言:

張貼留言