1. 程式人生 > >網站的高併發,大流量訪問怎麼解決

網站的高併發,大流量訪問怎麼解決

1-HTML頁面靜態化 訪問頻率較高但內容變動較小,使用網站HTML靜態化方案來優化訪問速度。將社群內的帖子,文章進行實時的靜態化,有更新的時候再重新靜態化也是大量使用的策略。 優勢: 一:減輕伺服器負擔。 二:加快頁面開啟速度,靜態頁面無需訪問資料庫,開啟速度較動態頁面有明顯提高。 三:很多搜尋引擎都會優先收錄靜態頁面,不僅被收錄的快,還收錄的全,容易被搜尋引擎 找到。 四:HTML靜態頁面不會受程式相關漏洞的影響,減少攻擊,提高安全性。

2-圖片伺服器和應用伺服器相分離。 現在很多網站上都會用到大量的圖片,而圖片是網頁傳輸中,佔主要的資料量,也是影響網站效能的主要因素。因此很多網站都會將圖片儲存從網站中分離出來,另外架構一個或多個伺服器來儲存圖片,將圖片放到一個虛擬目錄中,而網頁上的圖片都用一個url地址來指向這些伺服器上的圖片的地址,這樣的話,網站的效能就提高了。 優勢– 一:分擔Web伺服器的I/O負載,將耗費資源的圖片伺服器分離出來,提高伺服器的效能和 穩定性。 二:能夠專門對圖片伺服器進行優化-為圖片服務設定有針對性的快取方案,減少頻寬成本,提高訪問速度。 三:提高網站的可擴充套件性-通過增加圖片伺服器,提高圖片吞吐能力。

3-資料庫 如果有個特別大的訪問量到資料庫上,查詢速度會變得很慢,所以我們需要進行優化,從三個方面考慮: 一:SQL查詢語句優化 (1)使用索引。 (2)藉助explain(查詢優化神器)選擇更好的索引和優化查詢語句 (3)仍和地方都不要使用SELECT * FROM語句。 (4)不要在索引列做運算或者使用函式 (5)查詢儘可能使用limit來減少返回的行數。 (6)使用查詢快取,並將儘量多的記憶體分配給MYSQL做快取。 二:主從複製,讀寫分離,負載均衡 (1)目前大多數的主流關係型資料庫都提供了主從複製的功能,通過配置多型資料庫的主從關係,可以將一臺資料庫伺服器的資料更新同步到另一臺伺服器上。網站可以利用資料庫這一功能,實現資料庫的讀寫分離,從而改善資料庫的負載壓力。一個系統的讀操作遠遠多於寫操作,因此寫操作發向master,讀操作發向slaves進行操作(簡單的輪詢演算法來決定使用哪個slave) (2)利用資料庫的讀寫分離,Web伺服器在寫資料的時候,訪問主資料庫(master),主資料庫通過主從複製將資料從更新同步到資料庫slave。這樣當Web伺服器讀資料時,就可以通過從資料庫獲得資料。這一方案使得在大量讀操作的Web應用可以輕鬆地讀取資料,而主資料庫也只會承受少量的寫入操作,還可以實現資料熱備份,可謂是一舉兩得。 三:資料庫分表、分割槽。分庫 1、分表 -垂直拆分 在主鍵和一些列放在一個表中,然後把主鍵和另外的列放在另一個表中。如果一個表中 某些列常用,而另外一些不常用,則可以採用垂直拆分。 -水平拆分 根據一列或者多列資料的值,把資料行放到兩個獨立的表中。

2:分割槽 分割槽就是把一張表的資料分成多個區塊,這些區塊可以在一個磁碟上,也可以在不同磁碟上,分割槽後,表面上還是一張表,但是資料雜湊字多個位置,這樣一來,多塊硬碟同時處理不同的請求,從而提高磁碟I/O讀寫效能。實現簡單,包括水平分割槽和垂直分割槽。

3:分庫 分庫是根據業務不同,把相關的表切分到不同的資料庫中,比如web、bbs、blog等庫。 分庫解決的是資料庫端 併發量的問題。分庫和分表並不一定兩個都要 上,比如資料量很大,但是訪問的使用者很少,我們就可以只使用分表不 使用分庫。如果資料量只有1萬,而訪問使用者有一千,那就只使用分庫。

4-快取 儘量使用快取。包括使用者快取、資訊快取等。多花點記憶體來做快取,可以大量減少與資料庫的互動,提高效能。 假如我們能減少資料庫頻繁的訪問,那對系統肯定大大有利的。比如一個電子商務系統的商品搜尋,如果某個關鍵字的商品經常被搜,那就可以考慮這部分商品列表放到快取中,這樣不用每次訪問資料庫,效能大大增加。

5-映象 映象是冗餘的一種型別,一個磁碟上的資料在另一個磁碟上存在一個完全相同的副本即為映象。

6-負載均衡 在網站高併發訪問的場景下,使用負載均衡技術(負載均衡伺服器)為一個應用構建一個由多臺伺服器組成的伺服器叢集,將併發訪問請求分發到多臺伺服器上處理。避免單一伺服器因負載壓力過大而響應緩慢,使使用者請求具有更好的響應延遲特性。

7-併發控制 加鎖,樂觀鎖和悲觀鎖。

8-訊息佇列 通過mq一個一個排隊方式,跟12306一樣。