談一談大型網站架構的演進之路(一)

大型網站的特點

收到小夥伴的反饋,之前的知識文章篇幅太長,看之乏力。小編採納建議,之後的文章儘量以通俗易懂,簡短概述,長文拆分的方式進行。

進入正題,今天來聊一聊大型網站的搭建思想。與傳統的企業應用系統相比,大型互聯網應用系統,通常概括有以下幾大特點:

1、大流量、高併發

2、高可用,保證系統24小時不間斷運行

3、大數據集,需要存儲和管理的數據繁多、巨多、超級多

4、用戶分佈廣泛,網絡情況複雜

5、安全環境惡劣(網絡攻擊、盜竊信息)

6、需求快速變更,發佈頻繁。(上午剛和產品經理幹了一仗,下午又得琢磨者明天的殊死肉搏)

7、漸進式發展(從單一的小網站逐漸擴展爲大型網站)

 

發展歷程

大型網站的技術挑戰來自於逐漸增長的用戶,任一簡單功能的業務,面對龐大的用戶體量做分析處理,都會變得困難棘手。

 

初始階段的網站架構

在許多的初創公司,成立項目,構建網站,在沒有太多人訪問的情況下,可能只需要一臺服務器就足以支撐所有的服務。將應用程序、數據庫、文件等所有的資源放在一臺服務器上(通常使用Linux系統服務器)。

 

隨着用戶量的增多,結合用戶的需求調研,項目的業務便進入了第二個階段,迭代更新。一臺服務器逐漸不能滿足需求,比如數據的存儲空間不足,比如用戶訪問的響應時長增加。這時,一般就會採取將應用和數據分離的辦法,簡單的理解可以將整個網站拆分爲3臺服務器:應用服務器、文件服務器、數據庫服務器。通過這樣的方式,根據不同的硬件資源要求,分配不同的硬件將其拆分開來。不同特性的服務器承擔不同的服務角色,以支持網站業務的進一步發展。

 

使用緩存改善網站性能

 

做過開發的童鞋都清楚,絕大多數網站的業務,承載最多的一般都是讀數據,而寫數據所佔比例相對少的多。因此,在業務訪問較爲集中的數據上,迭代的過程中將其優化至緩存當中,可以有效的減少對數據庫的訪問壓力,提高網站的整體性能。並且,如果考慮增加一臺緩存服務器,便可避免服務程序與緩存數據爭搶內存的情況。

 

數據庫的讀寫分離

隨着數據的不斷增多,當數據庫稱爲瓶頸的時候,便可以開始考慮數據庫層的讀寫分離措施。目前來看,絕大多數的主流數據庫都提供了主從熱備的功能,通過配置2臺數據庫服務器的主從,可將一臺服務器的數據更新同步到另一臺服務器上。實現數據的讀寫分離,從而改善數據庫的負載訪問壓力。

 

集羣措施

當這個“麻雀”五臟俱全之後,一個小型豐富的功能網站便見雛形。這樣的產品,通過市場運營和推廣,如果產品優良,用戶體驗較好,便逐漸的吸引更多的人關注和使用產品。

 

隨着用戶量的激增,結合市場反饋,團隊便會採取一定的產品策略,對其進行下一步的迭代開發。當一臺服務器的處理能力不夠、存儲空間不足的時候,使用服務器的集羣方式來改善網站的併發處理能力就變得尤爲重要和關鍵。

 

通過增加一臺負載均衡的調度服務器,將來自於用戶的訪問請求,分發到應用服務器集羣中的任意一臺,從而使應用服務器的負載壓力不再成爲網站瓶頸。

市面上常見的一些負載均衡方法,如使用DNS負載均衡、Nginx反向代理、F5硬件負載均衡、Apache等等。當靜態資源逐漸增多時,企業也會採取CDN的方法進行資源加載加速。

 

 

經歷到這一階段,一箇中型的網站便已形成。

 

未完待續......

 

小結

有很多的朋友找我聊說大型的網站項目,對大型項目網站不知道如何着手,敬而遠之。其實拆分細看,認真琢磨,並沒有想象當中的那麼遙不可及。小結一下,項目的發展歷程:

->單一服務 

->分不同角色服務

->增加緩存

->數據層讀寫分離

->服務應用集羣

->負載均衡

->CDN優化

好了,時間不多,今天就寫到這裏。元(猿)宵節到了,祝大家元(猿)宵節快樂!闔家幸福~

 

文章內容參考文獻《大型網站技術架構 核心原理與案例分析》。

 

本公衆號致力於做一個

非營利性質

技術資源共享交流平臺

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章