日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何使用Docker內(nèi)的Kafka服務(wù)?消息服務(wù)測試實踐篇

如何使用docker內(nèi)的Kafka服務(wù)?消息服務(wù)測試實踐篇

作者:Atstudy網(wǎng)校 2020-10-24 17:28:04

開發(fā)

測試

Kafka Kafka是一種高吞吐量的分布式架構(gòu)的發(fā)布訂閱消息系統(tǒng),它可以處理消費者在網(wǎng)站中的所有動作流數(shù)據(jù)。通常由于高吞吐量的要求而選擇通過處理日志數(shù)據(jù)和日志聚合來解決。

背景及系統(tǒng)簡介:

Kafka是一種高吞吐量的分布式架構(gòu)的發(fā)布訂閱消息系統(tǒng),它可以處理消費者在網(wǎng)站中的所有動作流數(shù)據(jù)。通常由于高吞吐量的要求而選擇通過處理日志數(shù)據(jù)和日志聚合來解決。

[[348168]]

本文涉及的分布式系統(tǒng)(簡稱C系統(tǒng))已初具規(guī)模,而隨著系統(tǒng)建設(shè)的建設(shè)推進(jìn)和功能的逐步完善,外圍系統(tǒng)對C系統(tǒng)的日志消費需求逐步增加。為了滿足日志消費需求,決定在C系統(tǒng)的網(wǎng)關(guān)系統(tǒng)中增加日志發(fā)送功能實現(xiàn)對外消息的發(fā)送。

C系統(tǒng)的網(wǎng)關(guān)系統(tǒng)主要負(fù)責(zé)分布式系統(tǒng)的接入驗證,對接受請求進(jìn)行必要的合法性、安全性等內(nèi)容的校驗。將消息發(fā)送功能放到網(wǎng)關(guān)系統(tǒng)中主要有2方面考慮:

  • 網(wǎng)關(guān)系統(tǒng)日志記錄了上送請求的原始信息,能夠完整描述交易請求發(fā)生的場景及請求內(nèi)容;
  • 便于制定統(tǒng)一的消息報文格式和規(guī)范,避免多系統(tǒng)發(fā)送消息時標(biāo)準(zhǔn)不一致,給后續(xù)的消息消費帶來困難。

聯(lián)機(jī)消息發(fā)送測試

網(wǎng)關(guān)系統(tǒng)設(shè)置了消息控制表,控制是否發(fā)送消息。同時可以根據(jù)需要從不同維度控制哪些消息需要發(fā)送,而不是所有日志數(shù)據(jù)全部發(fā)送,避免系統(tǒng)資源的浪費,提高消息的使用效率。

1. 正常交易消息發(fā)送

即發(fā)送服務(wù)的基本功能測試。當(dāng)上送交易請求在后臺執(zhí)行成功后,觸發(fā)網(wǎng)關(guān)系統(tǒng)消息發(fā)送功能,將該上送請求相關(guān)的日志信息封裝消息發(fā)送出去。消息控制數(shù)據(jù)緩存在應(yīng)用服務(wù)器,以提高讀取速度,通過POSTMAN工具查詢、驗證。

消息發(fā)送無顯性展示,因此測試對消息是否正常、發(fā)送規(guī)則是否符合消息控制表配置規(guī)則、發(fā)送內(nèi)容的正確性和完整性、topic使用是否正確、總線系統(tǒng)是否正常、正確接收到消息等內(nèi)容的驗證,通過查詢log的方式完成。

2. 查證交易消息發(fā)送

查證功能是網(wǎng)關(guān)系統(tǒng)提供的查證上送交易執(zhí)行結(jié)果(成功/失敗)的功能。由于網(wǎng)絡(luò)等原因未收到被查交易返回結(jié)果時,如果該交易配置了消息發(fā)送功能,則在查證交易成功后將被查交易的原始交易信息封裝消息并發(fā)送,保證該交易所有使用場景都能正確發(fā)送消息。

3. 異常消息處理

異常場景主要驗證Kafka不能正常發(fā)送消息的情況,我們通過修改Kafka服務(wù)器IP地址方式和配置錯誤的topic等方式模擬Kafka消息發(fā)送失敗的場景,進(jìn)而驗證網(wǎng)關(guān)系統(tǒng)是否能將消息正確、完整的記錄到異常消息表中。

4. 熔斷場景測試

熔斷是指Kafka異?;蛳⒎?wù)壓力過大,進(jìn)而影響網(wǎng)關(guān)系統(tǒng)其他正常功能,需要臨時關(guān)閉消息服務(wù)已保證網(wǎng)關(guān)系統(tǒng)本身對外服務(wù)正常。關(guān)閉消息服務(wù)是通過將要發(fā)送的消息記錄到異常消息表中,后續(xù)通過批量補(bǔ)發(fā)方式補(bǔ)發(fā)消息。

批量消息處理測試

通過定時輪詢的方式,對記錄到異常消息表里的消息進(jìn)行補(bǔ)發(fā)。同時設(shè)置消息熔斷機(jī)制,當(dāng)Kafka異常時,將消息發(fā)送完全切換到記錄消息表,避免造成Kafka完全失效的同時也保證了本系統(tǒng)對外服務(wù)正常。

消息補(bǔ)發(fā)功能

當(dāng)日消息補(bǔ)發(fā)定時輪詢,每5分鐘掃描一次異常消息表,對于未發(fā)送成功的消息重新補(bǔ)發(fā),在發(fā)送三次失敗后更新消息狀態(tài)為“異常”。測試主要驗證內(nèi)容:

  • 補(bǔ)發(fā)消息的篩選;
  • 錯誤的消息(如空消息)等處理;
  • 補(bǔ)發(fā)線程沖突處理機(jī)制,等

上日消息補(bǔ)發(fā)對上一日未發(fā)送的異常消息進(jìn)行補(bǔ)發(fā),與當(dāng)日補(bǔ)發(fā)功能類似,但不是定時輪詢。

異常消息導(dǎo)出

對于各種補(bǔ)發(fā)后仍失敗的消息,為保證數(shù)據(jù)的完整性,提供導(dǎo)出功能做后續(xù)處理。

性能測試

由于投產(chǎn)后預(yù)期消息發(fā)送量很大,預(yù)估約1億筆以上,所以對性能要求較高。

參考預(yù)估交易量,根據(jù)二八原則(80%的交易量發(fā)生在20%的時間內(nèi)),估算投產(chǎn)后系統(tǒng)的TPS約7000左右。參考該系統(tǒng)前次性能測試指標(biāo),我們將通過標(biāo)準(zhǔn)定位2000,測試、生產(chǎn)TPS比例1:3.5。而測試環(huán)境資源與生產(chǎn)資源比例約為1:16,遠(yuǎn)大于TPS的測試生產(chǎn)比例,因此我們認(rèn)為達(dá)到該標(biāo)準(zhǔn)即可滿足生產(chǎn)系統(tǒng)性能要求。

在進(jìn)行了基準(zhǔn)測試、負(fù)載測試及混合場景測試后,消息服務(wù)在測試環(huán)境TPS達(dá)到了2000以上,并且系統(tǒng)資源都在合理范圍內(nèi)。

總結(jié)

Kafka是比較成熟的消息系統(tǒng),為網(wǎng)關(guān)系統(tǒng)的消息服務(wù)提供了基礎(chǔ),但Kafka偶爾會出現(xiàn)假死現(xiàn)象,導(dǎo)致消息阻塞。本次原本計劃嘗試模擬假死現(xiàn)象,但與項目開發(fā)人員以及Kafka支持人員討論了解到,暫時無法模擬該場景,這也是本次留下的遺憾。

 


分享名稱:如何使用Docker內(nèi)的Kafka服務(wù)?消息服務(wù)測試實踐篇
轉(zhuǎn)載注明:http://www.5511xx.com/article/djiccig.html