System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及數據庫數據同步,尤其是一種將kubernetes對象同步到數據庫的方法及系統。
技術介紹
1、mvc是web后端開發中常用的設計模式,其中model(模型)層通常需要sql和數據庫來實現。在需要與kubernetes交互的web后端系統中,由于kubernetes提供的接口是基于對象的,而不是sql接口,這導致如下問題:
2、1.web后端開發無法使用orm、數據庫連接池等廣泛使用的成熟技術,需要針對kubernetes進行單獨開發和封裝,這大大提高了開發難度和工作量;
3、2.kubernetes提供的接口無法實現關聯查詢、過濾、排序等web后端常用的查詢能力,從而導致web后端功能受限;
4、為了有效解決上述問題,現有的開發方式中,在進行寫操作時通常會在web后端數據庫和kubernetes中各存儲一份數據,通過后端程序維護兩邊的數據一致性,該方式比較容易出錯,且最終導致web后端的開發和維護成本增加。
技術實現思路
1、本申請的目的在于克服現有技術中在web后端數據庫和kubernetes中各存儲一份數據以及通過后端程序維護兩邊數據的一致性所導致的數據易錯以及web后端開發和維護成本增加的問題,提供一種將kubernetes對象同步到數據庫的方法及系統。
2、第一方面,提供了一種將kubernetes對象同步到數據庫的方法,包括:
3、獲取kubernetes對象的快照和增量更新;
4、構建ku
5、根據所述映射關系通過同步鏈路將所述快照和增量更新中kubernetes對象轉換為數據庫表中的記錄。
6、在一些可能的實現方式中,獲取kubernetes對象的快照和增量更新,包括:
7、獲取所需同步的kubernetes對象的對象類型;
8、遍歷kubernetes中所有kubernetes對象篩選出為所述對象類型的第一對象;
9、通過list接口獲取第一對象的快照;
10、根據所述第一對象的resourceversion字段對所述快照中的第一對象進行升序排序;
11、根據升序排序的順序依次將第一對象投入實時同步隊列;
12、通過watch接口以獲取以升序排序后最后一個第一對象的resourceversion值為起始點的增量更新;
13、響應于接收到增量更新,則將增量更新的對象投入實時同步隊列。
14、在一些可能的實現方式中,若未獲取到所需同步的kubernetes對象的對象類型,則將kubernetes中所有kubernetes對象作為第一對象。
15、在一些可能的實現方式中,構建kubernetes對象的對象類型與數據庫表的映射關系,包括:
16、判斷數據庫表中是否已存在與對象類型同名的數據庫表,若不存在,則創建與對象類型同名的數據庫表;
17、獲取kubernetes對象中的字段與所述數據庫表中的列之間的對應關系,若未獲取到kubernetes對象中的字段與所述數據庫表中的列之間的對應關系,則將kubernetes對象展開到二級字段,并將展開后的字段自動映射為數據庫表中的一列;
18、獲取kubernetes對應的數據庫表中的唯一id列名和值,若未獲取到kubernetes對應的數據庫表中的唯一的id列名和值,則自動生成唯一的id列名和值。
19、在一些可能的實現方式中,根據所述映射關系通過同步鏈路將所述快照和增量更新中kubernetes對象轉換為數據庫表中的記錄,包括:根據所述映射關系逐個進行kubernetes對象字段到數據庫表中列的轉換,其中,在轉換過程中針對每種數據類型進行數據類型的轉換。
20、在一些可能的實現方式中,所述數據庫表在寫入數據時進行寫入冪操作。
21、在一些可能的實現方式中,若所述同步鏈路中斷,則自動或手動重啟所述同步鏈路。
22、第二方面,提供了一種將kubernetes對象同步到數據庫的系統,包括:
23、快照模塊,用于獲取kubernetes對象的快照和增量更新;
24、配置模塊,用于構建kubernetes對象的對象類型與數據庫表的映射關系;
25、轉換模塊,用于根據所述映射關系通過同步鏈路將所述快照和增量更新中kubernetes對象轉換為數據庫表中的記錄。
26、第三方面,提供了一種計算機可讀存儲介質,所述計算機可讀介質存儲用于設備執行的程序代碼,該程序代碼包括用于執行如上述第一方面中的任意一種實現方式中方法的步驟。
27、第四方面,提供了一種電子設備,所述電子設備包括處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的程序或指令,所述程序或指令被所述處理器執行時實現如上述第一方面中的任意一種實現方式中的方法。
28、本申請具有如下有益效果:本申請搭建了一條將kubernetes中對象自動化且實時的同步到數據庫的數據同步鏈路,web后端系統所有的寫操作都能夠直接與kubernetes交互,所有的讀操作都能夠通過sql與數據庫交互,web后端系統無需再維護kubernetes與數據庫之間的數據一致性,以使得與kubernetes有交互的web后端系統開發和運維成本大大降低。
本文檔來自技高網...【技術保護點】
1.一種將Kubernetes對象同步到數據庫的方法,其特征在于,包括:
2.根據權利要求1所述的將Kubernetes對象同步到數據庫的方法,其特征在于,獲取Kubernetes對象的快照和增量更新,包括:
3.根據權利要求2所述的將Kubernetes對象同步到數據庫的方法,其特征在于,若未獲取到所需同步的Kubernetes對象的對象類型,則將Kubernetes中所有Kubernetes對象作為第一對象。
4.根據權利要求1所述的將Kubernetes對象同步到數據庫的方法,其特征在于,構建Kubernetes對象的對象類型與數據庫表的映射關系,包括:
5.根據權利要求1所述的將Kubernetes對象同步到數據庫的方法,其特征在于,根據所述映射關系通過同步鏈路將所述快照和增量更新中Kubernetes對象轉換為數據庫表中的記錄,包括:根據所述映射關系逐個進行Kubernetes對象字段到數據庫表中列的轉換,其中,在轉換過程中針對每種數據類型進行數據類型的轉換。
6.根據權利要求1所述的將Kubernetes對象
7.根據權利要求1所述的將Kubernetes對象同步到數據庫的方法,其特征在于,若所述同步鏈路中斷,則自動或手動重啟所述同步鏈路。
8.一種將Kubernetes對象同步到數據庫的系統,其特征在于,包括:
9.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質存儲用于設備執行的程序代碼,該程序代碼包括用于執行如權利要求1-7中任一項所述方法的步驟。
10.一種電子設備,其特征在于,所述電子設備包括處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的程序或指令,所述程序或指令被所述處理器執行時實現如權利要求1-7中任一項所述方法。
...【技術特征摘要】
1.一種將kubernetes對象同步到數據庫的方法,其特征在于,包括:
2.根據權利要求1所述的將kubernetes對象同步到數據庫的方法,其特征在于,獲取kubernetes對象的快照和增量更新,包括:
3.根據權利要求2所述的將kubernetes對象同步到數據庫的方法,其特征在于,若未獲取到所需同步的kubernetes對象的對象類型,則將kubernetes中所有kubernetes對象作為第一對象。
4.根據權利要求1所述的將kubernetes對象同步到數據庫的方法,其特征在于,構建kubernetes對象的對象類型與數據庫表的映射關系,包括:
5.根據權利要求1所述的將kubernetes對象同步到數據庫的方法,其特征在于,根據所述映射關系通過同步鏈路將所述快照和增量更新中kubernetes對象轉換為數據庫表中的記錄,包括:根據所述映射關系逐個進行kube...
【專利技術屬性】
技術研發人員:吳學強,
申請(專利權)人:杭州云猿生數據有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。