【技術實現步驟摘要】
本專利技術實施例涉及計算機,尤其涉及一種消費機器的災備切換方法、裝置、計算機設備及介質。
技術介紹
1、面對公司業務增長帶來的數據存儲和查詢挑戰,一般會采用基于kafka的增量數據同步方案。該kafka的增量數據同步方案主要包括:首先,監聽某數據源發出的binlog日志,通常是關系型數據庫。然后設置kafka集群,由kafka集群進行業務數據的接收與消費,并確保其能夠處理預期的數據量和吞吐量。其中,可以在消費者應用程序中,將接收到的binlog日志轉換為所需的數據格式,并加入組裝寬表的邏輯來將轉換后的數據寫入新的數據存儲系統中,即可實現自定義的增量數據同步,并確保新系統能夠處理不斷增長的業務數據,同時保持查詢的響應速度。
2、然而,專利技術人意識到,由于kafka客戶端只能由一個消費機器單獨開啟并消費,如果出現消費機器意外宕機或者程序不可用時,無法讓其他消費機器繼續消費此kafka消息,容易造成增量數據同步延遲的問題,帶來業務上的不可控。
技術實現思路
1、本申請針對上述不足或缺點,本申請提供了一種消費機器的災備切換方法、裝置、計算機設備及介質。通過執行該方案,確保了業務數據在分布式環境下僅能由單臺消費機器消費,當出現問題時,執行災備切換操作以避免增量數據同步延遲的問題,保證了業務的正常進行。
2、本申請根據第一方面提供了一種消費機器的災備切換方法,該方法應用于包含有多臺消費機器的分布式數據消費系統,包括:
3、當監聽到出現第一消費機器的心跳停止
4、當監聽到出現第二消費機器發出排他鎖時,單獨向第二消費機器發送業務數據以完成消費機器的切換操作;第二消費機器是在其余的多臺消費機器中最先向redis(remotedictionary?server,遠程字典服務)端發出排他鎖的一臺消費機器;
5、其中,當第一消費機器發生宕機,或者內部的程序出現異常時,第一消費機器會暫停發送心跳。
6、在一些實施例中,在啟動分布式數據消費系統的業務項目時,該方法還包括:
7、隨機地選取分布式數據消費系統中的一臺消費機器作為第一消費機器;
8、令第一消費機器通過訂閱方式從redis端獲取kafka配置標識集合;
9、其中,第一消費機器在獲取到kafka配置標識集合后,遍歷該kafka配置標識集合,抽取其中一個目標kafka配置標識用以確定排他鎖的值,并向redis端發送排他鎖。
10、在一些實施例中,每臺消費機器原本被設置了空標識,當出現某一消費機器的空標識被賦予特定的kafka配置標識時,該消費機器會向redis端發送心跳;該方法還包括:
11、當監聽到第一消費機器向redis端發送排他鎖時,向第一消費機器發送目標kafka配置標識對應的消費配置信息,該消費配置信息包括kafka服務端地址、消息集鍵以及客戶端消費方式信息;
12、啟動第一消費機器的kafka客戶端以執行消費業務數據操作,并為第一消費機器的空標識賦予上目標kafka配置標識。
13、在一些實施例中,啟動第一消費機器的kafka客戶端以執行業務數據操作,包括:
14、開啟kafka客戶端的第一子線程和第二子線程;
15、通過第一子線程接收業務數據,將業務數據存入阻塞隊列中;
16、通過第二子線程從阻塞隊列中取出業務數據,并根據業務數據執行對應的業務代碼。
17、在一些實施例中,在為第一消費機器的空標識賦予上目標kafka配置標識后,第一消費機器會按照設定的心跳周期向redis端發送心跳;
18、其中,單次的心跳續期大于心跳周期;若第一消費機器的心跳續期成功,則在當前的心跳續期內,第一消費機器獨占目標kafka配置標識。
19、在一些實施例中,收回第一消費機器上的業務數據,包括:
20、將第一消費機器的目標kafka配置標識設置為空標識以停止kafka客戶端的消費業務數據操作。
21、在一些實施例中,該方法還包括:
22、將第一消費機器的目標kafka配置標識以及其余各臺消費機器的當前標識設置為空標識,以停止分布式數據消費系統中所有的消費業務數據操作;
23、若在當前的心跳續期內未出現任一臺消費機器發出心跳,則在下一心跳續期內,且監聽到出現第三消費機器向redis端發出排他鎖時,單獨向第三消費機器發送業務數據以完成消費機器的切換操作。
24、本申請根據第二方面提供了一種消費機器的災備切換裝置,該災備切換裝置應用于包含有多臺消費機器的分布式數據消費系統,包括:
25、業務數據回收模塊,用于當監聽到出現第一消費機器的心跳停止時長達到預設的心跳周期時,收回第一消費機器上的業務數據,該第一消費機器是當前正在消費業務數據的一臺消費機器;
26、業務數據切換模塊,用于當監聽到出現第二消費機器發出排他鎖時,單獨向第二消費機器發送業務數據以完成消費機器的切換操作;第二消費機器是在其余的多臺消費機器中最先向redis端發出排他鎖的一臺消費機器;
27、其中,當第一消費機器發生宕機,或者內部的程序出現異常時,第一消費機器會暫停發送心跳。
28、本申請根據第三方面提供了一種計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現上述實施例中任一項消費機器的災備切換方法的步驟。
29、本申請根據第四方面提供了一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,處理器執行計算機程序時實現上述實施例中任一項消費機器的災備切換方法的步驟。
30、上述實施例的方法可以應用于監聽消費機器心跳的監控服務器,該監控服務器在接收到項目啟動指令時,會隨機地選取分布式數據消費系統中的一臺消費機器作為第一消費機器,然后令第一消費機器通過訂閱方式從redis端獲取kafka配置標識集合。其中,第一消費機器在獲取到kafka配置標識集合后,會遍歷該kafka配置標識集合,抽取其中一個目標kafka配置標識用以確定排他鎖的值,并向redis端發送排他鎖,使得業務數據只能由第一消費機器進行消費。而監控服務器在監聽到第一消費機器的心跳停止時長超過心跳續期時,表明第一消費機器發生宕機,或內部的程序出現異常,則收回第一消費機器上的業務數據。此時,除第一消費機器以外的消費機器均可以向redis端發送排他鎖來爭取消費業務數據的機會。最后,當監控服務器監聽到出現第二消費機器發出排他鎖時,單獨向第二消費機器發送業務數據以完成消費機器的切換操作。通過這樣的方式,確保了業務數據在分布式環境下僅能由單臺消費機器消費,當出現問題時,執行災備切換操作以避免增量數據同步延遲的問題,保證了業務的正常進行。
本文檔來自技高網...【技術保護點】
1.一種消費機器的災備切換方法,其特征在于,所述方法應用于包含有多臺消費機器的分布式數據消費系統,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,在啟動所述分布式數據消費系統的業務項目時,所述方法還包括:
3.根據權利要求2所述的方法,其特征在于,每臺所述消費機器原本被設置了空標識,當出現某一消費機器的空標識被賦予特定的Kafka配置標識時,該消費機器會向所述Redis端發送心跳;所述方法還包括:
4.根據權利要求3所述的方法,其特征在于,啟動所述第一消費機器的Kafka客戶端以執行業務數據操作,包括:
5.根據權利要求3所述的方法,其特征在于,在為所述第一消費機器的空標識賦予上所述目標Kafka配置標識后,所述第一消費機器會按照設定的心跳周期向所述Redis端發送心跳;
6.根據權利要求3所述的方法,其特征在于,收回所述第一消費機器上的業務數據,包括:
7.根據權利要求6所述的方法,其特征在于,所述方法還包括:
8.一種消費機器的災備切換裝置,其特征在于,該災備切換裝置應用于包含有多臺
9.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現權利要求1至7中任一項所述方法的步驟。
10.一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現權利要求1至7中任一項所述方法的步驟。
...【技術特征摘要】
1.一種消費機器的災備切換方法,其特征在于,所述方法應用于包含有多臺消費機器的分布式數據消費系統,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,在啟動所述分布式數據消費系統的業務項目時,所述方法還包括:
3.根據權利要求2所述的方法,其特征在于,每臺所述消費機器原本被設置了空標識,當出現某一消費機器的空標識被賦予特定的kafka配置標識時,該消費機器會向所述redis端發送心跳;所述方法還包括:
4.根據權利要求3所述的方法,其特征在于,啟動所述第一消費機器的kafka客戶端以執行業務數據操作,包括:
5.根據權利要求3所述的方法,其特征在于,在為所述第一消費機器的空標識賦予上所述目標kafka配置標識后,所述第一...
【專利技術屬性】
技術研發人員:張名文,
申請(專利權)人:北京白龍馬云行科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。