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

網際網路三高架構論文

網際網路三高架構論述

                                       陶鯨澤

摘要:網際網路有三高架構,三高分別是:高併發,高效能,高可用。其中最關注的軟體質量的屬性是:效能、可用性、伸縮性、擴充套件性、安全性這幾個方面。而構建此類系統,最常見的架構模式有:橫向分層、縱向分割、分散式化、叢集化、使用快取、使用非同步模式、使用冗餘、自動化。

關鍵詞:高併發,高效能,高可用

1高併發

1.1 什麼是高併發

⾼併發是互聯⽹分散式系統架構設計中必須考慮的因素之⼀,它通常是指,通過設計保證系統能夠同時並⾏處理很多請求。

⾼併發相關常⽤的⼀些指標有響應時間,吞吐量,每秒查詢率

QPS,併發⽤戶數等。

響應時間:系統對請求做出響應的時間。例如系統處理⼀個HTTP請求需要200ms,這個200ms就是系統的響應時間。

吞吐量:單位時間內處理的請求數量。

QPS:每秒響應請求數。在互聯⽹領域,這個指標和吞吐量區分的沒有這麼明顯。

併發⽤戶數:同時承載正常使⽤系統功能的⽤戶數量。

1.2怎麼提高程式的高併發

提高程式高併發的兩種方法:垂直擴充套件與⽔平擴充套件

垂直擴充套件:提升單機處理能⼒,垂直擴充套件的⽅式⼜有兩種:

1)增強單機硬體效能。

2)提升單機架構效能。

⽔平擴充套件:增加伺服器數量,一旦伺服器數量增加就能線性擴充系統性能。

2高效能

2.1什麼是效能:

效能,是一個速度的概念,單位時間內可以處理的任務數量,效能的影響因素大多與

CPU有關。

2.2 效能與CPU的關係

 

CPU越快,應用的效能一定越好嗎?

絕對的。只不過CPU和應用效能提升可能不成線性增長的關係,因為應用可能是IO密集型,應用效能還會受到IO阻塞的影響。

CPU越多,應用的效能一定越好嗎?

大部分情況是的。如果大量鎖存在,效能提升可能會大打折扣,因為並行能力會被鎖住,又變成單執行緒執行了,沒有最大的發揮多CPU的作用。

伺服器越多,效能一定越好嗎?

大部分情況是的。但是單個伺服器的效率可能會是下降的,資料一致性問題、同步問題、鎖問題,這些都會導致單個伺服器的效率下降,所以不是線性相關。

關於CPU利用率:
如果只是考慮應用對CPU利用效率的話:單核=多核=多伺服器

單程序/單執行緒的系統對於伺服器資源的利用率更高。

到多核的系統中,就會因為鎖的問題,多工同步的問題,作業系統排程的問題,造成一定的資源浪費。而分散式系統中,這些浪費也會更嚴重。

怎樣更好的更有效的利用伺服器資源呢?

避免因為IO阻塞讓CPU閒置,導致CPU的浪費;

避免多執行緒間增加鎖來保證同步,導致並行系統序列化;

避免建立、銷燬、維護太多程序、執行緒,導致作業系統浪費資源在排程上;

3高可用

3.1 什麼是高可用

 

”高可用就是可以正常提供服務。通常會使用下面三個指標來衡量

 MTBF:系統可用時長。

 MTTR:系統從故障後到恢復正常所耗費的時間。

 SLA:服務等級協議,用於評估服務可用性等級。計算公式是 MTBF/(MTBF+MTTR)

假設系統一直能夠提供服務,我們說系統的可用性是100%

3.2 怎麼解決高可用

所以在常用的架構設計中,主要通過2個方面來解決高可用:

垂直分層,將各個服務不用層上的應用進行切割,從而降低每層服務的複雜度,達到降低整體出錯的概率。

水平冗餘, 就是在每一層上進行多個服務的冗餘,再加上故障的自動轉移,就可以提高服務的可用性。

3.3常見的網際網路分層架構

 

常見網際網路分散式架構如上,分為:

1)客戶端層:典型呼叫方是瀏覽器browser或者手機應用APP

2)反向代理層:系統入口,反向代理

3)站點應用層:實現核心應用邏輯,返回html或者json

4)服務層:如果實現了服務化,就有這一層

5)資料-快取層:快取加速訪問儲存

6)資料-資料庫層:資料庫固化資料儲存

整個系統的高可用,又是通過每一層的冗餘+自動故障轉移來綜合實現的

 

參考文獻:

1:b站up主文章《聊聊網際網路"三高"架構》;

2:百度文庫(網際網路架構如何實現高併發);