1. 程式人生 > >究竟啥才是網際網路架構“高併發”

究竟啥才是網際網路架構“高併發”

一、什麼是高併發

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

高併發相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPSQuery Per Second),併發使用者數等。

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

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

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

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

二、如何提升系統的併發能力

網際網路分散式架構設計,提高系統併發能力的方式,方法論上主要有兩種:垂直擴充套件(Scale Up)與水平擴充套件(Scale Out

垂直擴充套件:提升單機處理能力。垂直擴充套件的方式又有兩種:

1)增強單機硬體效能,例如:增加CPU核數如32核,升級更好的網絡卡如萬兆,升級更好的硬碟如SSD,擴充硬碟容量如2T,擴充系統記憶體如128G

2)提升單機架構效能,例如:使用Cache來減少IO次數,使用非同步來增加單服務吞吐量,使用無鎖資料結構來減少響應時間;

在網際網路業務發展非常迅猛的早期,如果預算不是問題,強烈建議使用“增強單機硬體效能”的方式提升系統併發能力,因為這個階段,公司的戰略往往是發展業務搶時間,而“增強單機硬體效能”往往是最快的方法。

不管是提升單機硬體效能,還是提升單機架構效能,都有一個致命的不足:單機效能總是有極限的。所以網際網路分散式架構設計高併發終極解決方案還是水平擴充套件

水平擴充套件:只要增加伺服器數量,就能線性擴充系統性能。水平擴充套件對系統架構設計是有要求的,如何在架構各層進行可水平擴充套件的設計,以及網際網路公司架構各層常見的水平擴充套件實踐,是本文重點討論的內容。

三、常見的網際網路分層架構


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

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

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

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

json

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

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

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

整個系統各層次的水平擴充套件,又分別是如何實施的呢?

四、分層水平擴充套件架構實踐

反向代理層的水平擴充套件


反向代理層的水平擴充套件,是通過“DNS輪詢”實現的:dns-server對於一個域名配置了多個解析ip,每次DNS解析請求來訪問dns-server,會輪詢返回這些ip

nginx成為瓶頸的時候,只要增加伺服器數量,新增nginx服務的部署,增加一個外網ip,就能擴充套件反向代理層的效能,做到理論上的無限高併發。

站點層的水平擴充套件


站點層的水平擴充套件,是通過“nginx”實現的。通過修改nginx.conf,可以設定多個web後端。

web後端成為瓶頸的時候,只要增加伺服器數量,新增web服務的部署,在nginx配置中配置上新的web後端,就能擴充套件站點層的效能,做到理論上的無限高併發。

服務層的水平擴充套件


服務層的水平擴充套件,是通過“服務連線池”實現的。

站點層通過RPC-client呼叫下游的服務層RPC-server時,RPC-client中的連線池會建立與下游服務多個連線,當服務成為瓶頸的時候,只要增加伺服器數量,新增服務部署,在RPC-client處建立新的下游服務連線,就能擴充套件服務層效能,做到理論上的無限高併發。如果需要優雅的進行服務層自動擴容,這裡可能需要配置中心裡服務自動發現功能的支援。

資料層的水平擴充套件

在資料量很大的情況下,資料層(快取,資料庫)涉及資料的水平擴充套件,將原本儲存在一臺伺服器上的資料(快取,資料庫)水平拆分到不同伺服器上去,以達到擴充系統性能的目的。

網際網路資料層常見的水平拆分方式有這麼幾種,以資料庫為例:

按照範圍水平拆分


每一個數據服務,儲存一定範圍的資料,上圖為例:

user0庫,儲存uid範圍1-1kw

user1庫,儲存uid範圍1kw-2kw

這個方案的好處是:

1)規則簡單,service只需判斷一下uid範圍就能路由到對應的儲存服務;

2)資料均衡性較好;

3)比較容易擴充套件,可以隨時加一個uid[2kw,3kw]的資料服務;

不足是:

(1)請求的負載不一定均衡,一般來說,新註冊的使用者會比老使用者更活躍,大range的服務請求壓力會更大;

按照雜湊水平拆分


每一個數據庫,儲存某個keyhash後的部分資料,上圖為例:

user0庫,儲存偶數uid資料

user1庫,儲存奇數uid資料

這個方案的好處是:

1)規則簡單,service只需對uid進行hash能路由到對應的儲存服務;

2)資料均衡性較好;

3)請求均勻性較好;

不足是:

1)不容易擴充套件,擴充套件一個數據服務,hash方法改變時候,可能需要進行資料遷移;

這裡需要注意的是,通過水平拆分來擴充系統性能,與主從同步讀寫分離來擴充資料庫效能的方式有本質的不同。

通過水平拆分擴充套件資料庫效能:

1)每個伺服器上儲存的資料量是總量的1/n,所以單機的效能也會有提升;

2n個伺服器上的資料沒有交集,那個伺服器上資料的並集是資料的全集;

3)資料水平拆分到了n個伺服器上,理論上讀效能擴充了n倍,寫效能也擴充了n倍(其實遠不止n倍,因為單機的資料量變為了原來的1/n);

通過主從同步讀寫分離擴充套件資料庫效能:

1)每個伺服器上儲存的資料量是和總量相同;

2n個伺服器上的資料都一樣,都是全集;

3)理論上讀效能擴充了n倍,寫仍然是單點,寫效能不變;

快取層的水平拆分和資料庫層的水平拆分類似,也是以範圍拆分和雜湊拆分的方式居多,就不再展開。

五、總結

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

提高系統併發能力的方式,方法論上主要有兩種:垂直擴充套件(Scale Up)與水平擴充套件(Scale Out)。前者垂直擴充套件可以通過提升單機硬體效能,或者提升單機架構效能,來提高併發性,但單機效能總是有極限的,網際網路分散式架構設計高併發終極解決方案還是後者:水平擴充套件

網際網路分層架構中,各層次水平擴充套件的實踐又有所不同:

1)反向代理層可以通過“DNS輪詢”的方式來進行水平擴充套件;

2)站點層可以通過nginx來進行水平擴充套件;

3)服務層可以通過服務連線池來進行水平擴充套件;

4)資料庫可以按照資料範圍,或者資料雜湊的方式來進行水平擴充套件;

各層實施水平擴充套件後,能夠通過增加伺服器數量的方式來提升系統的效能,做到理論上的效能無限。

末了,希望文章的思路是清晰的,希望大家對高併發的概念和實踐有個系統的認識,結合上一篇《究竟啥才是網際網路架構“高可用”》的分享網際網路分散式架構是不是逐步的不再神祕啦?

==【完】==

相關推薦

【 58沈劍 架構師之路】究竟網際網路架構併發

一、什麼是高併發 高併發(High Concurrency)是網際網路分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。   高併發相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Quer

【 58沈劍 架構師之路】究竟網際網路架構併發

一、什麼是高併發 高併發(High Concurrency)是網際網路分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。   高併發相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率

究竟網際網路架構併發

一、什麼是高併發 高併發(High Concurrency)是網際網路分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。 高併發相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),

Java網際網路架構-併發資料庫分片技術詳解

序言 分片技術的由來 關係型資料庫本身比較容易成為系統性能瓶頸,單機儲存容量、連線數、處理能力等都很有限,資料庫本身的“有狀態性”導致了它並不像Web和應用伺服器那麼容易擴充套件。在網際網路行業海量資料和高併發訪問的考驗下,聰明的技術人員提出了分庫分表技術(有些地方也稱為

網際網路架構併發”到底怎麼玩?

什麼是高併發? 高併發(High Concurrency)是網際網路分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設

究竟網際網路架構中的併發

作者:58沈劍出處:微信公眾號--架構師之路一、什麼是高併發高併發是網際網路分散式系統架構設計中

網際網路金融併發方案

小微金融、場景金融等新興銀行金融業務亟需一種新型的彈性架構來應對高併發、大流量的業務衝擊,同時,要滿足應用快速版本迭代升級、敏捷運維管理等需求。本文分享了BoCloud博雲如何利用網際網路應用架構與Docker容器技術幫助銀行業應對“網際網路+”挑戰,建設基於PaaS平臺

2018最新技術JAVA架構併發分散式微服務架構網際網路電商dubbo

借用 Java 併發程式設計實踐中的話:編寫正確的程式並不容易,而編寫正常的併發程式就更難了。相比於順序執行的情況,多執行緒的執行緒安全問題是微妙而且出乎意料的,因為在沒有進行適當同步的情況下多執行緒中各個操作的順序是不可預期的。 併發程式設計相比 Java 中其他知識點學習起來門檻相對較高,學習起來比較費

阿里、百度、京東一線網際網路架構師都在用的技術體系,併發,微服務,軟體系統架構

可以說,Java是現階段中國網際網路公司中,覆蓋度最廣的研發語言,掌握了Java技術體系,不管在成熟的大公司,快速發展的公司,還是創業階段的公司,都能有立足之地。 有不少朋友問,除了掌握Java語法,還要系統學習哪些Java相關的技術,今天分享一個,網際網路Java技術學習路線圖。 一:常見模式

千萬級規模【高效能、併發網際網路架構經驗分羹

架構以及我理解中架構的本質 在開始談我對架構本質的理解之前,先談談對今天技術沙龍主題的個人見解,千萬級規模的網站感覺數量級是非常大的,對這個數量級我們戰略上 要重 視 它 , 戰術上又 要 藐 視 它。先舉個例子感受一下千萬級到底是什麼數量級?現在很流行的優步(Uber),從媒體公佈的資訊看,它每天接單

千萬級規模【高效能、併發網際網路架構經驗分享~

作者:Java關博 連結:http://blog.51cto.com/14049376/2329037?utm_source=tuicool&utm_medium=referral 架構以及我理解中架構的本質 在開始談我對架構本質的理解之前,先談談對今天技術沙龍主題的個人見解,千萬級規模

JAVA架構師課程(大資料,分散式事物解決方案,大型網際網路專案,大型金融專案,併發叢集解決方案)實戰開發[技術 activeMQ,zookeeper,http,支付,團購,dubbox,stom]

在IT圈子裡,真正達到軟體架構師能力和水平的,一般的年薪在30-50w,甚至50w+,資深的或者高階的架構師,年薪在50-80萬,水平更高的,薪水也就更多了,可以稱得上是金領了。   因此,一直以來,有很多朋友都在朝軟體架構師這個方向努力發展。但由於沒有人領路,一些朋友

【Java開發者專場】阿里特邀專家徐雷:Java為王,網際網路併發架構設計選型之路

本篇文章來自於2018年12月22日舉辦的《阿里雲棲開發者沙龍—Java技術專場》,徐雷專家是該專場第三位演講的嘉賓,本篇文章是根據徐雷專家在《阿里雲棲開發者沙龍—Java技術專場》的演講視訊以及PPT整理而成。 摘要:Java從誕生以來幾乎一直是排名第一的語言,長期霸榜。在架構師成長道路中,學習Ja

阿里架構師,講述網際網路分散式系統架構設計中的“併發

一、什麼是高併發 高併發(High Concurrency)是網際網路分散式系統架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統能夠同時並行處理很多請求。 高併發相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒

從宜人貸系統架構網際網路併發對金融系統架構的挑戰

原文:http://www.p2pquan.com/article-740-1.html 一、簡介 隨著網際網路金融的持續火熱,越來越多的銀行紛紛釋出了各自的網際網路金融產品。但是網際網路產品“高併發、大資料量”的特點卻對於銀行傳統的核心繫統架構帶來了新的挑戰。 1、網際

網際網路併發架構的8種設計模式演化

1、單庫單應用模式這種是最簡單的模式,即一個數據一個應用伺服器,一般在產品釋出初期使用會比較方便,單日30萬到50萬PV以下一般沒有問題。2、內容分發模式在主機中使用了靜態檔案快取之後,還可以使用CDN的方式把靜態檔案分發到離使用者最近的節點上以達到快速響應的目的,一般在百萬

網際網路併發系統下的安全認證架構設計

使用的工具是Wireshark,這是一個網路封包分析軟體,用於擷取網路封包,並儘可能顯示出最為詳

大型網際網路公司必備的架構技術棧——分散式架構可擴充套件、高效能、併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰

效能優化 JVM調優 Java程式效能優化 Tomcat Mysql Spring IOC Spring AOP Spring MVC Spring 5新特性 Mybatis 分散式架構 架構核心服務層技術 架構關鍵技術設施 分散式訊息通訊 非同

不懂這些併發分散式架構、分散式系統的資料一致性解決方案,你如何能找到高新網際網路工作呢?強勢解析eBay BASE模式、去哪兒及蘑菇街分散式架構

網際網路行業是大勢所趨,從招聘工資水平即可看出,那麼如何提升自我技能,滿足網際網路行業技能要求?需要以目標為導向,進行技能提升,本文主要針對高併發分散式系統設計、架構(資料一致性)做了分析,祝各位早日走上屬於自己的"成金之路"。 目錄:問題分析概念解讀Most Simple原理解讀eBey、去哪兒、蘑菇街分

網際網路三高架構併發和高效能的理解

網際網路三高架構:高併發、高效能、高可用,簡稱三高(3H) 網際網路應用系統開發肯定經常會看到高併發和高效能這兩個詞,可謂是耳熟能詳,而具體的含義和關係真的如你所想的,真正的理解了嗎? 先來看一個例子: 一個蓄水池,是1m*1m*1m=1立方米大小,有一個出水口,出水口