偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

怎樣設(shè)計(jì)全鏈路壓力測(cè)試平臺(tái)?

開發(fā) 項(xiàng)目管理
為了實(shí)施壓力測(cè)試,系統(tǒng)入口流量的復(fù)制是一項(xiàng)基礎(chǔ)工作。這些流量數(shù)據(jù),在經(jīng)過清洗(如過濾無效請(qǐng)求)后,可存儲(chǔ)于NoSQL數(shù)據(jù)庫(kù)或云存儲(chǔ)服務(wù)中,形成所謂的流量數(shù)據(jù)工廠。

在行業(yè)中,"壓力測(cè)試"(簡(jiǎn)稱"壓測(cè)")是一個(gè)常聽到的術(shù)語。你可能在項(xiàng)目開發(fā)過程中親自進(jìn)行過壓力測(cè)試,因此對(duì)你來說這不是個(gè)新概念。想象一下你進(jìn)行壓力測(cè)試的方式,是否與許多人相同:首先建立一個(gè)與生產(chǎn)環(huán)境功能匹配的測(cè)試環(huán)境,并導(dǎo)入或生成一系列測(cè)試數(shù)據(jù)。接著,在另一臺(tái)服務(wù)器上啟動(dòng)多個(gè)線程,以并發(fā)方式調(diào)用待測(cè)試的接口(接口參數(shù)通常設(shè)置為相同的,例如,在測(cè)試獲取商品信息的接口時(shí),可能會(huì)使用相同的商品ID進(jìn)行壓測(cè))。最終,通過分析訪問日志或檢查測(cè)試環(huán)境的監(jiān)控系統(tǒng),記錄壓測(cè)期間的QPS(每秒查詢率),然后報(bào)告測(cè)試結(jié)果。這個(gè)過程的描述,雖然換了一種說法,但意義基本相同。

使用線上數(shù)據(jù)和環(huán)境:進(jìn)行壓力測(cè)試時(shí),最佳做法是直接使用實(shí)際的線上數(shù)據(jù)和環(huán)境。這是因?yàn)樽孕写罱ǖ臏y(cè)試環(huán)境可能與生產(chǎn)環(huán)境存在差異,這些差異可能會(huì)影響到壓力測(cè)試的準(zhǔn)確性。

采用線上流量而非模擬請(qǐng)求:為了確保測(cè)試結(jié)果的有效性,應(yīng)該使用真實(shí)的線上流量進(jìn)行壓力測(cè)試,而不是依賴于模擬請(qǐng)求。這可以通過流量復(fù)制技術(shù)實(shí)現(xiàn),將實(shí)際的線上流量復(fù)制到測(cè)試環(huán)境中。這樣做的原因是,模擬流量可能無法準(zhǔn)確反映線上流量的真實(shí)行為模式,尤其是在訪問模型和緩存命中率等方面,可能與實(shí)際情況大相徑庭。

分散流量源,避免單點(diǎn)壓力:不應(yīng)該只從一臺(tái)服務(wù)器發(fā)起所有測(cè)試流量,因?yàn)檫@樣很容易觸達(dá)單臺(tái)服務(wù)器的性能瓶頸,從而影響整體的壓力測(cè)試結(jié)果。為了更準(zhǔn)確地模擬用戶的真實(shí)請(qǐng)求,應(yīng)該將產(chǎn)生流量的機(jī)器分布在地理位置上靠近最終用戶的地點(diǎn),比如CDN節(jié)點(diǎn)。如果條件不允許,至少也應(yīng)該在不同的數(shù)據(jù)中心或機(jī)房?jī)?nèi)分布流量生成點(diǎn),以增強(qiáng)測(cè)試結(jié)果的真實(shí)性和可靠性。

錯(cuò)誤之處主要有以下幾點(diǎn):

壓力測(cè)試是在高并發(fā)大流量條件下對(duì)系統(tǒng)進(jìn)行的測(cè)試,旨在觀察系統(tǒng)在峰值負(fù)荷下的表現(xiàn),以發(fā)現(xiàn)性能隱患。這是發(fā)現(xiàn)系統(tǒng)問題和確保系統(tǒng)穩(wěn)定性與可用性的關(guān)鍵方法。以下是對(duì)上述描述的簡(jiǎn)化和標(biāo)號(hào)概述:

定義與目的:壓力測(cè)試是在極端負(fù)載條件下進(jìn)行的測(cè)試,用于觀察和評(píng)估系統(tǒng)在面臨高并發(fā)和大流量時(shí)的性能。這種測(cè)試幫助識(shí)別潛在的性能瓶頸,是維持系統(tǒng)穩(wěn)定性和可用性的重要工具。

全鏈路壓測(cè)的必要性:不應(yīng)僅對(duì)系統(tǒng)的某個(gè)核心模塊進(jìn)行壓力測(cè)試,而需要將接入層、后端服務(wù)、數(shù)據(jù)庫(kù)、緩存、消息隊(duì)列、中間件以及依賴的第三方服務(wù)和資源全面納入測(cè)試范圍。這種全方位的測(cè)試,也稱為全鏈路壓測(cè),是因?yàn)橄到y(tǒng)的任何部分在用戶訪問量激增時(shí)都可能成為性能瓶頸。

周期性測(cè)試與自動(dòng)化平臺(tái)的建設(shè):隨著互聯(lián)網(wǎng)項(xiàng)目功能的快速迭代和系統(tǒng)復(fù)雜性的增加,定期進(jìn)行壓力測(cè)試變得尤為重要。全鏈路壓測(cè)通常需要跨團(tuán)隊(duì)合作,包括DBA、運(yùn)維團(tuán)隊(duì)和依賴服務(wù)方等,帶來較高的人力和協(xié)調(diào)成本。為減少這些成本和潛在的線上風(fēng)險(xiǎn),建立一套自動(dòng)化的全鏈路壓測(cè)平臺(tái)是解決方案之一。

搭建全鏈路壓測(cè)平臺(tái),主要有兩個(gè)關(guān)鍵點(diǎn)。

一點(diǎn)是流量的隔離。由于壓力測(cè)試是在正式環(huán)境進(jìn)行,所以需要區(qū)分壓力測(cè)試流量和正式流量,這樣可以針對(duì)壓力測(cè)試的流量做單獨(dú)的處理。

另一點(diǎn)是風(fēng)險(xiǎn)的控制。也就是盡量避免壓力測(cè)試對(duì)于正常訪問用戶的影響。因此,一般來說全鏈路壓測(cè)平臺(tái)需要包含以下幾個(gè)模塊:流量構(gòu)造和產(chǎn)生模塊;壓測(cè)數(shù)據(jù)隔離模塊;系統(tǒng)健康度檢查和壓測(cè)流量干預(yù)模塊:

整體壓測(cè)平臺(tái)的架構(gòu)圖可以是下面這樣的:

圖片


壓測(cè)數(shù)據(jù)的產(chǎn)生

為了實(shí)施壓力測(cè)試,系統(tǒng)入口流量的復(fù)制是一項(xiàng)基礎(chǔ)工作。這些流量數(shù)據(jù),在經(jīng)過清洗(如過濾無效請(qǐng)求)后,可存儲(chǔ)于NoSQL數(shù)據(jù)庫(kù)或云存儲(chǔ)服務(wù)中,形成所謂的流量數(shù)據(jù)工廠。當(dāng)進(jìn)行壓測(cè)時(shí),可從此工廠獲取數(shù)據(jù),并將其分配至多個(gè)壓測(cè)節(jié)點(diǎn)。在這一過程中,有幾個(gè)關(guān)鍵點(diǎn)需要特別注意:

流量復(fù)制的方法:可以直接復(fù)制負(fù)載均衡服務(wù)器的訪問日志到流量數(shù)據(jù)工廠,盡管這種方法在壓測(cè)時(shí)增加了解析日志的成本。另一種推薦方法是使用開源工具,如GoReplay,來拷貝特定端口的流量,并將其保存至流量數(shù)據(jù)工廠,同時(shí)支持壓測(cè)時(shí)的流量回放。

壓測(cè)流量的分發(fā):為確保壓測(cè)的真實(shí)性,下發(fā)壓測(cè)流量的節(jié)點(diǎn)應(yīng)盡量接近用戶地理位置,而不是和服務(wù)部署節(jié)點(diǎn)位于同一機(jī)房。

流量染色:為了區(qū)分壓測(cè)流量和實(shí)際用戶流量,在HTTP請(qǐng)求頭中增加壓測(cè)標(biāo)記,如is stress test,這樣在流量復(fù)制后,可以批量標(biāo)記請(qǐng)求,確保壓測(cè)的準(zhǔn)確執(zhí)行和監(jiān)控。

數(shù)據(jù)如何隔離

在進(jìn)行壓力測(cè)試時(shí),除了復(fù)制流量以模擬真實(shí)的用戶請(qǐng)求外,還需要對(duì)系統(tǒng)進(jìn)行改造,以實(shí)現(xiàn)壓測(cè)流量與正式流量的隔離。這樣的隔離可以最大限度減少壓力測(cè)試對(duì)線上系統(tǒng)的影響。具體而言,需要從兩個(gè)方面進(jìn)行工作:

對(duì)下行流量的處理:對(duì)于讀取數(shù)據(jù)的請(qǐng)求(通常稱為下行流量),某些服務(wù)或組件不適合進(jìn)行壓測(cè)。例如,在記錄用戶行為數(shù)據(jù)時(shí),壓測(cè)可能會(huì)導(dǎo)致大量的假數(shù)據(jù)生成,如商品瀏覽量的人為膨脹,這會(huì)影響到業(yè)務(wù)報(bào)表,進(jìn)而影響產(chǎn)品或業(yè)務(wù)決策。為避免這種情況,需要對(duì)壓測(cè)產(chǎn)生的數(shù)據(jù)進(jìn)行特殊處理,比如不將這些數(shù)據(jù)記錄到大數(shù)據(jù)日志中。

另外,考慮到系統(tǒng)可能依賴于推薦服務(wù)來展示用戶可能感興趣的商品,而這些服務(wù)通常不會(huì)重復(fù)推薦已展示的商品。如果壓測(cè)流量通過這些推薦服務(wù),可能會(huì)導(dǎo)致大量商品被“消耗”,影響線上用戶的推薦效果。因此,需要對(duì)這部分服務(wù)進(jìn)行Mock處理,即讓帶有壓測(cè)標(biāo)記的請(qǐng)求經(jīng)過Mock服務(wù),而非真實(shí)的推薦服務(wù)。

Mock服務(wù)的部署:在搭建Mock服務(wù)時(shí),應(yīng)注意將這些服務(wù)部署在與真實(shí)服務(wù)相同的機(jī)房?jī)?nèi)。這樣做的目的是為了盡可能地模擬真實(shí)的服務(wù)部署結(jié)構(gòu),從而提高壓測(cè)結(jié)果的真實(shí)性。部署在相同機(jī)房?jī)?nèi)的Mock服務(wù)可以更準(zhǔn)確地反映出服務(wù)間的調(diào)用延遲和處理能力,確保壓測(cè)結(jié)果的可靠性。

對(duì)于寫入數(shù)據(jù)的請(qǐng)求(通常稱作上行流量),實(shí)現(xiàn)壓測(cè)流量與正式流量隔離的一個(gè)重要策略是使用影子庫(kù)。影子庫(kù)是一個(gè)與線上數(shù)據(jù)存儲(chǔ)完全隔離的存儲(chǔ)系統(tǒng),用于存儲(chǔ)壓測(cè)期間產(chǎn)生的所有寫入數(shù)據(jù)。這種隔離確保了壓測(cè)不會(huì)影響到真實(shí)的生產(chǎn)數(shù)據(jù),同時(shí)允許我們?cè)谝粋€(gè)盡可能接近真實(shí)環(huán)境的設(shè)置中測(cè)試寫入操作的性能。具體到不同的存儲(chǔ)類型,影子庫(kù)的實(shí)現(xiàn)方式也有所不同:

MySQL影子庫(kù):對(duì)于存儲(chǔ)在MySQL中的數(shù)據(jù),可以在同一個(gè)MySQL實(shí)例中創(chuàng)建一個(gè)不同的Schema,其中包含一套與線上相同的庫(kù)表結(jié)構(gòu)。同時(shí),為了模擬真實(shí)的數(shù)據(jù)環(huán)境,還需要將線上數(shù)據(jù)導(dǎo)入到這個(gè)影子庫(kù)中。這樣做可以確保壓測(cè)環(huán)境在數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)量上都盡可能接近真實(shí)環(huán)境,從而提高測(cè)試的準(zhǔn)確性和可靠性。

Redis影子庫(kù):對(duì)于存儲(chǔ)在Redis中的數(shù)據(jù),可以通過為壓測(cè)流量產(chǎn)生的數(shù)據(jù)增加一個(gè)統(tǒng)一的前綴,并存儲(chǔ)在同一份Redis實(shí)例中。這種方法通過命名空間的隔離來區(qū)分正式數(shù)據(jù)和壓測(cè)數(shù)據(jù),既保持了數(shù)據(jù)隔離,又避免了搭建完全獨(dú)立的存儲(chǔ)系統(tǒng)的復(fù)雜性和成本。

Elasticsearch影子庫(kù):針對(duì)存儲(chǔ)在Elasticsearch中的數(shù)據(jù),可以選擇將壓測(cè)數(shù)據(jù)放在一個(gè)單獨(dú)的索引中。這樣的做法便于管理和隔離壓測(cè)數(shù)據(jù),同時(shí)也方便在壓測(cè)結(jié)束后對(duì)這部分?jǐn)?shù)據(jù)進(jìn)行清理或分析。

壓力測(cè)試如何實(shí)施

在完成線上流量復(fù)制和線上系統(tǒng)改造后,便可以開始實(shí)施壓力測(cè)試。通常,壓力測(cè)試前會(huì)設(shè)定一個(gè)目標(biāo),例如要求系統(tǒng)整體QPS達(dá)到每秒20萬次。但是,在測(cè)試中不會(huì)突然將請(qǐng)求量提升至每秒20萬次,而是會(huì)逐步增加,例如每次增加一萬QPS,然后讓系統(tǒng)穩(wěn)定運(yùn)行一段時(shí)間以觀察其性能表現(xiàn)。如果檢測(cè)到任何服務(wù)或組件成為性能瓶頸,就會(huì)減少壓測(cè)流量至上一次的QPS水平以維護(hù)服務(wù)穩(wěn)定,并對(duì)相關(guān)服務(wù)或組件進(jìn)行擴(kuò)容處理后再次增加流量進(jìn)行測(cè)試。

為了降低壓力測(cè)試過程中的人力成本,開發(fā)流量監(jiān)控組件是一個(gè)有效策略。該組件可以預(yù)設(shè)性能閾值,例如設(shè)定容器CPU使用率的閾值為60%-70%,系統(tǒng)平均響應(yīng)時(shí)間不超過1秒,慢請(qǐng)求比例不超過1%等。一旦系統(tǒng)性能觸及這些閾值,流量監(jiān)控組件便能及時(shí)發(fā)現(xiàn)并通知減少壓測(cè)流量,同時(shí)向開發(fā)和運(yùn)維團(tuán)隊(duì)發(fā)出報(bào)警。這樣,團(tuán)隊(duì)便能快速識(shí)別并解決性能瓶頸問題,完成必要的擴(kuò)容后繼續(xù)進(jìn)行壓力測(cè)試。

在全鏈路壓測(cè)平臺(tái)的探索方面,眾多大型互聯(lián)網(wǎng)公司如阿里、京東、美團(tuán)和微博等都已經(jīng)開發(fā)出適合自己業(yè)務(wù)需求的平臺(tái)。這些平臺(tái)雖然各有特點(diǎn),但基本遵循相同的原則,包括流量復(fù)制、流量隔離、壓力測(cè)試、監(jiān)控和熔斷等關(guān)鍵步驟,體現(xiàn)了全鏈路壓測(cè)的核心理念。因此,在自研適合自己項(xiàng)目的全鏈路壓測(cè)平臺(tái)時(shí),遵循這些已被驗(yàn)證的方法論是一個(gè)明智的選擇。

責(zé)任編輯:武曉燕 來源: 二進(jìn)制跳動(dòng)
相關(guān)推薦

2022-01-04 17:08:02

全鏈路觀測(cè)平臺(tái)

2025-05-09 00:30:00

2023-01-30 22:34:44

Node.js前端

2023-02-08 19:37:37

大數(shù)據(jù)技術(shù)

2024-01-05 00:29:36

全鏈路灰度發(fā)布云原生

2024-09-19 14:02:16

2018-07-12 09:59:39

microServicmockautoTest

2023-10-16 23:43:52

云原生可觀測(cè)性

2023-11-13 10:41:44

Spring微服務(wù)

2023-07-07 07:27:14

全鏈路虎牙APM

2022-07-22 07:59:17

日志方案

2023-11-14 09:04:15

用戶節(jié)點(diǎn)不可用

2022-04-27 10:53:34

web優(yōu)化性能

2024-12-16 13:34:35

2025-03-04 08:53:10

2023-10-30 07:25:37

數(shù)據(jù)湖數(shù)據(jù)處理

2024-10-23 12:50:13

數(shù)據(jù)飛輪數(shù)字化

2022-08-31 22:25:53

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

2018-07-03 15:56:59

騰訊
點(diǎn)贊
收藏

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