如何構建一個具有高可用性、高性能、易擴展性、可擴展性和安全性的應用系統? 我相信這是一個困擾無數開發者的問題。 這裡,我們以一個網站為例,討論如何做好大型應用系統的架構設計。

建築進化

大型網站的科技挑戰主要來自大用戶、高併發訪問和海量數據。

初期

大型網站是從小型網站發展而來的。 一開始,小型網站沒有很多人訪問,只有一臺服務器就足够了。 此時,網站架構如圖所示。

應用與數據分離

隨著業務的發展,服務器逐漸不能滿足需求:越來越多的用戶訪問,導致效能變差;越來越多的數據,導致存儲空間不足。 此時,有必要將應用程序與數據分開。

應用和數據分離後,整個網站使用三臺服務器:應用伺服器、檔案伺服器和資料庫服務器,如圖所示。

這三臺服務器對硬體資源有不同的要求。 應用伺服器需要處理大量的業務邏輯,囙此需要更快、更强大的CPU; 資料庫服務器需要快速的磁片檢索和數據緩存,囙此需要更快的硬碟和更大的記憶體; 檔案伺服器需要存儲大量用戶上傳的檔案,囙此需要更大的硬碟。

使用緩存

隨著用戶數量的不斷增加,網站面臨著另一個挑戰:太多的資料庫壓力導致訪問延遲,從而影響整個網站的效能和用戶體驗。

網站訪問遵循28條法則:80%的商業訪問集中在20%的數據上。 由於大多數業務訪問都集中在一小部分數據上,如果將這一小部分數據緩存在記憶體中,能否降低資料庫的訪問壓力,提高整個網站的數據存取速度,提高資料庫的寫入效能?

網站使用的緩存可以分為兩種類型:應用伺服器上的本地緩存和專用分佈式緩存服務器上的遠程緩存。 本地緩存的訪問速度更快,但由於應用伺服器的記憶體限制,緩存的數據量有限,並且會與應用程序發生記憶體爭用。 遠程分佈式緩存可以使用集羣管道將記憶體大的服務器部署為專用緩存服務器,理論上可以實現不受記憶體容量限制的緩存服務,如圖所示。

arrow
arrow
    全站熱搜

    kaki582 發表在 痞客邦 留言(0) 人氣()