標籤:應用伺服器 叢集 系統架構 linux 大型軟體
見過很多成長中的企業,隨著業務的擴大,資料流的增加,自家的軟體越來越受到成長性的頸瓶,於是乎高薪招來大牛,然後就急急忙忙的亂設計架構做實驗,最後搞的頭痛醫頭,腳痛醫腳的局面。
這樣的企業國內太多,多的我都不好意思說了。
無論什麼軟體受到成長性的頸瓶,除了曆史架構原因,沒有別的因素了。
目前解決資料流頸瓶的技術方案有很多種,我在這裡僅僅做一個設想,因為不想為那種所謂的成熟方案所吸引。
在我看來,最大的資料流軟體就是google了。
據說,google為瞭解決此問題,採用的硬體模組化,資料記憶體化(含虛擬記憶體技術),多進程多線程化,伺服器叢集化,電力叢集自動化等等系列的智能處理。
我想,如果你的軟體有一天像google那麼成功,那肯定會有類似的處理辦法。
我的設想是,如果你的軟體在未來的五年業務增長能承受百萬級並發就可以的化,那麼你要做的就不是百萬級並發的事,你做的事未來20年的業務增長的可控空間。
這是一個什麼樣的架構設想呢(作為技術與業務並進的科技公司而言)?
首先要考慮的是,虛擬技術,叢集技術,分布式技術,其實這些代價比起購買昂貴的伺服器和高速頻寬強很多。
虛擬技術其實就是將實體資源轉變為邏輯上可以管理的資源,以打破物理結構之間的壁壘,想像下,任何pc都可以將電腦資源用到極致,這是一個什麼概念。
叢集技術就是將虛擬技術和物理機器用到極致並突破大資料流帶來的任意高並發增長,並做好網路和資料的災備。
分布式技術就是突破伺服器資源和pc端資源的限制,同樣是解決效能問題。
目前這些技術已很成熟,現在大型企業幾乎都在用或嘗試這些技術解決方案。
其次,我們要考慮是網路傳輸和電腦語言本身的問題。
儘管目前頻寬已很大提高,但對於一個長期發展的企業和軟體來說,這是不得不考慮的事情,顯然,移動端還是pc很多前端技術有了很成熟的方案,比如開源架構jquery及類jquery的數不勝數;這些架構在一定程度上解決了網路傳輸響應問題,其二我們要考慮緩衝機制,像這裡的開源架構也是數不勝數,如ehcache及類ehcache
電腦語言的選擇也是個問題,現在全球都在流行使用java,的確java是為網路而生的,有著天然的優勢;但為了長遠打算,除了應用業務層外使用java, 底層或中介軟體或應用程式層最好還是php+java+c+erlang這種組合方式進行,這是最有效效能和速度及安全上的解決方案。
伺服器應用程式容器,有很多選擇,推薦使用ngnix或was
伺服器作業系統自然不用說,linux!
這篇文章純屬經驗概述篇,今後我將陸續的推出針對性的解決方案文章。
深圳-linux核心- 羅 2014/0711