架構演化-初識

fhadmin24發表於2015-07-27

以下是自己的一點理解,如有理解有誤的地方歡迎指出,不勝感謝。

 

1 網站建設初期,使用者和訪問量都非常小,應用服務+資料庫+檔案服務全都在一個伺服器中

2 使用者和訪問量增大,應用伺服器計算效率不夠,檔案服務儲存量不夠,資料庫記憶體和硬碟需求不夠

  導致問題的原因是所有服務都在一個伺服器上,用多臺伺服器來解決問題,出現 應用伺服器+資料庫伺服器+檔案伺服器

  應用伺服器要邏輯計算能力強的cpu,資料庫伺服器需要更大的磁碟和記憶體,檔案伺服器要大磁碟,每個伺服器單獨佔有自己的資源。

3 為了減小資料庫壓力,引入快取,獲取資料之前,先到快取中拿取資料,這樣可以大幅度減小資料庫讀取資料的壓力。 

4 當訪問量不斷增加的時候,可能不斷更換更強大的伺服器,對於高併發海量資料的網站來說這樣並不能最終解決問題,

  這時候就需要對應用伺服器做叢集,透過叢集分擔負載並且可以達到高擴充套件的作用 

  這時候的架構為:叢集應用伺服器(負載均衡)+快取伺服器+資料庫伺服器+檔案伺服器  

5、隨著訪問量增加,雖然快取承擔了一部分資料庫壓力,但還有一部分資料需要直接訪問資料庫(未命中、過期資料、需要插入資料)

   這時 可以使資料庫讀寫分離處理(大部分資料庫都支援)

6、然後新增CDN和反向代理,加速網站響應 ,提供更好的使用者體驗,兩者原理都是快取:

   CDN部署在網路提供商機房,使使用者在訪問時從距離最近的網路提供商的機房獲取資料 

   反向代理:使用者訪問中心機房後,先訪問反向代理伺服器,如果這個伺服器有所需要的資料快取,直接從快取中返回給使用者

7、這時候對於資料量大的表的耗時查詢,最好走搜尋引擎或NoSQL資料庫,到此資料儲存有搜尋引擎+NoSQL+快取+主從資料庫,

   對與資料訪問最好有一個統一的一個模組來處理 

8、所有的業務都在一個系統中,導致過於複雜,則需要將整個系統按照業務切分為不同的系統,系統間,透過超連結、訊息資料分發

   管理相同的資料儲存系統來關聯一個完成系統,到此係統管理更加容易。

 

 

快取使用:

1、CDN:網路提供商處快取一些靜態的資源,使用者訪問這些資源時候會就近返回資料,提高網站相應速度。如影片網站

2、反向代理:快取靜態資源,使用者訪問網站的時候如果有快取,則直接返回,減小應用伺服器壓力

3、本地快取,和分散式快取減小資料庫的訪問壓力 

 

java企業級通用許可權安全框架原始碼 SpringMVC mybatis or hibernate+ehcache shiro druid bootstrap HTML5 <wbr>

【java框架原始碼下載】

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30372520/viewspace-1752951/,如需轉載,請註明出處,否則將追究法律責任。

相關文章