成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大型網站技術架構(1)

開發 架構
網站都是從小網站一步一步發展為大型網站的,而這之中的挑戰主要來自于龐大的用戶、安全環境惡劣、高并發的訪問和海量的數據,任何簡單的業務處理,一旦需要處理數以 P 計的數據和面對數以億計的用戶時,問題就會變的很棘手

網站都是從小網站一步一步發展為大型網站的,而這之中的挑戰主要來自于龐大的用戶、安全環境惡劣、高并發的訪問和海量的數據,任何簡單的業務處理,一旦需要處理數以 P 計的數據和面對數以億計的用戶時,問題就會變的很棘手

下面我們就來說說這個演變過程:

初始階段

大型網站都是由小型網站演變而來的,網站架構也一樣

小型網站最開始沒有太多人訪問,只需要一臺服務器就綽綽有余,就像這樣:

應用程序、數據庫、文件等所有資源都在一臺服務器上,通常使用 Linux PHP MySQL Apache 就可以完成整個項目部署,然后再買個域名,租一個廉價的服務器就可以開始我們的網站之旅了

應用服務與數據服務分離

隨著業務的發展,逐漸的一臺服務器已經不能滿足需求,這時我們可以將 應用與數據分離

分離之后我們使用到三臺服務器:應用服務器、文件服務器和數據庫服務器,如下所示: 

 

 

對于這三臺服務器要求各不相同:

  • 應用服務器 要處理大量的業務邏輯,所以需要更好更快更強大的 CPU
  • 數據庫服務器 需要快速的進行磁盤檢索和數據緩存,因此需要更快的硬盤和更大的內存
  • 文件服務器 需要存儲用戶上傳的文件資源,因此需要更大的硬盤存儲空間

應用與數據分離后,各個的職責變得更加專一,網站的性能得到進一步的提升,但隨著用戶的繼續增加,我們需要對網站架構進一步優化

使用緩存改善性能

網站的訪問一樣遵循二八定律:80% 的業務訪問集中在 20% 的數據上面

因此我們要對這一小部分的數據進行緩存來減輕數據庫的訪問壓力,以提高整個網站的數據訪問速度,改善數據庫的讀寫性能

網站的緩存可以分為兩種:緩存在應用服務器上的本地緩存和緩存在專門的分布式緩存服務器上的遠程緩存

  • 本地緩存 的訪問速度會快一些,但是受應用服務器內存限制,緩存數據量很有限,而且會出現內存爭用的情況
  • 遠程分布式緩存 可以使用集群的方式,部署大內存的服務器作為專門的緩存服務器,可以在理論上做到不受內存容量限制的緩存服務

如下所示: 

 

 

使用緩存后,數據訪問壓力得到了有效的緩解,但單一的應用服務器能夠處理的請求連接數有限,在訪問的高峰期,應用服務器又會成為網站性能的瓶頸

使用應用服務器集群改善網站并發處理能力

使用集群是網站解決高并發,海量數據問題的常用手段,當你縱向提升到一定程度后,那就該開始橫向提升了

當一臺服務器的處理能力不足時,與其換一臺更強大的服務器,不如增加一臺服務器去分擔原有的服務器壓力。對于大型網站而言,無論多么強大的服務器,都滿足不了持續增長的業務需求,更高效的方式就是增加服務器來分擔壓力

對于網站架構而言,如果增添一臺新的服務器可以改善負載壓力,那么就可以使用同樣的方式來應對源源不斷的業務需求,從而實現系統的可伸縮性

通過負載均衡調度服務器,可以將用戶請求分發到應用服務器集群里的任何一臺服務器上,如果有更多的用戶,可以增加更多的應用服務器,使應用服務器的負載壓力不再成為網站的性能問題

數據庫讀寫分離

在使用了緩存后,大多數的操作不經過數據庫訪問就能完成,但仍有一部分讀操作(緩存訪問未***,緩存過期)和所有的寫操作需要訪問數據庫,在網站的用戶量達到一定時,數據庫的負載問題就來了

目前大多數的數據庫都支持主從熱備份,通過配置兩臺服務器的主從關系,可以將一臺數據庫服務器的數據更新同步到另一臺,網站利用這一功能,實現數據庫讀寫分離,從而進一步改善數據庫負載壓力

 

 

 

應用服務器在寫操作的時候,訪問主數據庫,主數據庫通過主從復制機制把數據同步更新到從數據庫,這樣當應用服務器進行讀操作的時候,就能訪問從數據庫獲取數據

使用反向代理和 CDN 加速網站響應

  • CDN 和 反向代理 的基本原理都是緩存
  • CDN 部署在網絡供應商的機房,用戶在進行請求時,會從距離最近的網絡供應商機房獲取數據

反向代理 則部署在中心機房,當用戶請求到達中心機房后,會首先訪問反向代理服務器,如果反向代理服務器中緩存這用戶請求的資源,就直接返回給用戶

 

 

 

使用 CDN 和 反向代理 都是為了盡快返回給用戶數據,一方面加快用戶訪問速度,另一方面也減輕了后端服務器的壓力

使用分布式文件系統和分布式數據庫系統

隨著網站業務的繼續發展,這時候就可以像分布式應用服務器一樣,對數據庫系統和文件系統進行分布式管理

分布式數據庫 是網站數據庫拆分的***手段,一般我們可以采取業務分庫,根據不同業務的數據庫部署在不同的數據庫服務器上

 

 

 

使用 NoSQL 和搜索引擎

這兩個方式都是依賴于互聯網的技術手段,應用服務器通過一個統一的數據訪問模塊來訪問各種數據,從而減輕應用程序有多個數據源的麻煩

 

 

 

業務拆分

對于大型網站,我們可以分而治之,把整個網站的業務分為不同的模塊,比如大型的交易購物完整可以分為首頁、店鋪、訂單、買家等,分別交給不同的業務團隊來負責

同時我們將一個網站根據模塊劃分拆分成多個應用,每個應用進行單獨的部署和維護,應用之間通過超鏈接建立關系(指向不同的應用地址),***通過相同的數據存儲系統來構成一個互相關聯的完整系統

 

 

 

分布式服務

隨著業務拆分,整個系統越來越大,應用的整體復雜度呈指數級增加,部署維護越來越困難,并且所有的應用服務器都要與數據庫服務連接, 在數萬臺服務器規模的情況下,這些連接的數目是服務器規模的平方,導致資源不足

這時候就要對相同的業務進行提取,獨立部署,把這些可重用的業務和連接數據庫等,提取出來作為公共業務服務,而應用系統只需要通過分布式服務訪問公共業務服務完成業務操作

 

 

 

到這里,基本上大多數的技術問題都能得到解決,還有一些實時同步等具體業務問題也都可以通過現有的技術解決

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2012-01-16 09:54:37

大型網站

2017-05-08 11:53:21

2018-02-10 11:11:01

網站技術架構負載均衡

2015-10-22 10:35:06

2013-10-15 13:24:00

負載均衡架構

2016-01-13 10:35:17

網站技術OpenStack云管理

2015-12-14 10:26:40

2014-09-26 09:53:41

系統架構架構架構演變

2011-05-04 10:52:25

架構網站

2012-09-28 14:08:20

大型網站架構大型網站算法算法

2015-01-27 09:47:49

網站技術存儲網站演進

2018-04-13 08:44:40

存儲大型網站

2010-07-21 08:51:48

淘寶架構

2012-10-09 13:53:33

大型網站算法架構

2019-07-04 13:05:18

MySQL設計數據庫

2014-06-17 14:01:34

Mysql網站架構

2020-01-02 10:21:40

技術研發架構

2016-08-08 13:59:02

MySQL架構數據庫

2019-05-09 09:15:28

Web網站架構

2010-08-10 10:10:28

系統架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线网 | 久久这里只有精品首页 | 日本精品久久久一区二区三区 | 嫩草黄色影院 | 成人在线观看欧美 | 日韩1区| 爱爱免费视频 | 一级国产精品一级国产精品片 | 天天看天天操 | 91精品欧美久久久久久久 | 一区二区福利视频 | 久久免费福利 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲激情综合 | 国产丝袜一区二区三区免费视频 | 国产精品中文字幕在线播放 | 亚洲国产小视频 | 99re视频| 成人福利网站 | 91精品国产91久久久久游泳池 | 久久亚洲一区二区三区四区 | 国产自产c区 | 毛片毛片毛片毛片毛片 | 欧美日韩在线一区二区 | 天天射视频 | 精品亚洲一区二区三区 | 91欧美| www.国产精| 国产精品国产a | 国产精品亚洲视频 | 久久久精品综合 | 国产精品小视频在线观看 | 日韩欧美一区二区三区免费观看 | 国产日韩欧美在线 | 日日日操| 日韩在线大片 | 精品国产乱码久久久 | 新超碰97 | 欧美三级三级三级爽爽爽 | 九九热精品视频在线观看 | 亚洲精品第一页 |