自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

阿里面試官:如果要抗住雙11高并發(fā)壓力,你的Java系統(tǒng)該怎么設(shè)計

開發(fā) 前端
今天就得給大家分析一下,假設(shè)你公司要搞大促,你怎么去通過全鏈路壓測評估一下你的核心系統(tǒng)鏈路能抗多大流量?

今天給大家分享一個話題,那就是假設(shè)你公司要搞一場雙 11 大促,現(xiàn)在告訴你說,咱們公司就是打算搞了,那你此時會一臉懵逼的說,雙 11 大促?會有多大并發(fā)???我們系統(tǒng)能抗住嗎?

你要這樣的話,那老板是一定不高興的了。所以今天就得給大家分析一下,假設(shè)你公司要搞大促,你怎么去通過全鏈路壓測評估一下你的核心系統(tǒng)鏈路能抗多大流量?

公司核心系統(tǒng)業(yè)務(wù)調(diào)用鏈路

首先,如果要為雙 11 大促做準(zhǔn)備,咱們必須要對線上系統(tǒng)直接發(fā)起全鏈路壓測。

比如說在凌晨業(yè)務(wù)低峰期的時候,我們自己用壓測系統(tǒng)對咱們的線上核心鏈路發(fā)起全鏈路壓測,看看到底我們的整個系統(tǒng)可以抗多少流量,然后再分析一下,搞大促的時候,大概會有多少流量,接著就可以針對大促活動的流量預(yù)估,去擴容一下機器。

那么如果要搞全鏈路壓測的話,這個全鏈路壓測背后的原理大家知道嗎?我們得先給大家講一下這個全鏈路壓測背后的原理。

先說一個非常典型的鏈路,假設(shè)我們整個平臺的入口是業(yè)務(wù)系統(tǒng) A,然后他的核心鏈路里面,他會調(diào)依次調(diào)用業(yè)務(wù)系統(tǒng) B、業(yè)務(wù)系統(tǒng) C、業(yè)務(wù)系統(tǒng) D,同時還會讀寫自己的數(shù)據(jù)庫。

然后業(yè)務(wù)系統(tǒng) B 又會調(diào)用業(yè)務(wù)系統(tǒng) E,業(yè)務(wù)系統(tǒng) E 又會調(diào)用業(yè)務(wù)系統(tǒng) F,業(yè)務(wù)系統(tǒng) D 又會調(diào)用業(yè)務(wù)系統(tǒng) G,每個業(yè)務(wù)系統(tǒng)都會讀寫自己的數(shù)據(jù)庫。

如下圖所示:

看看上面這個鏈路是不是感覺非常復(fù)雜?沒錯的,對于很多公司的核心系統(tǒng)鏈路來說,就是可能會有很多個系統(tǒng)調(diào)用的鏈路。

那么這個時候來說的話,我們假設(shè)所有業(yè)務(wù)系統(tǒng)都是單機部署的,現(xiàn)在來看看,整個這個鏈路集成在一起,大概一秒鐘可以跑完多少次這個鏈路?

QPS 和 TPS 的概念

這里給大家解釋一下 QPS 和 TPS 的概念,QPS 是 Query Per Second,往往是針對單個系統(tǒng)自己的接口的,意思就是說自己這個接口每秒被請求多少次,TPS 是 Transaction Per Second,意思就是說每秒鐘可以完成的事務(wù)數(shù)量。

所以這個 QPS 就不太符合我們這里對全鏈路壓測的定位了,因為全鏈路跑下來,那不是說每秒多少請求可以定義的。

TPS 是比較符合這個定位的,因為我們要看的是每秒鐘這個鏈路跑完,可以跑多少次,跑完一次完整的鏈路,咱們可以認(rèn)為一個 TPS,每秒鐘可以跑完多少次這個鏈路,那就是 TPS 了。

一次鏈路跑完是靠什么跑的呢?

好,那么接著給大家分析,這個一次鏈路跑完是靠什么跑的呢?

答案顯而易見,靠的是咱們鏈路入口的那個業(yè)務(wù)系統(tǒng) A 的一個線程,因為假設(shè)業(yè)務(wù)系統(tǒng) A 抗的是 http 請求和流量,那么業(yè)務(wù)系統(tǒng) A 必然是靠 tomcat 來接收 http 請求的。

然后 tomcat 是會啟動多個線程來處理一個一個的請求的,每一個請求進來都會交給一個線程來處理。

大家看下圖:

接著呢,這個線程收到了一個請求之后,就會按照調(diào)用鏈路依次去調(diào)用,所以說,要走完一個鏈路,等于業(yè)務(wù)系統(tǒng) B、業(yè)務(wù)系統(tǒng) E、業(yè)務(wù)系統(tǒng) F 這條鏈路得先走完,然后業(yè)務(wù)系統(tǒng) C,接著是業(yè)務(wù)系統(tǒng) D 和業(yè)務(wù)系統(tǒng) G,再有是自己的數(shù)據(jù)庫訪問。

單擊全鏈路壓測 TPS 估算

這整個鏈路跑完大概要花多久呢?這就要看情況了,要看每個業(yè)務(wù)系統(tǒng)要處理多少時間了,但是這么復(fù)雜的鏈路,往往跑完起碼要幾百毫秒,我們算他 500ms 吧,基本不多也不少了。

那所以說,此時我們的 tomcat 中一個線程,等于每秒也就跑完兩次鏈路而已。

那如果說業(yè)務(wù)系統(tǒng) A 的 tomcat 里開啟了 200 個線程呢?那等于是每秒的 TPS 大概也就 200*2=400 而已。

也就是業(yè)務(wù)系統(tǒng) A 單臺機器在一秒內(nèi),200 個線程可以處理 400 個請求,跑完 400 次鏈路,這就是全鏈路壓測的意義所在,我們要看的是全鏈路跑完一次要耗費多久,然后在較大壓力下,一個線程每秒可以跑完幾次鏈路,再計算單機的 TPS。

進而就可以根據(jù)這個單機全鏈路壓測去估算搞大促的時候,每秒要接收多少請求,跑完多少次鏈路,然后就知道要部署多少臺機器了。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2022-11-21 06:40:23

微服務(wù)架構(gòu)

2019-11-18 08:21:04

秒殺系統(tǒng)高性能

2019-11-12 09:32:35

高并發(fā)流量協(xié)議

2020-01-06 08:40:11

阿里場景服務(wù)

2021-01-20 07:16:07

冪等性接口token

2023-01-15 17:57:12

緩存技術(shù)kafka磁盤

2024-04-29 06:41:04

項目面試官QPS

2025-04-29 02:00:00

高并發(fā)系統(tǒng)場景

2021-08-26 11:10:42

架構(gòu)運維技術(shù)

2021-01-14 05:23:32

高并發(fā)消息中間件

2021-08-02 17:21:08

設(shè)計模式訂閱

2024-08-23 11:51:39

2023-11-27 08:32:02

元素HashMap

2023-11-29 08:00:53

JavaTreeMap底層

2021-09-27 07:11:18

MySQLACID特性

2022-11-25 17:29:27

分布式事務(wù)

2015-08-13 10:29:12

面試面試官

2024-11-26 08:09:58

2021-06-29 11:05:25

MySQLCPU數(shù)據(jù)庫

2021-11-05 10:07:13

Redis哈希表存儲
點贊
收藏

51CTO技術(shù)棧公眾號