大型網際網路公司專案如何架構

2021-09-12 09:38:21 字數 2834 閱讀 1138

初始階段的**架構

大型**都是從小型**發展而來,**架構也是一樣,是從小型**架構逐步演化而來,小型**最開始沒有太多人訪問,只需要一台伺服器就綽綽有餘,這時的**架構如圖。

應用程式,資料庫,檔案等所有的資源都在一台伺服器上。通常伺服器作業系統使用linux,應用程式使用php開發,然後部署在apache上,資料庫使用mysql,匯集各種開源軟體及一台廉價伺服器就可以開始**的發展之路了。

應用服務和資料服務分離

隨著**業務的發展,一台伺服器逐漸不能滿足需求:越來越多的使用者訪問導致效能越來越差,越來越多的資料導致儲存空間不足,這時就需要將應用和資料分離,應用和資料分離後整個**使用三颱伺服器:應用伺服器,檔案伺服器和資料庫伺服器,如下圖所示,這三颱伺服器對硬體資源的要求各不相同,應用伺服器需要處理大量的業務邏輯,因此需要更快更強大的cpu,資料庫伺服器需要快速磁碟檢索和資料快取,因此需要更快的硬碟和更大的記憶體,檔案伺服器需要儲存大量使用者上傳的檔案,因此需要更大的硬碟。

應用和資料分離後,不同特性的伺服器承擔不同的服務角色,**的併發處理能力和資料儲存空間得到了很大改善,支援**業務進一步發展,但是隨著使用者逐漸增多,**又一次面臨挑戰:資料庫壓力太大導致訪問延遲,進而影響整個**的效能,使用者體驗受到影響,這時需要對**架構進一步優化。

使用快取改善**效能

使用快取後,資料訪問壓力得到有效緩解,但是單一應用伺服器能夠處理的請求連線有限,在**的訪問高峰期,應用伺服器會成為整個**的瓶頸。

使用應用伺服器集群改善**的併發處理能力

使用集群是**解決高併發,海量問題的常用手段,當一台伺服器的處理能力、儲存空間不足時,不要企圖去換更強大的伺服器,對大型**而言,不管多麼強大的伺服器,都滿足不了**持續增長的業務需求,這種情況下,更恰當的做法是增加一台伺服器分擔原有伺服器的訪問及儲存壓力。

對**而言,只要能通過一台伺服器的方式改善負載壓力,就可以以同樣的方式持續增加伺服器不斷改善系統效能,從而實現系統的可伸縮性,應用伺服器實現集群是**可伸縮集群架構設計中較為簡單成熟的一種。如下圖所示。

資料庫讀寫分離

**使用快取後,大部分資料操作訪問都可以不通過資料庫就能完成,但是仍有一部分讀操作,(快取訪問不命中、快取過期)和全部的寫操作,需要訪問資料庫,在**的使用者達到一定規模後,資料庫因為負載壓力過高而成為**的瓶頸。

目前大部分的主流資料庫都提供主從熱備功能,通過配置兩台資料庫主從關係,可以將一台資料庫伺服器的資料更新同步到另一台伺服器上。**利用資料庫的這一功能,實現資料庫讀寫分離,從而改善資料庫負載壓力。

應用伺服器在寫資料的時候,訪問主資料庫,主資料庫通過主從複製機制將資料更新同步到從資料庫,這樣當應用伺服器讀資料的時候,就可以通過資料庫或得資料。為了便於應用程式訪問讀寫分離後的資料庫,通常在應用伺服器端使用專門的資料訪問模組,使資料庫讀寫分離時對應用透明。

使用反向**和cdn加速**響應

cdn和反向**的基本原理都是快取,區別在於cdn部署在網路提供商的機房,是使用者在請求**服務時,可以從距離自己最近的網路提供商機房獲取資料;而反向**則部署在**的中心機房,當使用者請求到達中心機房後,首先訪問的伺服器是反向**伺服器,如果反向**伺服器中快取著使用者請求的資源,就將其直接給使用者。

使用分布式檔案系統和分布式資料庫系統

分布式資料庫是**資料庫拆分的最後手段,只有在單錶資料規模非常龐大的時候才使用,不到萬不得以時,**更常用的資料庫拆分手段是業務分庫,將不同業務的資料庫部署在不同的物理伺服器上。

使用nosql和搜尋引擎

對於海量資料的查詢,我們使用nosql資料庫加上搜尋引擎可以達到更好的效能。並不是所有的資料都要放在關係型資料中。常用的nosql有mongodb和redis,搜尋引擎有lucene。

業務拆分

分布式服務

這時我們發現各個業務應用都會使用到一些基本的業務服務,例如使用者服務、訂單服務、支付服務、安全服務,這些服務是支撐各業務應用的基本要素。我們將這些服務抽取出來利用分部式服務框架搭建分布式服務。**的dubbo是乙個不錯的選擇.

網際網路公司應該如何「敏捷」?

今天我就從巨集觀角度,闡述一下敏捷的意義,怎麼樣算是 敏捷 必須的按照敏捷方法規定按部就班執行,才算敏捷了嗎?由於網際網路行業的一些特點,決定了專案組或者產品組需要保持足夠的敏捷,這裡面存在兩個層面的含義 第乙個層面,要在面向終端使用者和市場時快速響應 擁抱變化,另外乙個層面是所謂的組織級敏捷,需要...

大型網際網路架構概述

一 dns 1 當使用者在 瀏覽器中輸入 位址 後,瀏覽器會檢查 瀏覽器快取 中是否存在對應 網域名稱的解析結果 如果有,則解析過程結束 否則進入下乙個步驟 2 瀏覽器查詢 作業系統快取 中是否存在這個 網域名稱的解析結果 這個快取的內容 就是作業系統的 hosts檔案 如果有,則解析過程結束 否則...

國內網際網路公司季報

阿里 2018.6 2018.9季報 第一財季營收809.2億元人民幣,市場預期808.8億元人民幣。第一財季營收同比增長61 連續6個季度保持超過55 的高速增長。以及利潤相關 阿里巴巴稱,第一財季非美國通用會計準則下盈利達到201.01億元,同時,由於螞蟻金服估值大幅增加,授予員工的螞蟻金服相關...