System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本公開涉及計算機應用,特別是涉及變更事件處理方法、裝置、電子設備及程序產品。
技術介紹
1、當前,分布式平臺/集群中的眾多業務應用服務間通常基于分布式協調服務存在一定的業務處理依賴關系,由分布式協調服務監聽上游服務的事件變更并通知下游服務進行處理。
2、然而,在面對上游服務短時間高強度的變更事件通知時,由于現有分布式協調服務監聽機制的非連續性,下游服務面臨著嚴重的變更事件缺失問題。一些場景中,在下游服務異常宕機的情況下,當前的分布式協調服務也無法回溯下游服務宕機期間未處理的變更事件,從而引起下游服務的處理異常并導致一致性問題。
3、因此,亟待一種高可用的變更事件處理方案,以解決上述高強度上游事件變更通知場景中下游服務丟失變更事件的問題。
4、本
技術介紹
描述的內容僅為了便于了解本領域的相關技術,不視作對現有技術的承認。
技術實現思路
1、本公開實施例旨在提供一種分布式服務變更事件處理方法和裝置、電子設備及程序產品,其能夠減緩或解決上述提到的至少一個技術問題。
2、在第一方面,本公開實施例提供一種分布式服務變更事件處理方法,其可包括:
3、持續獲取來自上游服務的變更事件,并為每個新獲取的變更事件生成對應的的版本號;
4、將所述變更事件及對應的版本號關聯存儲到第一數據集,所述第一數據集采用鍵值對結構;
5、持續監聽下游服務處理變更事件的狀態;
6、當監聽到下游服務處理完成第一變更事件的通知時,
7、至少在預設條件下,基于所述第一數據集以及所述第二數據集,確定下游服務待處理的第二變更事件。
8、可選地,所述將所述變更事件及對應的版本號關聯存儲到第一數據集,包括:
9、記錄所述變更事件的版本號和內容到所述第一數據集中所述變更事件對應的主鍵的值中;
10、所述將所述第一變更事件的版本號記錄到第二數據集中,包括:
11、記錄所述第一變更事件的版本號和處理該變更事件的下游服務名稱到所述第二數據集中所述第一變更事件對應的映射鍵的值中,其中,所述映射鍵對應于所述第一變更事件在所述第一數據集中對應的主鍵。
12、可選地,所述基于所述第一數據集以及所述第二數據集,確定下游服務待處理的第二變更事件,包括:
13、從所述第一數據集中主鍵的值中讀取最新版本號;
14、從所述第二數據集中映射鍵的值中讀取最后處理的版本號;
15、根據所述最新版本號和所述最后處理的版本號,確定待處理的第二變更事件的版本號范圍;
16、對位于所述版本號范圍內的版本號進行排序;
17、基于所述排序,從所述第一數據集中依次獲取對應的變更事件作為下游服務待處理的第二變更事件。
18、可選地,所述基于所述第一數據集以及所述第二數據集,確定下游服務待處理的第二變更事件,包括:
19、比對所述第一數據集中的主鍵的值和所述第二數據集中的映射鍵的值,從而識別待處理的變更事件的版本號,所述待處理的變更事件的版本號在所述第一數據集中存在、但在所述第二數據集中不存在;
20、確定被識別的版本號對應的主鍵;
21、根據所確定的主鍵的值獲取變更事件內容;
22、根據獲取的變更事件內容確定下游服務待處理的第二變更事件。
23、可選地,所述方法還包括:
24、持續監聽所述第一數據集的狀態;
25、當監聽到第一數據集中的主鍵更新時,基于更新的主鍵的值中記錄的版本號,確定下游服務待處理的變更事件。
26、可選地,所述變更事件包括上游服務創建新配置或更新配置;
27、其中,每個所述配置對應一個所述主鍵,所述更新配置的內容記錄于所述主鍵的值中;
28、其中,所述下游服務在處理變更事件時使用一個或多個所述配置。
29、可選地,所述預設條件包括第一數據集中的主鍵更新、第二數據集中的映射鍵更新、第二數據集中的映射鍵在預定的時間閾值內未更新中的至少一個。
30、在第三方面,本公開實施例提供一種分布式服務變更事件處理裝置,其可包括:
31、獲取單元,用于持續獲取來自上游服務的變更事件;
32、生成單元,用于為每個新獲取的變更事件生成對應的版本號;
33、第一存儲單元,用于將所述變更事件及其版本號關聯存儲到第一數據集,所述第一數據集采用鍵值對結構;
34、監聽單元,用于持續監聽下游服務處理變更事件的狀態;
35、第二存儲單元,用于當監聽到下游服務處理完成第一變更事件的通知時,將所述當前的第一變更事件的版本號記錄到第二數據集中,所述第二數據集采用鍵值對結構;
36、確定單元,用于至少在預設條件下,基于所述第一數據集以及所述第二數據集,確定下游服務待處理的第二變更事件。
37、在第三方面,本公開實施例提供一種電子設備,其可包括:處理器和存儲有計算機程序的存儲器,所述處理器被配置為在運行計算機程序時實現如第一方面所述的方法。
38、在第四方面,本公開實施例提供一種程序產品,包括計算機程序,其中,所述計算機程序被處理器執行時實現如第一方面所述的方法。
39、本公開實施例的分布式服務變更事件處理方法能夠持續獲取來自上游服務的變更事件,并為每個新獲取的變更事件生成對應的版本號;將所述變更事件及其版本號關聯存儲到第一數據集,所述第一數據集采用鍵值對結構;持續監聽下游服務處理變更事件的狀態;當監聽到下游服務處理完成第一變更事件的通知時,將所述第一變更事件的版本號記錄到第二數據集中,所述第二數據集采用鍵值對結構;至少在預設條件下,基于所述第一數據集以及所述第二數據集,確定下游服務待處理的第二變更事件。本公開實施例的上述方法確保了變更事件的有效存儲與處理,避免了變更事件的丟失,確保了變更事件內容的正確獲取,保證了事件的唯一性和順序性。同時,本公開上述進一步實施例的方法還實現了在下游服務宕機重啟后能夠準確定位宕機期間未處理的待處理事件,更確保了變更事件的有效處理。
40、本公開實施例的其他可選特征和技術效果一部分在下文描述,一部分可通過閱讀本文而明白。
本文檔來自技高網...【技術保護點】
1.一種分布式服務變更事件處理方法,其特征在于,包括:
2.根據權利要求1所述的分布式服務變更事件處理方法,其特征在于,所述將所述變更事件及對應的版本號關聯存儲到第一數據集,包括:
3.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,
4.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于
5.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,所述方法還包括:
6.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,所述預設條件包括第一數據集中的主鍵更新、第二數據集中的映射鍵更新、第二數據集中的映射鍵在預定的時間閾值內未更新中的至少一個。
7.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,所述變更事件包括上游服務創建新配置或更新配置;
8.一種分布式服務變更事件處理裝置,其特征在于,包括:
9.一種電子設備,其特征在于,包括:處理器和存儲有計算機程序的存儲器,所述處理器被配置為在運行計算機程序時實現權利要求1-7中任一所述的方法。
...【技術特征摘要】
1.一種分布式服務變更事件處理方法,其特征在于,包括:
2.根據權利要求1所述的分布式服務變更事件處理方法,其特征在于,所述將所述變更事件及對應的版本號關聯存儲到第一數據集,包括:
3.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,
4.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于
5.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,所述方法還包括:
6.根據權利要求2所述的分布式服務變更事件處理方法,其特征在于,所述預設條件包括第一數據集中的主鍵更新...
【專利技術屬性】
技術研發人員:韓曉川,陳賀巍,高維國,
申請(專利權)人:百融至信北京科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。