[發明專利]基于Spark Streaming結合Kafka確保數據零丟失的系統和方法有效
| 申請號: | 202010281180.0 | 申請日: | 2020-04-10 |
| 公開(公告)號: | CN111526188B | 公開(公告)日: | 2022-11-22 |
| 發明(設計)人: | 王婧妍;徐晶;石波;胡佳;謝小明;施雪成;丁衛星;李淵;楊坤崇 | 申請(專利權)人: | 北京計算機技術及應用研究所 |
| 主分類號: | H04L67/568 | 分類號: | H04L67/568;H04L67/1095;H04L9/40 |
| 代理公司: | 中國兵器工業集團公司專利中心 11011 | 代理人: | 王雪芬 |
| 地址: | 100854*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 spark streaming 結合 kafka 確保 數據 丟失 系統 方法 | ||
1.一種基于Kafka分區技術及Spark Streamin實時流處理的系統,其特征在于,包括數據緩存模塊和流計算模塊,其中,所述數據緩存模塊用于緩存從不同源獲取到的數據,并轉發給流計算模塊;所述流計算模塊用于在讀取到數據后,對數據進行處理;
所述數據緩存模塊具體用于利用Kafka實現緩存從不同源獲取到的數據,并轉發給流計算模塊,在利用Kafka實現緩存從不同源獲取到的數據,并轉發給流計算模塊時,具體是從Kafka的數據生產端,zookeeper集群端,和數據消費端三個方面對參數進行設置以防止數據丟失;
所述數據緩存模塊在zookeeper集群端對參數進行設置以防止數據丟失具體為:Kafka可以保證分區消息的順序,同一個分區,先發送到Kafka分區的消息會被先消費掉,Kafka每個主題有多個分區,每個分區有多個副本,分為一個首領副本,和其余的跟隨者副本,所有的消息都是發送給首領副本的,消息消費也是從首領副本獲取的,然后與其他副本同步,當首領副本不可用的時候,會選舉一個跟隨者副本變成首領副本,當跟隨者副本與首領副本保持同步的時候,跟隨者副本是同步副本,當無法同步的時候,是非同步副本,如果首領副本宕機,需要選舉一個跟隨者副本來作為首領,如果非同步副本作為首領時,會損失一部分數據,這種行為叫做:不完全首領選舉,對于此類狀況,設置一個參數**unclean.leader.election**,將該參數設置為false以制止不完全首領選舉,或通過設置“最小同步副本數”為1,確保主機宕機時有1個同步副本;
所述數據緩存模塊在數據生產端對參數進行設置以防止數據丟失具體為:Kafka接收到消息后,返回一個ack參數,ack=1,生產者leader副本成功寫入消息后,zookeeper集群端作為服務端反饋成功響應,因此將ack設置為1;
所述數據緩存模塊在數據消費端對參數進行設置以防止數據丟失具體為:設置手動更新偏移量,且設置為消費一批后提交,或者設置累加器,當發生異常時,把當前處理失敗的偏移量提交,下次消費從提交的偏移量處開始消費;
所述流計算模塊具體使用Kafka Direct API,設置數據唯一ID,及在數據中添加分區偏移量的方法之一解決數據丟失問題;
所述流計算模塊使用Kafka Direct API的方法解決數據丟失問題時,具體方式為:Kafka Direct API使用Spark Drive計算下一個批處理需要處理Kafka中偏移量的范圍,直接從Kafka topic分區中消費數據;
所述流計算模塊使用設置數據唯一ID的方法解決數據丟失問題時,具體方式為:寫入數據庫的時候,采用更新語句,存在則更新,不存在則插入,此方法設置Direct DStream消費的偏移量方式;
所述流計算模塊使用添加分區偏移量的方法解決數據丟失問題時,具體方式為:在每條數據中添加分區的偏移量,若程序宕機,再次啟動后,獲得數據庫中讀取最新的分區偏移量信息。
2.一種利用權利要求1所述的系統實現數據存儲和傳輸過程中零數據丟失的方法。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京計算機技術及應用研究所,未經北京計算機技術及應用研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010281180.0/1.html,轉載請聲明來源鉆瓜專利網。





