日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elastic-job详解(一):数据分片

發布時間:2025/5/22 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elastic-job详解(一):数据分片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據分片的目的在于把一個任務分散到不同的機器上運行,既可以解決單機計算能力上限的問題,也能降低部分任務失敗對整體系統的影響。elastic-job并不直接提供數據處理的功能,框架只會將分片項分配至各個運行中的作業服務器(其實是Job實例,部署在一臺機器上的多個Job實例也能分片),開發者需要自行處理分片項與真實數據的對應關系。框架也預置了一些分片策略:平均分配算法策略,作業名哈希值奇偶數算法策略,輪轉分片策略。同時也提供了自定義分片策略的接口。

分片原理

elastic-job的分片是通過zookeeper來實現的。分片的分片由主節點分配,如下三種情況都會觸發主節點上的分片算法執行:

  • 新的Job實例加入集群
  • 現有的Job實例下線(如果下線的是leader節點,那么先選舉然后觸發分片算法的執行)
  • 主節點選舉

上述三種情況,會讓zookeeper上leader節點的sharding節點上多出來一個necessary的臨時節點,主節點每次執行Job前,都會去看一下這個節點,如果有則執行分片算法。

分片的執行結果會存儲在zookeeper上,如下圖,5個分片,每個分片應該由哪個Job實例來運行都已經分配好。分配的過程就是上面觸發分片算法之后的操作。分配完成之后,各個Job實例就會在下次執行的時候使用上這個分配結果。

?

每個job實例任務觸發前都會獲取本任務在本實例上的分片情況(直接和上圖zookeeper上instance節點比對某一個分片是否該有這個Job實例執行),然后封裝成shardingContext,傳遞給調用任務的實際執行方法:

/*** 執行作業.** @param shardingContext 分片上下文*/ void execute(ShardingContext shardingContext);

?

分片算法

所有的分片策略都繼承JobShardingStrategy接口。根據當前注冊到ZK的實例列表和在客戶端配置的分片數量來進行數據分片。最終將每個Job實例應該獲得的分片數字返回出去。 方法簽名如下:

/*** 作業分片.* * @param jobInstances 所有參與分片的單元列表* @param jobName 作業名稱* @param shardingTotalCount 分片總數* @return 分片結果*/Map<JobInstance, List<Integer>> sharding(List<JobInstance> jobInstances, String jobName, int shardingTotalCount);

分片函數的觸發,只會在leader選舉的時候觸發,也就是說只會在剛啟動和leader節點離開的時候觸發,并且是在leader節點上觸發,而其他節點不會觸發。

?

1. 基于平均分配算法的分片策略

基于平均分配算法的分片策略對應的類是:AverageAllocationJobShardingStrategy。它是默認的分片策略。它的分片效果如下:

  • 如果有3個Job實例, 分成9片, 則每個Job實例分到的分片是: 1=[0,1,2], 2=[3,4,5], 3=[6,7,8].
  • 如果有3個Job實例, 分成8片, 則每個Job實例分到的分片是: 1=[0,1,6], 2=[2,3,7], 3=[4,5].
  • 如果有3個Job實例, 分成10片, 則個Job實例分到的分片是: 1=[0,1,2,9], 2=[3,4,5], 3=[6,7,8].

?

2. 作業名的哈希值奇偶數決定IP升降序算法的分片策略

這個策略的對應的類是:OdevitySortByNameJobShardingStrategy,它內部其實也是使用AverageAllocationJobShardingStrategy實現,只是在傳入的節點實例順序不一樣,也就是上面接口參數的List<JobInstance>。AverageAllocationJobShardingStrategy的缺點是一旦分片數小于Job實例數,作業將永遠分配至IP地址靠前的Job實例上,導致IP地址靠后的Job實例空閑。而OdevitySortByNameJobShardingStrategy則可以根據作業名稱重新分配Job實例負載。如:

  • 如果有3個Job實例,分成2片,作業名稱的哈希值為奇數,則每個Job實例分到的分片是:1=[0], 2=[1], 3=[]
  • 如果有3個Job實例,分成2片,作業名稱的哈希值為偶數,則每個Job實例分到的分片是:3=[0], 2=[1], 1=[]

實現比較簡單:

long jobNameHash = jobName.hashCode(); if (0 == jobNameHash % 2) {Collections.reverse(jobInstances); } return averageAllocationJobShardingStrategy.sharding(jobInstances, jobName, shardingTotalCount);

?

3. 根據作業名的哈希值對Job實例列表進行輪轉的分片策略

這個策略的對應的類是:RotateServerByNameJobShardingStrategy,和上面介紹的策略一樣,內部同樣是用AverageAllocationJobShardingStrategy實現,也是在傳入的List<JobInstance>列表順序上做文章。

?

4. 自定義分片策略

除了可以使用上述分片策略之外,elastic-job還允許自定義分片策略。我們可以自己實現JobShardingStrategy接口,并且配置到分片方法上去,整個過程比較簡單,下面僅僅列出通過配置spring來切換自定義的分片算法的例子:

<job:simple id="MyShardingJob1" class="nick.test.elasticjob.MyShardingJob1" registry-center-ref="regCenter" cron="0/10 * * * * ?" sharding-total-count="5" sharding-item-parameters="0=A,1=B,2=C,3=D,4=E" job-sharding-strategy-class="nick.test.elasticjob.MyJobShardingStrategy"/>

?

轉載于:https://www.cnblogs.com/haoxinyue/p/6919375.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的elastic-job详解(一):数据分片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 泰坦尼克号3小时49分的观看方法 | 中文字幕av一区二区三区谷原希美 | 成人国产精品免费观看视频 | 免费在线播放黄色片 | 日韩精品一区在线播放 | 美女网站免费观看视频 | 又黄又爽又刺激的视频 | 国产在线视频福利 | 91好色先生tv | 极品少妇xxxx | 日本精品视频网站 | 韩国一级一片高清免费观看 | 亚洲福利一区二区三区 | 欧美乱大交xxxxx潮喷l头像 | 丰满孕妇性春猛交xx大陆 | 97精品一区 | 肉感丰满的av演员 | 五月天综合婷婷 | 日本高清视频一区二区三区 | 色视屏 | 91精品国产综合久久久蜜臀粉嫩 | 天天综合影院 | 亚洲高清毛片 | 亚洲一区图片 | 精品一区二区在线观看 | 精品蜜桃一区二区三区 | 欧美日韩高清一区二区三区 | 欧美黄大片 | 91综合国产| 久操香蕉 | 国产午夜麻豆影院在线观看 | 亚洲国产精品18久久久久久 | 校园春色亚洲 | 人人爽人人澡 | 欧美精品一区二区三区三州 | 色综合久久88 | 天天插视频 | 中文字幕一区二区人妻痴汉电车 | 另类小说色综合 | 成人香蕉视频在线观看 | 高清欧美性猛交xxxx | 绯色av一区二区三区高清 | 国产精品国产三级国产aⅴ下载 | 韩国伦理片观看 | 永久免费观看av | 亚洲女人天堂成人av在线 | 中文字幕一区二区在线视频 | www啪啪| 古装做爰无遮挡三级视频 | www.com色 | 亚洲av无码一区二区乱子伦as | 国产r级在线 | 一区二区三区高清 | 超碰cc | 欧美成人午夜免费视在线看片 | 亚洲精品在线视频 | 激情福利视频 | 亚洲免费视频一区二区 | h视频国产| 亚洲精华液一区二区 | 成人片黄网站色大片免费毛片 | 欧美精品性生活 | 欧美多人猛交狂配 | 青青青免费在线视频 | 黄色大片网站在线观看 | 成人中文字幕在线 | 麻豆成人久久精品一区二区三区 | 葵司ssni-879在线播放 | 15p亚洲| 亚洲精品鲁一鲁一区二区三区 | 午夜在线看片 | 国产在线一区不卡 | 国产一区二区三区视频在线观看 | 精品裸体舞一区二区三区 | 黑人高潮一区二区三区在线看 | 蜜桃精品噜噜噜成人av | a免费视频 | 日韩片在线| 中文字幕免费高清在线观看 | 精品一区二区无码 | 成熟丰满熟妇高潮xxxxx视频 | 久久综合亚洲精品 | 欧洲美女粗暴牲交免费观看 | 尤物影院在线观看 | 日本青草视频 | aaaaaa毛片| 肌肉猛男裸体gay网站免费 | 国产老熟妇精品观看 | 日本国产在线播放 | 爱情岛论坛永久入址在线 | 成人免费黄色网 | 激情综合网站 | 性生活视频在线播放 | 日本高清在线播放 | 天天色亚洲 | 日韩欧美在线观看一区二区三区 | 色婷婷av一区二区三区麻豆综合 | 一区二区三区视频在线观看 | 丰满双乳秘书被老板狂揉捏 |