仲介交易 SEO診斷 淘寶客 雲主機 技術大廳
開了自己功能變數名稱的博客,第一篇就得來個重磅一點的才對得起這4美金的功能變數名稱。 作為一個技術從業者十年,逛了十年發現有些知識東一榔頭西一棒槌的得滿世界 看個遍才整理出個頭緒,那咱就系統點的從頭一步一步的說,一個從日幾千訪問的小小網站,到日訪問一兩百萬的小網站,怎麼才能讓它平滑的度過這個階段,別在 技術上出現先天不足,寫給一些技術人員,也寫給不懂技術的創業者。
對互聯網有了解的人都有自己的想法,有人就把想法付諸實現,做個網站然後開始運營。 其實從純網站技術上來說,因為開源模式的發展,現在建一個小網站 已經很簡單也很便宜。 當訪問量到達一定數量級的時候成本就開始飆升了,問題也開始顯現了。 因為頻寬的增加、硬體的擴展、人員的擴張所帶來的成本提高是顯而 易見的,而還有相當大的一部分成本是因為代碼重構、架構重構,甚至底層開發語言更換引起的,最慘的就是資料丟失,辛辛苦苦好幾年,一夜回到創業前。
減少成本就是增加利潤。 很多事情,我們在一開始就可以避免,先打好基礎,往後可以省很多精力,少操很多心。 假設你是一個參與創業的技術人員,當前一窮二白,什麼都要自己做,自己出錢,初期幾十萬的資金,做一個應用不是特別複雜的網站,那麼就要注意以下幾點:
一、開發語言
一般來說,技術人員(程式師)創業都是根據自己技術背景選擇自己最熟悉的語言,不過考慮到不可能永遠是您一個人寫程式,這點還得仔細想想。 無論用什麼語言,最終代碼品質是看管理,所以我們還是從純語言層面來說實際一點。 現在流行的java、php、.net、python、ruby都有自己的優劣,python和ruby,現在人員還是相對難招一些,性能優化也會費些力氣,.net平臺買不起windows server。 java、php用的還是最多。 對於初期,應用幾乎都是靠前端支撐的網站來說,php的優勢稍大一些,入門簡單、設計模式簡單、寫起來快、 性能足夠等,不過不注重設計模式也是它的劣勢,容易變得鬆散,隱藏bug稍多、難以維護。 java的優勢在於整套管理流程已經有很多成熟工具來輔助,強類 型也能避免一些弱智BUG,大多數JAVA程式師比較注重設計模式,別管實不實際,代碼格式看起來還是不錯的。 這也是個劣勢,初學者可能太注重模式而很難 解決實際需求。
前端不只是html、css這類。 整個負責跟使用者交互的部分都是前端,包括處理常式。 這類程式還是建議用php,主要原因就是開發迅速、從業人員廣泛。 至於後端例如行為分析、銀行介面、非同步消息處理等,隨便用什麼程式,那個只能是根據不同業務需求來選擇不同語言了。
二、代碼版本管理
如果開發人員之間的網路速度差不多,就SVN;比較分散例如跨國,就hg。 大多數人還是svn的。
假設選了svn,那麼有幾點考慮。 一是採用什麼樹結構。 初期可能只有一條主幹,往後就需要建立分支,例如一條開發分支,一條上線分支,再往後,可能 要每個小組一個分支。 建議一開始人少時選擇兩條分支,開發和線上,每個功能本地測試無誤後提交到開發分支,最後統一測試,可以上線時合併到上線分支。 如果 喜歡把svn當做移動硬碟用,寫一點就commit一次也無所謂,就是合併的時候頭大一些,這些人可以自己建個分支甚至建立個本地代碼倉庫,隨便往自己的 分支提交,測試完畢後再提交到開發分支上。
部署,可以手工部署也可以自動部署。 手工部署相對簡單,一般是直接在伺服器上svn update,或者找個新目錄svn checkout,再把web root給ln -s過去。 應用越複雜,部署越複雜,沒有什麼統一標準,只要別再用ftp上傳那種形式就好,一是上傳時檔引用不一致錯誤率增加,二是很容易出現開發人員 的版本跟線上版本不一致,導致本來想改個錯字結果變成回滾的杯具。 如果有多台伺服器還是建議自動部署,更換代碼的機器從當前服務池中臨時撤出,更新完畢後 再重新加入。
不管專案多小,養成使用版本管理的好習慣,最起碼還可以當做你的備份,我的 HTTP://zhiyi.us 雖然就是一個wordpress,可還是svn了,只改動一兩句css那也是勞動成果。
三、伺服器硬體
別羡慕大客戶和有錢人,看看機房散戶區,一台伺服器孤獨的支撐的網站數不清。 如果資金稍微充足,建議至少三台的標準配置,分別用作web處理、資料 庫、備份。 web伺服器至少要8G記憶體,雙sata raid1,如果經濟稍微寬鬆,或靜態檔或圖片多,則15k sas raid1+0。 資料庫至少16G記憶體,15k sas raid 1+0。 備份伺服器最好跟資料庫伺服器同等配置。 硬體可以自己買品牌的底板,也就是主機殼配主機板和硬碟盒,CPU記憶體硬碟都自己配,也可以上整套品牌,也可 以兼容機。 三台機器,市場行情6、7萬也就配齊了。
web伺服器可以既跑程式又當記憶體緩存,資料庫伺服器則只跑主資料庫(假如是MySQL的話),備份伺服器幹的活就相對多一些,web配置、緩存配置、資料庫配置都要跟前兩台一致,這樣WEB和資料庫任意一台出問題, 把備份伺服器換個ip就切換上去了。 備份策略,可以drbd,可以rsync,或者其他的很多很多的開源備份方案可選擇。 rsync最簡單,放cron裡自己跑就行。 備份和切換,建議多做測試,選最安全最適合業務的,並且盡可能異地備份。
四、機房
三種機房儘量不要選:聯通訪問特別慢的電信機房、電信訪問特別慢的聯通機房、電信聯通訪問特別慢的移動或鐵通機房。 那網通機房呢?親,網通聯通N久以前合併改叫聯通了。 多多尋找,實地參觀,多多測試,多方打探,北京、上海、廣州等各個主節點城市,還是有很多優質機房的,找個網路品質好,管理嚴格的機房,特別是管理要嚴格,千萬別網站無法訪問了,打個電話過去才知道別人維護時把你網線碰掉了, 這比DOS都頭疼。 自己扯了幾根光纖就稱為機房的,看您抗風險程度和心理素質了。 機房可以說是非常重要,直接關係到網站存取速度,網站存取速度直接關係到使用者體驗,我可以翻牆看風景,但買個網游vpn才能打開你這 個還不怎麼知名的網站就有難度了。 或許您網站的ajax很出色,可是document怎麼也不ready,一些代碼永遠絕緣于使用者。
五、架構
初期架構一般比較簡單,web負載均衡+資料庫主從+緩存+分散式存儲+佇列。 大方向上也確實就這幾樣東西,細節上也無數文章都重複過了,按照將來 會有N多WEB,N多主從關係,N多緩存,N多xxx設計就行,基本方案都是現成的,只是您比其他人厲害之處就在於設計上考慮到緩存失效時的雪崩效應、主 從同步的資料一致性和時間差、佇列的穩定性和失敗後的重試策略、檔存儲的效率和備份方式等等意外情況。 緩存總有一天會失效,資料庫複製總有一天會斷掉, 佇列總有一天會寫不進去,電源總有一天會燒壞。 根據墨菲定律,如果不考慮這些,網站早晚會成為茶几。
六、伺服器軟體
Linux、nginx、php、mysql,幾乎是標配,我們除了看名字,還得選版本。 Linux發行版本眾多,只要沒特殊要求,就選個用的人最多的,社區最活躍的,配置最方便的,套裝軟體最全最新的,例如debian、ubuntu。 至於RHEL之類的嘛,你用只能在RHEL上才能運行的軟體麼?剩下的nginx、php、mysql、activemq、其他的等等,除非你改過這些軟 件或你的程式真的不相容新版本,否則儘量版本越新越好,版本新,意味著新特性增多 、BUG減少、性能增加。 總有些道聼塗説的人跟你說老的版本穩定。 所謂穩 定,是相對於特殊業務來說的,而就一個php寫的網站,大多數人都沒改過任何伺服器軟體原始程式碼,絕大多數情況是能平穩的升級到新版本的。 類似于jdk5到 jdk6,python2到python3這類變動比較大的升級還是比較少見的。 看看ChangeLog,看看升級說明,結合自己情況評估一下,越早升級 越好,別人家都用php6寫程式了這邊還php4的逛游呢。 優秀的開來源程式升級還是很負責任的,看好文檔,別怕。
以上這六點準備完畢,現在我們有了運行環境,有了基本架構骨架,有了備份和切換方案,應該開始著手設計開發方面的事情了。 開發方面的事情無數,下一篇會先說一些重點。
原文位址:HTTP://zhiyi.us/internet/thinking-twice-before-building-your-site-one.html
轉載請注明出自zhiyi.us。