System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請屬于分布式架構,具體涉及一種分布式定時任務分配方法和裝置。
技術介紹
1、分布式定時框架,要求在分布式架構下的微服務集群中,單個定時任務只在集群中的一個應用節點上執行,與傳統的內存中獨立觸發的單機定時相比,分布式定時的場景更復雜,需要管理與維護集群中節點的狀態與定時任務的狀態,保證定時任務只在一個節點上執行,也往往依賴于定時任務狀態的持久化存儲。
2、當前
中的分布式定時任務的調度策略,大多是對某張數據庫表通過樂觀鎖或者悲觀鎖的競爭方式獲取到定時任務觸發執行,這種競爭方式對數據庫壓力大,負載能力差,可能會導致單臺服務運行了大多數的定時任務,集群資源出現嚴重浪費,同時,對數據庫表的悲觀鎖競爭方式,會拉長事務的時間,額外造成數據庫的壓力。
3、具體而言,基于數據庫競爭方式獲取定時任務記錄,問題有三點:
4、第一點,基于數據庫競爭方式去獲取每個微服務節點自身待處理的定時任務,對應用節點自身來說,掃描獲取的定時任務數量取決于競爭的結果,本身的資源數量會限制可以獲取到的定時任務數量,不會出現掃描到的定時任務無法執行的問題,但在資源限制范圍內,每個節點都會盡力獲取更多定時任務去執行,對于集群中的定時任務來說,就會導致集群的資源分配不均,可能某個節點在滿負載運行,但其余節點仍然空閑。
5、第二點,如果按照在觸發時間每次獲取一條的方式競爭定時任務,則在集群的資源分配上,稍好于批量獲取的模式,但對數據庫的訪問次數大幅增加,反而增加了對網絡帶寬與數據庫資源的占用。
6、第三點,
技術實現思路
1、本申請提出了一種分布式定時任務分配方法和裝置,旨在解決分布式定時場景下,定時任務在微服務集群中多個應用節點上負載不均與多節點競爭導致的執行效率降低,資源利用不充分問題,以及因為多節點頻繁并發訪問同一張數據庫表,競爭獲取定時任務導致的數據庫壓力變大,性能變差問題。
2、依據本申請的第一方面,提出了一種分布式定時任務分配方法,所述方法應用于微服務集群中的每個應用節點,所述微服務集群的數據庫中設置有節點心跳表、節點選舉表和定時任務記錄表,其中所述節點心跳表的字段包括;節點地址、節點服務啟動時間、心跳更新時間,所述節點選舉表的字段包括:集群名稱、主節點地址,所述定時任務記錄表用于存儲定時任務的狀態信息;每個應用節點服務啟動后執行如下步驟:
3、s1,啟動心跳維護線程,定時在所述節點心跳表中維護自身節點的心跳記錄;
4、s2,啟動選舉線程,利用所述節點選舉表和所述節點心跳表,定時通過選舉的方式競爭集群主節點;
5、s3,一旦選舉成為主節點,則初始化定時任務信息到所述定時任務記錄表中,并定時掃描所述定時任務記錄表獲取待執行定時任務;
6、s4,掃描所述節點心跳表獲取可用節點的數量和地址;
7、s5,根據所述可用節點的數量和地址,采用設定的分配策略將所述待執行定時任務分配給各個可用節點進行執行。。
8、依據本申請的第二方面,提出了一種分布式定時任務的分配裝置,所述裝置應用于微服務集群中的每個應用節點,所述微服務集群的數據庫中設置有節點心跳表、節點選舉表和定時任務記錄表,其中所述節點心跳表的字段包括;節點地址、節點服務啟動時間、心跳更新時間,所述節點選舉表的字段包括:集群名稱、主節點地址,所述定時任務記錄表用于存儲定時任務的狀態信息;每個應用節點包括如下單元:
9、心跳維護單元,用于服務啟動后,啟動心跳維護線程,定時在所述節點心跳表中維護自身節點的心跳記錄;
10、主節點選舉單元,用于啟動選舉線程,利用所述節點選舉表和所述節點心跳表,定時通過選舉的方式競爭集群主節點;
11、定時任務獲取單元,用于一旦選舉成為主節點,則初始化定時任務信息到所述定時任務記錄表中,并定時掃描所述定時任務記錄表獲取待執行定時任務;
12、可用節點獲取單元,用于掃描所述節點心跳表獲取可用節點的數量和地址;
13、定時任務分配單元,用于根據所述可用節點的數量和地址,采用設定的分配策略將所述待執行定時任務分配給各個可用節點進行執行。
14、依據本申請的第三方面,提出了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有一個或多個程序,在所述程序運行時控制所述計算機可讀存儲介質所在設備執行前述的方法。
15、依據本申請的第四方面,提出了一種電子設備,包括:至少一個處理器;以及,與所述至少一個處理器通信連接的存儲器;其中,所述存儲器存儲有可被所述至少一個處理器執行的指令,所述指令被所述至少一個處理器執行,以使所述至少一個處理器能夠執行前述的方法。
16、相比于現有技術,本申請方案的特點及優點是:
17、本申請方案基于在微服務集群的數據庫中設置的節點心跳表、節點選舉表和定時任務記錄表,實現了對集群中的應用節點的狀態信息、主節點信息以及定時任務的狀態信息進行管理和維護。相比于現有技術的基于數據庫競爭方式獲取定時任務記錄,本申請實施例的方案基于原有的分布式定時設計方案,將數據庫競爭模式優化為選取主節點,通過選舉的方式獲得集群主節點后,在主節點上進行定時任務的獲取和分配,優化了定時任務分配策略,既減輕了多節點基于數據庫競爭時對數據庫產生的壓力,釋放了數據庫資源,降低了數據庫節點的故障概率,綜合提升了定時任務的執行效率與數據庫性能;同時也優化了微服務集群的資源分配,由主節點統一分配資源,更為方便地對整個集群中的多個定時任務并發進行統一控制,保證了分布式定時任務在集群中的合理分配與高效觸發。
本文檔來自技高網...【技術保護點】
1.一種分布式定時任務分配方法,其特征在于,所述方法應用于微服務集群中的每個應用節點,所述微服務集群的數據庫中設置有節點心跳表、節點選舉表和定時任務記錄表,其中所述節點心跳表的字段包括;節點地址、節點服務啟動時間、心跳更新時間,所述節點選舉表的字段包括:集群名稱、主節點地址,所述定時任務記錄表用于存儲定時任務的狀態信息;每個應用節點服務啟動后執行如下步驟:
2.根據權利要求1所述的方法,其特征在于,所述步驟S2包括:
3.根據權利要求1或2所述的方法,其特征在于,所述步驟S5具體包括:
4.根據權利要求1或2所述的方法,其特征在于,所述步驟S5具體包括:
5.一種分布式定時任務的分配裝置,其特征在于,所述裝置應用于微服務集群中的每個應用節點,所述微服務集群的數據庫中設置有節點心跳表、節點選舉表和定時任務記錄表,其中所述節點心跳表的字段包括;節點地址、節點服務啟動時間、心跳更新時間,所述節點選舉表的字段包括:集群名稱、主節點地址,所述定時任務記錄表用于存儲定時任務的狀態信息;每個應用節點包括如下單元:
6.根據權利要求5所
7.根據權利要求5或6所述的裝置,其特征在于,所述定時任務分配單元具體用于:
8.根據權利要求5或6所述的裝置,其特征在于,所述定時任務分配單元具體用于:
9.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質存儲有計算機程序,所述計算機程序被處理器運行時執行如權利要求1至4任一所述的方法。
10.一種電子設備,其特征在于,包括:
...【技術特征摘要】
1.一種分布式定時任務分配方法,其特征在于,所述方法應用于微服務集群中的每個應用節點,所述微服務集群的數據庫中設置有節點心跳表、節點選舉表和定時任務記錄表,其中所述節點心跳表的字段包括;節點地址、節點服務啟動時間、心跳更新時間,所述節點選舉表的字段包括:集群名稱、主節點地址,所述定時任務記錄表用于存儲定時任務的狀態信息;每個應用節點服務啟動后執行如下步驟:
2.根據權利要求1所述的方法,其特征在于,所述步驟s2包括:
3.根據權利要求1或2所述的方法,其特征在于,所述步驟s5具體包括:
4.根據權利要求1或2所述的方法,其特征在于,所述步驟s5具體包括:
5.一種分布式定時任務的分配裝置,其特征在于,所述裝置應用于微服務集群中的每個應用節點,所述微服務集群的數...
【專利技術屬性】
技術研發人員:李輝,朱萌萌,薛亮,胡保祥,
申請(專利權)人:中國郵政儲蓄銀行股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。