本發(fā)明公開一種基于令牌桶的元數(shù)據(jù)操作流控方法,涉及數(shù)據(jù)管理。
背景技術:
1、在目前云存儲方面,常常涉及到多個客戶端對同一個存儲集群的服務器資源的使用,而這種存儲集群的服務器資源是有限的。比如當某一個客戶端使用壓力偏高時,會對其他客戶端的使用產(chǎn)生負面的影響,由此產(chǎn)生的資源爭搶和資源占用會影響客戶端的使用性能和用戶體驗。并且長時間處于過高的壓力負載會占用元數(shù)據(jù)服務器的計算能力,從而增加元數(shù)據(jù)服務器在高壓力場景下出現(xiàn)問題的概率。
技術實現(xiàn)思路
1、本發(fā)明針對現(xiàn)有技術的問題,提供一種基于令牌桶的元數(shù)據(jù)操作流控方法,有效控制各客戶端的對存儲節(jié)點的計算資源占用,避免爭搶產(chǎn)生的資源浪費,從而提升用戶體驗,同時也在一定程度上控制元數(shù)據(jù)服務器的負載壓力,降低由于高負載場景產(chǎn)生問題的概率。
2、本發(fā)明提出的具體方案是:
3、本發(fā)明提供一種基于令牌桶的元數(shù)據(jù)操作流控方法,包括:
4、步驟1:定義令牌和令牌桶:通過令牌桶存放令牌,聲明令牌桶結構,令牌桶結構包含添加令牌總數(shù)、令牌鎖、可用令牌數(shù)量、添加令牌周期、令牌桶容量和等待令牌隊列,
5、聲明獲取令牌接口和添加令牌接口,
6、步驟2:定義流控邏輯:通過獲取令牌接口使客戶端獲取令牌之后執(zhí)行元數(shù)據(jù)操作請求的處理邏輯,通過添加令牌接口控制令牌桶內令牌的數(shù)量,
7、步驟3:為客戶端的元數(shù)據(jù)操作添加流控邏輯,控制客戶端對集群存儲節(jié)點的計算資源占用。
8、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法的步驟1中聲明令牌桶結構,包括:通過添加令牌總數(shù)表示每秒共添加的令牌總數(shù)量;
9、通過令牌鎖表示獨占鎖,并在修改令牌桶屬性,獲取令牌及添加令牌中上鎖;
10、通過添加令牌周期表示兩次添加令牌的時間間隔,每次添加的令牌為添加令牌數(shù)量在周期內應添加的令牌數(shù)量;
11、通過可用令牌數(shù)量表示令牌桶中可用于客戶端元數(shù)據(jù)操作的令牌數(shù)量;
12、通過令牌桶容量表示當前令牌桶最多的令牌數(shù)量;
13、當獲取令牌失敗時,對應的元數(shù)據(jù)操作將被添加到等待令牌隊列。
14、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法的步驟2中定義流控邏輯,包括:定義獲取令牌函數(shù),實現(xiàn)客戶端請求獲取令牌,如果獲取令牌成功,則執(zhí)行后續(xù)的元數(shù)據(jù)操作請求的處理邏輯;
15、否則,執(zhí)行獲取令牌失敗的邏輯:嘗試從可用令牌數(shù)量中獲取令牌,如果獲取到令牌,則執(zhí)行后續(xù)的元數(shù)據(jù)操作請求的處理邏輯并更新可用令牌數(shù)量,如果仍獲取令牌失敗時,則將對應的元數(shù)據(jù)操作添加到等待令牌隊列,等待執(zhí)行下次獲取令牌的操作。
16、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法的步驟2中定義流控邏輯,包括:創(chuàng)建線程每隔添加令牌周期調用添加令牌接口向令牌桶中添加可用令牌數(shù)量,
17、執(zhí)行等待令牌隊列中元數(shù)據(jù)操作請求,將獲取令牌成功的元數(shù)據(jù)操作請求移除等待令牌隊列。
18、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法的所述步驟2中定義流控邏輯,包括:定義獲取令牌失敗回調函數(shù),當客戶端的元數(shù)據(jù)操作請求在令牌獲取不全或失敗,并待下一次添加令牌時,調用回調函數(shù),將元數(shù)據(jù)操作請求需要獲取的令牌數(shù)添加到令牌桶中,等待下次執(zhí)行時通過令牌桶按照元數(shù)據(jù)操作請求需要獲取的令牌數(shù)緩存令牌,使元數(shù)據(jù)操作請求直接獲取令牌桶緩存令牌。
19、本發(fā)明還提供一種基于令牌桶的元數(shù)據(jù)操作流控裝置,包括令牌桶管理模塊、流控管理模塊和資源控制模塊,
20、令牌桶管理模塊定義令牌和令牌桶:通過令牌桶存放令牌,聲明令牌桶結構,令牌桶結構包含添加令牌總數(shù)、令牌鎖、可用令牌數(shù)量、添加令牌周期、令牌桶容量和等待令牌隊列,
21、聲明獲取令牌接口和添加令牌接口,
22、流控管理模塊定義流控邏輯:通過獲取令牌接口使客戶端獲取令牌之后執(zhí)行元數(shù)據(jù)操作請求的處理邏輯,通過添加令牌接口控制令牌桶內令牌的數(shù)量,
23、資源控制模塊為客戶端的元數(shù)據(jù)操作添加流控邏輯,控制客戶端對集群存儲節(jié)點的計算資源占用。
24、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置的令牌桶管理模塊聲明令牌桶結構,包括:通過添加令牌總數(shù)表示每秒共添加的令牌總數(shù)量;
25、通過令牌鎖表示獨占鎖,并在修改令牌桶屬性,獲取令牌及添加令牌中上鎖;
26、通過添加令牌周期表示兩次添加令牌的時間間隔,每次添加的令牌為添加令牌數(shù)量在周期內應添加的令牌數(shù)量;
27、通過可用令牌數(shù)量表示令牌桶中可用于客戶端元數(shù)據(jù)操作的令牌數(shù)量;
28、通過令牌桶容量表示當前令牌桶最多的令牌數(shù)量;
29、當獲取令牌失敗時,對應的元數(shù)據(jù)操作將被添加到等待令牌隊列。
30、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置的流控管理模塊定義流控邏輯,包括:定義獲取令牌函數(shù),實現(xiàn)客戶端請求獲取令牌,如果獲取令牌成功,則執(zhí)行后續(xù)的元數(shù)據(jù)操作請求的處理邏輯;
31、否則,執(zhí)行獲取令牌失敗的邏輯:嘗試從可用令牌數(shù)量中獲取令牌,如果獲取到令牌,則執(zhí)行后續(xù)的元數(shù)據(jù)操作請求的處理邏輯并更新可用令牌數(shù)量,如果仍獲取令牌失敗時,則將對應的元數(shù)據(jù)操作添加到等待令牌隊列,等待執(zhí)行下次獲取令牌的操作。
32、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置的流控管理模塊定義流控邏輯,包括:創(chuàng)建線程每隔添加令牌周期調用添加令牌接口向令牌桶中添加可用令牌數(shù)量,
33、執(zhí)行等待令牌隊列中元數(shù)據(jù)操作請求,將獲取令牌成功的元數(shù)據(jù)操作請求移除等待令牌隊列。
34、進一步,所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置的流控管理模塊定義流控邏輯,包括:定義獲取令牌失敗回調函數(shù),當客戶端的元數(shù)據(jù)操作請求在令牌獲取不全或失敗,并待下一次添加令牌時,調用回調函數(shù),將元數(shù)據(jù)操作請求需要獲取的令牌數(shù)添加到令牌桶中,等待下次執(zhí)行時通過令牌桶按照元數(shù)據(jù)操作請求需要獲取的令牌數(shù)緩存令牌,使元數(shù)據(jù)操作請求直接獲取令牌桶緩存令牌。
35、本發(fā)明的有益之處是:
36、本發(fā)明在元數(shù)據(jù)請求訪問時,如果獲取令牌成功則繼續(xù)執(zhí)行讀寫業(yè)務邏輯,否則將待獲取令牌轉為令牌桶緩存令牌,等待下一個添加令牌周期執(zhí)行,通過限制客戶端可使用的最大元數(shù)據(jù)資源,減少因單一客戶端的元數(shù)據(jù)操作壓力過大而對其他客戶端使用影響的情況;
37、同時,由于對單一客戶端可使用元數(shù)據(jù)資源設置使用上限,元數(shù)據(jù)服務器的壓力可控,從而一定程度上降低因高壓力場景下出現(xiàn)問題的概率。
1.一種基于令牌桶的元數(shù)據(jù)操作流控方法,其特征是包括:
2.根據(jù)權利要求1所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法,其特征是步驟1中聲明令牌桶結構,包括:通過添加令牌總數(shù)表示每秒共添加的令牌總數(shù)量;
3.根據(jù)權利要求2所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法,其特征是步驟2中定義流控邏輯,包括:定義獲取令牌函數(shù),實現(xiàn)客戶端請求獲取令牌,如果獲取令牌成功,則執(zhí)行后續(xù)的元數(shù)據(jù)操作請求的處理邏輯;
4.根據(jù)權利要求2所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法,其特征是步驟2中定義流控邏輯,包括:創(chuàng)建線程每隔添加令牌周期調用添加令牌接口向令牌桶中添加可用令牌數(shù)量,
5.根據(jù)權利要求1所述的一種基于令牌桶的元數(shù)據(jù)操作流控方法,其特征是所述步驟2中定義流控邏輯,包括:定義獲取令牌失敗回調函數(shù),當客戶端的元數(shù)據(jù)操作請求在令牌獲取不全或失敗,并待下一次添加令牌時,調用回調函數(shù),將元數(shù)據(jù)操作請求需要獲取的令牌數(shù)添加到令牌桶中,等待下次執(zhí)行時通過令牌桶按照元數(shù)據(jù)操作請求需要獲取的令牌數(shù)緩存令牌,使元數(shù)據(jù)操作請求直接獲取令牌桶緩存令牌。
6.一種基于令牌桶的元數(shù)據(jù)操作流控裝置,其特征是包括令牌桶管理模塊、流控管理模塊和資源控制模塊,
7.根據(jù)權利要求6所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置,其特征是令牌桶管理模塊聲明令牌桶結構,包括:通過添加令牌總數(shù)表示每秒共添加的令牌總數(shù)量;
8.根據(jù)權利要求7所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置,其特征是流控管理模塊定義流控邏輯,包括:定義獲取令牌函數(shù),實現(xiàn)客戶端請求獲取令牌,如果獲取令牌成功,則執(zhí)行后續(xù)的元數(shù)據(jù)操作請求的處理邏輯;
9.根據(jù)權利要求7所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置,其特征是流控管理模塊定義流控邏輯,包括:創(chuàng)建線程每隔添加令牌周期調用添加令牌接口向令牌桶中添加可用令牌數(shù)量,
10.根據(jù)權利要求7所述的一種基于令牌桶的元數(shù)據(jù)操作流控裝置,其特征是流控管理模塊定義流控邏輯,包括:定義獲取令牌失敗回調函數(shù),當客戶端的元數(shù)據(jù)操作請求在令牌獲取不全或失敗,并待下一次添加令牌時,調用回調函數(shù),將元數(shù)據(jù)操作請求需要獲取的令牌數(shù)添加到令牌桶中,等待下次執(zhí)行時通過令牌桶按照元數(shù)據(jù)操作請求需要獲取的令牌數(shù)緩存令牌,使元數(shù)據(jù)操作請求直接獲取令牌桶緩存令牌。