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

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

開發(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è)推進和功能的逐步完善,外圍系統(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)主要負責分布式系統(tǒng)的接入驗證,對接受請求進行必要的合法性、安全性等內(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ā)送消息時標準不一致,給后續(xù)的消息消費帶來困難。

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

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

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

即發(fā)送服務的基本功能測試。當上送交易請求在后臺執(zhí)行成功后,觸發(fā)網(wǎng)關(guān)系統(tǒng)消息發(fā)送功能,將該上送請求相關(guān)的日志信息封裝消息發(fā)送出去。消息控制數(shù)據(jù)緩存在應用服務器,以提高讀取速度,通過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)絡等原因未收到被查交易返回結(jié)果時,如果該交易配置了消息發(fā)送功能,則在查證交易成功后將被查交易的原始交易信息封裝消息并發(fā)送,保證該交易所有使用場景都能正確發(fā)送消息。

3. 異常消息處理

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

4. 熔斷場景測試

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

批量消息處理測試

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

消息補發(fā)功能

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

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

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

異常消息導出

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

性能測試

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

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

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

總結(jié)

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

 

責任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2023-12-06 19:04:31

多平臺消息推送

2018-09-03 09:22:25

監(jiān)控服務器性能

2012-05-14 11:52:45

服務器角色

2011-07-26 10:27:07

分析器操作系統(tǒng)服務器

2018-04-20 10:38:25

2017-05-23 15:53:52

docker服務容器

2021-08-30 11:36:23

微服務開發(fā)技術(shù)

2024-05-16 13:13:39

微服務架構(gòu)自動化

2018-11-15 07:56:26

2023-09-26 07:34:24

Docker部署依賴包

2022-08-01 07:27:36

JavaDocker容器

2022-07-11 08:01:55

Kafka服務器宕機

2024-01-10 14:24:32

Docker容器Kafka

2017-05-09 09:26:48

微服務消息推送

2014-07-04 10:41:37

2024-03-08 22:39:55

GolangApacheKafka

2015-07-08 11:28:53

云服務平臺Docker MachDocker

2017-05-25 10:32:41

Docker微服務容器

2017-09-19 15:55:04

Docker入門實踐

2020-05-15 10:09:38

Kafka存儲讀取
點贊
收藏

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