1. 程式人生 > 其它 >高併發與高效能以及高可用對當代網際網路的新要求

高併發與高效能以及高可用對當代網際網路的新要求

高併發與高效能以及高可用對當代網際網路的新要求

張傑

摘要:隨著網際網路行業的發展。大型網站的標準不斷提高,新時代的浪潮下,大量的使用者,海量的資料給大型網站的架構帶來更高的挑戰,傳統網站架構無法快速應對大資料的高併發情況,因此調整網站架構以適應現在的海量資料情況尤為重要,由單臺伺服器到分散式叢集的發展可以展示出網站架構隨時代變化的新要求,因此採取適合的架構來適用網站本身的功能是不可或缺的一點。網站的高速迭代以及使用者的不斷增加使高效能與高可用成為新時代網站佔據市場的必備條件。

關鍵詞:高併發;分散式;高效能;高可用

中圖分類號:   文獻標誌碼:A


0  引言

網站架構的不斷髮展是時代浪潮前進裹挾網際網路的結果。隨著智慧手機以及

PC在新世紀的不斷普及,越來越多的使用者進入網際網路的浪潮中,對網站的技術架構提出了新的要求。因此網際網路的架構也在不斷的演進,升級和迭代。從單一應用,到垂直拆分,到分散式服務,到SOA,以及現在火熱的微服務架構等,還有在Google帶領下來勢洶湧的Service Mesh。

1  網際網路架構的演變過程

   網際網路架構隨著使用者數量的激增以及資料的指數增長造成網際網路架構隨著時代不斷的演變以適應複雜的使用者需求和不斷改變的使用者場景。由初始網站的單臺伺服器的使用到叢集以及分散式架構的發展是網際網路架構演變的重要過程。

  1.1單體系統架構

主要這是最傳統最原始的站點系統架構,網際網路開啟之初常用的架構。單體系統一般功能與流量都很小,只需一個應用,將所有功能都集中在一個系統中,並部署在一臺伺服器上,以減少部署節點和成本。例如,將使用者模組、問答模組、考試模組等都做在一個系統中,以一個應用的形式部署在一臺伺服器上。此時,用於簡化增刪改查工作量的資料訪問框架

(ORM)是關鍵。

1  第一階段

 1.2 快取與讀寫分離

表隨著訪問量的激增,資料量的快速膨脹,對應用伺服器和資料庫伺服器的IO效能要求也越來越高。單體服務總是資源有限,而單個數據庫的資料流量越來越大,資料的訪問效能也明顯下降。 為了進一步降低資料庫的訪問壓力,對資料庫進行讀寫分離、分庫分表等優化。 讀寫分離即將資料庫分為主從資料庫,從庫實時同步主庫的更新內容。寫請求訪問主資料庫,讀請求訪問從資料庫。分庫分表即是把原本儲存於一個庫的資料分塊儲存到多個庫上,把原本儲存於一個表的資料分塊儲存到多個表上。不論是讀寫分離還是分庫分表都有效分解了資料庫訪問壓力。

基於二八定律,即大部分的業務資料只集中於資料中的一小部分,而有些資料是需要經常讀取,但是更新很少,或是訪問量非常大的資料塊,這些情況下我們就需要引入快取層

, 如果訪問命中快取,既能減小資料庫的訪問壓力,又可以提高資料訪問效能。快取的發展也是由簡單到複雜,由單體到快取叢集,由單點到高可用。本地快取的特點就是可以提供快速訪問,但無法實現共享,無法保證高可用。而快取叢集可以提供高可用、可共享、大容量的儲存,快取層降低資料庫的讀寫IO,有效提升系統響應能力。

圖2  第二階段

1.3 CDN反向代理以及網站加速

行為隨著業務的進一步爬坡,需要能夠進一步降低伺服器的壓力,這時候可以採用動靜分離技術。動靜分離技術是將服務的靜態資源與後臺應用進行分開部署,提高使用者訪問靜態資源的速度,降低對後臺的訪問壓力。

靜態資源一般放在CDN上,部署在網路提供商的機房。使用者在訪問靜態資源時,可以很好的利用CDN的優點,從距離自己最近的網路提供商機房獲取資料。

動靜分離後,帶來的優點是顯而易見的:後端應用更為服務化,只需要提供api介面即可,前端可以通過更加專業的技術提高訪問效率。但同時靜態檔案的快取更新以及前後端的更新成本都是動靜分離所帶來的問題。

圖3  第三階段

1.4 叢集化高可用架構

隨著使用者規模和業務量的不斷上漲,單個應用伺服器將出現效能瓶頸,對於PB級的資料和高併發使用者大流量訪問,單一或者主備的資料庫、檔案系統都已經不能滿足需求,需要叢集化來分擔負載。當資料規模達到一定規模,傳統關係型資料庫效能下滑非常嚴重,通過分庫分表也難以應對,為了支撐海量資料和流量,出現了NoSql資料庫,它關注對資料高併發地讀寫和對海量資料的儲存。

同時應用伺服器從單體變為叢集,客戶端也不再是直接接入後端應用,而是轉而通過負載均衡裝置代理後端多個伺服器叢集,一方面將訪問壓力分攤到了多個後端應用上,單個應用不再是效能瓶頸,另一方面可以實現服務路由,以及異常熔斷等特性。

為了進一步降低服務端壓力,降低客戶端訪問延遲,客戶端與負載均衡裝置之間加入CDN對靜態資源進行快取加速,利用GSLB排程體系,將使用者請求精準排程至最優接入節點。以達到最優的訪問效能。

圖4  第四階段

 

2  高併發技術分析

   高併發技術的核心是分流;分別針對請求的各個環節,根據具體場景和業務特點採用不同的分流方案,逐層逐級的分擔系統壓力,從而達到高併發能力。

常見的高併發技術有:動靜分離、快取、非同步併發、水平擴充套件等。分流簡單來說就是:一臺伺服器承擔不了的流量,就讓多臺伺服器共同分擔;DB承擔不了流量就讓快取來幫忙分擔;等等。

客戶端優化技術主要指的是客戶端通過快取資料,減少訪問服務端的次數,以實現降低服務端壓力,達到支援更多併發量的需求。

常見的處理方式是:快取不經常變動的內容,每隔一定時間更新一次,或者除非修改了否則較長時間不更新;如:更新微信公眾賬號的頭像時,手機端不會立即看到這個更新。另外,根據業務場景可以限制不必要的請求;如:點選一個按鈕,傳送一次請求到服務端時,禁用按鈕,避免因使用者多次點選,而傳送不必要的請求。

網路優化的核心目標是:將資源快取到距離使用者最近的網路節點上,這樣除了可以省下大量網路頻寬外,還可以達到最快的請求速度;一般針對靜態資源。

通過靜態化技術(將不經常變動的內容生成靜態檔案)或動靜分離技術(例如H5+ajax),將靜態的內容儲存在CDN上,當用戶檢視一個頁面時,只讓少數的動態請求落到伺服器端,其他內容從CDN上直接獲取,這樣就可以極大的減少伺服器端的流量。

 

3  高效能技術分析

   網站效能就是使用者在瀏覽器上直觀感受到的網站響應速度。這裡的效能除了與請求的服務,服務端響應速度之外;還與客戶端機器、瀏覽器和網路頻寬等有關。效能優化:這裡的優化主要是優化使用者感官。使用前端架構優化手段,使瀏覽器儘快地顯示客戶感興趣的內容、儘可能近地獲取頁面內容,從而改善客戶視角下的網站效能。從開發人員角度,網站效能就是應用程式本身和其相關子系統的效能,包括響應延遲、系統吞吐量、併發處理能力、系統穩定性等技術指標。使用快取加速資料讀寫;使用叢集提高吞吐能力;使用非同步訊息加快請求響應以及削峰,使用程式碼優化改善程式效能。

4  高可用技術分析

   高可用是網站現代架構的重要技術之一。“高可用性”(High Availability) 通常用來描述一個系統,經過特殊設計,減少停止服務的時間,從而使其服務保持高度的可使用性。計算機系統的可靠性用平均無故障時間(MTTF)來度量,即計算機系統平均能夠正常執行多長時間,才會發生一次故障。系統的可靠效能越高,平均無故障時間越長。可維護性用平均維修時間(MTTR)來度量,即系統發生故障後維修和重新恢復正常執行平均花費時間。系統的可維護性越好,平均維修時間越短。計算機系統的可用性定義為:MTTF/(MTTF+MTTR)*100%。而提高高可用性離不開四個方面,系統架構,容災性,故障轉移,監控報警。因此實現高可用必須從這四個方面發展。

5  結束語

網站架構的不斷髮展,對於當代網際網路產生更多的變革。

參考文獻:

[1]崔英志, 張緒玉, 高博. Web2.0時代的網站架構[J]. 重慶理工大學學報(自然科學), 2008(5):108-111.

[2]張鵬. 基於SSH框架的高併發與高可用網站架構的設計與開發[J]. 電腦知識與技術:學術版, 2020.

[3]餘洪春. 構建高可用LINUX伺服器(第3版)[M]. 機械工業出版社, 2014.

[4]楊光輝. 高效能網站架構:網際網路系統架構的演進[J]. 程式設計師, 2013(9):7.