基於 kafka 的日誌資料建模測試
一、前言
我所參與的實際業務中,遊戲日誌鏈路為遊戲客戶端直傳,落入HBase中,中間會經歷一次kafka訊息佇列,正常提測的時候是對HBase中已經存入的資料做建模校驗,但是此時若發現資料不準確,資料丟失,就已經造成了反外掛服務在提取使用者資料分析時的一些不準確預測。針對這種資料鏈路的場景,我們需要提前介入測試,從遊戲客戶端直傳日誌的時候就要開始對遊戲日誌資料進行測試,因為遊戲資料是通過kafka直傳,所以我們需要直接對kafka中的遊戲資料進行直接測試。
二、什麼是Kafka
相信很多同學在工作中或多或少都有接觸過訊息中介軟體,kafka就是其中一種,Kafka是最初由Linkedin公司開發,是一個分散式、分割槽的、多副本的、多訂閱者,基於zookeeper協調的分散式日誌系統(也可以當做MQ系統),常見可以用於web/nginx日誌、訪問日誌,訊息服務等等。
主要應用場景是:日誌收集系統和訊息系統。採用的是釋出-訂閱模式
這裡我們不做過多的kafka講解,介紹一下kafka中某些角色以及他們的作用
Broker:Kafka 叢集包含一個或多個伺服器,伺服器節點稱為broker
Topic: 每條釋出到Kafka叢集的訊息都有一個類別,這個類別被稱為Topic(物理上不同Topic的訊息分開儲存,邏輯上一個Topic的訊息雖然儲存於一個或多個broker上但使用者只需指定訊息的Topic即可生產或消費資料而不必關心資料存於何處)
Pritition: topic中的資料分割為一個或多個partition,儲存訊息的分割槽。
Producer:生產者即資料的釋出者,該角色將訊息釋出到Kafka的topic中。
Consumer: 消費者可以從broker中讀取資料。消費者可以消費多個topic中的資料
Consumer Group:每個Consumer屬於一個特定的Consumer Group
kafka的更詳細的介紹這裡就不展示了,感興趣的小夥伴可以去kafka官網學習
三、如何測試Kafka中的資料呢
由於上文已介紹了Kafka,所以我們只需要開啟一個Consumer即可消費kafka中的資料進行資料測試,這裡採用了kafka-python2.0.1,利用KafkaConsumer拉取資料
官方定義的配置config很多,具體配置還是要根據當前的業務調整,如上文中的auto_offfset_reset='earliest'配置了即可消費到最早可以消費到的資料,若是要消費最新的資料,即可去掉這一條配置。
基於檢測任務,所以還是取最新未消費的資料進行拉取校驗。
消費程式開啟後,會不定的消費資料,我們的檢測任務需要一直執行而不停止嗎?在如此大批量的資料情況下,做到每條資料都檢查並做結果輸出是比較困難的,所有我們採取抽樣檢查,再啟動消費者的時候,可以控制消費的數量來達到一次任務需要檢查的日誌條數。
Kafka叢集有帶認證和不帶認證的,小夥伴需要注意兩種叢集的配置方式。
如上,我們可以自定義採集需要的日誌數量,當日志數量採集完成後,對採集的日誌資料做一次日誌解析後進行資料建模測試,具體解析規則,建模規則校驗試具體建模需求而定。
如果我們採取了一直消費最新的日誌,定義的採集數量比較多,但是資料傳送過來比較少怎麼辦,那我們的採集校驗程式需要一直進行下去嗎,如何優雅的停止我們的消費程式呢?,上文的Kafka_Consumer中consumer_timeout_ms的配置可以解決這個問題,自定義超時時間,如果在設定的時間內未採集到資料,那麼會自動退出消費程式。
採集好需要檢查的日誌後,可以自定義異常方法去輪詢採集的資料,將不符合採集要求的異常資料以及異常原因保留下來即可完成資料建模測試,並且觀察結果可以快速觀察每條日誌中的資料建模的錯誤原因。
具體資料解析程式碼根據各個業務資料做規則解析,這裡就不貼程式碼了。
四、接入的日誌任務變多了呢?
這個時候,部門的核心宗旨就體現出來了,測試能力工具化,測試工具平臺化。
做成服務化,可以新建執行任務,任務進行週期排程
任務頁面可以實時查詢檢測結果,加入排程任務可對任務資料監控,驗證錯誤即可告警。
五、總結
本文只是從提測資料鏈路中的上一鏈路進行了資料保障,真正的資料保障需要做到全鏈路的資料保障,任重而道遠,若有小夥伴有更好的思路或者技術手段,歡迎賜教。
相關文章
- 關於歸檔日誌的切換測試
- 資料建模在效能測試中的理解
- 基於RMAN 建立測試資料庫資料庫
- 測試,ogg從歸檔日誌中抽取資料
- kafka 測試遇到掉資料的問題 nmred/kafka-PHPKafkaPHP
- 大資料03-整合 Flume 和 Kafka 收集日誌大資料Kafka
- 基於大資料審計的資訊保安日誌分析法大資料
- 關於資料日誌的設計方案
- 建立測試物理Standby日誌
- 關於Oracle12C rac DDL日誌的測試驗證Oracle
- 資料庫日誌減肥。自己試過可以資料庫
- pg資料庫基於HA 的failover 測試通過資料庫AI
- 學習日誌-----測試思維
- 離線日誌釋出測試
- 自動化測試框架:日誌的分析框架
- 基於 MongoDB 的 python 日誌功能MongoDBPython
- 基於MongoDB的python日誌功能MongoDBPython
- 基於大資料模型的數字孿生建模方法大資料模型
- 大資料開發過程中Kafka日誌結構解析大資料Kafka
- 使用Kafka做日誌收集Kafka
- 如何把 Laravel 的日誌推到Kafka?LaravelKafka
- 測試在丟失歸檔日誌的情況下,跳過部分歸檔日誌進行資料恢復資料恢復
- 測試基準資料的準備
- 測試DML 時產生歸檔日誌和閃回日誌的比
- 基於PDF資料編寫PRD長文件測試案例
- 基於等保3.0的MySQL資料庫審計日誌外掛實踐MySql資料庫
- 2.4 一種基於kafka增量資料校驗的方案Kafka
- Kafka 入門(二)--資料日誌、副本機制和消費策略Kafka
- Kafka-之資料日誌儲存(格式變化與壓縮)Kafka
- 重做日誌檔案損壞測試
- 客戶端釋出日誌測試客戶端
- Cmocka 單元測試日誌記錄Mock
- Autodesk的照片建模雲服務—Autodesk ReCap 360 photo 的測試資料
- mysql 基於日誌的主從複製MySql
- Kafka效能測試Kafka
- 日誌-log4j2基於AsyncAppender的非同步日誌列印APP非同步
- 【資料】MySQL日誌MySql
- 基於儲存過程的百萬級測試資料自動生成儲存過程