1. 程式人生 > 其它 >網際網路三高架構概述

網際網路三高架構概述

網際網路三高架構概述

王昊寧

摘要:現在的網際網路企業的大部分面試中,始終圍繞著網際網路的三高架構來展開。網際網路的三高是指高併發,高效能,高可用

關鍵詞:高併發;高效能;高可用;三高架構

引言

網際網路三高架構包括高併發、高效能、高可用,簡稱三高即3H。這三者都是網際網路分散式系統架構設計中必須考慮的因素之一。

一.高併發

高併發(High Concurrency):是網際網路分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。

對於高併發來說,它的指標有:

響應時間:系統對進來的請求反應的時間,比如你開啟一個頁面需要1秒,那麼這1秒就是響應時間。

吞吐量:吞吐量是指每秒能處理多少請求數量,好比你吃飯,每秒能吃下多少顆米飯。秒查詢率:秒查詢率是指每秒響應請求數,和吞吐量差不多。

併發使用者數:同時承載正常使用系統功能的使用者數量。例如一個即時通訊系統,同時線上量一定程度上代表了系統的併發使用者數。

二.高效能

高效能(High performance):高效能是指程式處理速度非常快,所佔記憶體少,cpu佔用率低。高效能的指標經常和高併發的指標緊密相關,想要提高效能,那麼就要提高系統發併發能力,兩者互相捆綁在一起。應用效能優化的時候,對於計算密集型和IO密集型還是有很大差別,需要分開來考慮。還有可以增加伺服器的數量,記憶體,IO等引數提升系統的併發能力和效能,但不要浪費資源,要考慮硬體的使用率最高才能發揮到極致。

優化網站效能的方法很多,從瀏覽器到資料庫都可以對網站進行優化,比如:

在瀏覽器端,可以通過瀏覽器快取、使用頁面壓縮、合理佈局頁面、減少Cookie傳輸等手段改善效能。還可以使用CDN,將網站靜態內容分發至離使用者最近的網路服務商機房,使使用者通過最短訪問路徑獲取資料。可以在網站機房部署反向代理伺服器,快取熱點檔案,加快請求響應速度,減輕應用伺服器負載壓力。

在應用伺服器端,可以使用伺服器本地快取和分散式快取,通過快取在記憶體中的熱點資料處理使用者請求,加快請求處理過程,減輕資料庫負載壓力。也可以通過非同步操作將使用者請求傳送至訊息佇列等待後續任務處理,而當前請求直接返回響應給使用者。

在網站有很多使用者高併發請求的情況下,可以將多臺應用伺服器組成一個叢集共同對外服務,提高整體處理能力,改善效能。

在程式碼層面,也可以通過使用多執行緒、改善記憶體管理等手段優化效能。

在資料庫伺服器端,索引、快取、SQL優化等效能優化手段都已經比較成熟。而方興未艾的 NoSQL資料庫通過優化資料模型、儲存結構、伸縮特性等手段在效能方面的優勢也日趨明顯。 

下面將介紹一些效能測試的方法:

效能測試是一個總稱,具體可細分為效能測試、負載測試、壓力測試、穩定性測試。

1效能測試

以系統設計初期規劃的效能指標為預期目標,對系統不斷施加壓力,驗證系統在資源可接受範圍內,是否能達到效能預期。

2負載測試

對系統不斷地增加併發請求以增加系統壓力,直到系統的某項或多項效能指標達到安全臨界值,如某種資源已經呈飽和狀態,這時繼續對系統施加壓力,系統的處理能力不但不能提高,反而會下降。

3壓力測試

超過安全負載的情況下,對系統繼續施加壓力,直到系統崩潰或不能再處理任何請求,以此獲得系統最大壓力承受能力。

4穩定性測試

被測試系統在特定硬體、軟體、網路環境條件下,給系統載入一定業務壓力,使系統執行一段較長時間,以此檢測系統是否穩定。在不同生產環境、不同時間點的請求壓力是不均勻的,呈波浪特性,因此為了更好地模擬生產環境,穩定性測試也應不均勻地對系統施加壓力。

三.高可用

高可用(High Availability)是分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。高可用注意如果使用單機,一旦掛機將導致服務不可用,可以使用叢集來代替單機,一臺伺服器掛了,還有其他後備伺服器能夠頂上。或者使用分散式部署項。比如現在redis的高可用的叢集方案有: Redis單副本,Redis多副本(主從),Redis Sentinel(哨兵),Redis Cluster,Redis自研。

一個典型的網站設計通常為如下圖的基本分層架構模型:

網站高可用的主要手段是冗餘,應用部署在多臺伺服器上同時提供訪問,資料儲存在多臺伺服器上互相備份,任何一臺伺服器宕機都不會影響應用的整體可用,也不會導致資料丟失。 

對於應用伺服器而言,多臺應用伺服器通過負載均衡裝置組成一個叢集共同對外提供服務,任何一臺伺服器宕機,只需把請求切換到其他伺服器就可實現應用的高可用,但是一個前提條件是應用伺服器上不能儲存請求的會話資訊。否則伺服器宕機,會話丟失,即使將使用者請求轉發到其他伺服器上也無法完成業務處理。

  對於儲存伺服器,由於其上儲存著資料,需要對資料進行實時備份,當伺服器宕機時需要將資料訪問轉移到可用的伺服器上,並進行資料恢復以保證繼續有伺服器宕機的時候資料依然可用。

  除了執行環境,網站的高可用還需要軟體開發過程的質量保證。通過預釋出驗證、自動化測試、自動化釋出、灰度釋出等手段,減少將故障引入線上環境的可能,避免故障範圍擴大。

  衡量一個系統架構設計是否滿足高可用的目標,就是假設系統中任何一臺或者多臺伺服器宕機時,以及出現各種不可預期的問題時,系統整體是否依然可用。

四.分散式架構設計

架構的目的與架構師的目的一樣都是降本增效,架構是對場景抽象後得出的支撐骨架,場景包括:業務複雜度、資料規模大小、人員技術研發水平、時間成本、運維能力等。分散式架構,即Distributed Architecture,是分散式計算技術的應用和工具,成熟的技術包括J2EE, CORBA和.NET(DCOM),這些技術牽扯的內容非常廣,相關的技術,相關的書籍也非常多,本文不介紹這些技術的內容,也沒有涉及這些技術的細節,只是從各種分散式系統平臺產生的背景和在軟體開發中應用的情況來探討它們的主要異同。

 

https://www.cnblogs.com/hanmy/p/16291311.html