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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

熟练使用 Elastic Job系列之作业分片策略(五)

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 熟练使用 Elastic Job系列之作业分片策略(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自帶的分片策略

框架默認提供了三種分片策略,所有的分片策略都是接口JobShardingStrategy的實現?

AverageAllocationJobShardingStrategy

全類路徑:?io.elasticjob.lite.api.strategy.impl.AverageAllocationJobShardingStrategy

策略說明:

  • 基于平均分配算法的分片策略,也是默認的分片策略。
  • 如果分片不能整除,則不能整除的多余分片將依次追加到序號小的服務器。如:
  • 如果有3臺服務器,分成9片,則每臺服務器分到的分片是:1=[0,1,2], 2=[3,4,5], 3=[6,7,8]
  • 如果有3臺服務器,分成8片,則每臺服務器分到的分片是:1=[0,1,6], 2=[2,3,7], 3=[4,5]
  • 如果有3臺服務器,分成10片,則每臺服務器分到的分片是:1=[0,1,2,9], 2=[3,4,5], 3=[6,7,8]
  • OdevitySortByNameJobShardingStrategy

    全類路徑:?io.elasticjob.lite.api.strategy.impl.OdevitySortByNameJobShardingStrategy

    策略說明:

  • 根據作業名的哈希值奇偶數決定IP升降序算法的分片策略。
  • 作業名的哈希值為奇數則IP升序。
  • 作業名的哈希值為偶數則IP降序。
  • 用于不同的作業平均分配負載至不同的服務器。
  • AverageAllocationJobShardingStrategy VS OdevitySortByNameJobShardingStrategy

    AverageAllocationJobShardingStrategy的缺點是,一旦分片數小于作業服務器數,作業將永遠分配至IP地址靠前的服務器,導致IP地址靠后的服務器空閑。而OdevitySortByNameJobShardingStrategy則可以根據作業名稱重新分配服務器負載。如:

    如果有3臺服務器,分成2片,作業名稱的哈希值為奇數,則每臺服務器分到的分片是:1=[0], 2=[1], 3=[]

    如果有3臺服務器,分成2片,作業名稱的哈希值為偶數,則每臺服務器分到的分片是:3=[0], 2=[1], 1=[]

    RotateServerByNameJobShardingStrategy

    全類路徑:?io.elasticjob.lite.api.strategy.impl.RotateServerByNameJobShardingStrategy

    策略說明:

    根據作業名的哈希值對服務器列表進行輪轉的分片策略。

    運維平臺與分片

    回到熟練使用 Elastic Job系列之入門Demo(三)?文章的實例demo, 在項目中有通過sharding-total-count=來設置作業分片數, 如圖所示,??從配置中可以知道zookeeper注冊中心地址名稱空間, 以及作業的分片數目。在這里為了模擬多機器部署,先對工程進行maven打包, 然后在本機啟動項目,同時把打的jar包丟到虛擬機里執行?

    ?![](p3-juejin.byteimg.com/tos-cn-i-k3…

    這樣在2臺不同的機器上啟動了同一個作業服務,打開Elastic Job運維平臺,注冊中心配置內容為之前applicationContext.xml的配置內容,點擊連接進入??此時可以看到具體的作業信息??還可以看到有幾個服務器在執行這個作業??其中99.1是我的本地電腦, 102是我的虛擬機。

    那么服務器和作業分片是什么樣的關系了, 回顧上下文可以了解到, 作業的分片數是3, 機器實例是2臺,默認的分片策略是AverageAllocationJobShardingStrategy,所以通過運維平臺查看作業詳情如下, 和AverageAllocationJobShardingStrategy的策略描述是相符合的。?

    自定義分片策略

    實現JobShardingStrateg接口并實現sharding方法即可,可以根據需求定制化自己的分片策略。與配置通常的作業屬性相同,在spring命名空間或者JobConfiguration中配置jobShardingStrategyClass屬性,屬性值是作業分片策略類的全路徑。

    ??這里代碼的含義是吧所有的分片都分配給192.168.104.102這臺機器上。

    同樣也是想把項目打成jar包, 分別為本地項目IDEA直接啟動,jar包在虛擬機啊里通過java -jar方式啟動??可以發現控制臺打印輸出了自定義分片策略代碼中的日志,此時連接運維平臺查看,這里配置有修改,稍后可以自行下載源碼查看調試。??

    最后小編在學習過程中整理了一些學習資料,可以分享給做軟件測試工程師的朋友們,相互交流學習,需要的可以加入我的學習交流群 323432957 或加微dingyu-002即可免費獲取Python自動化測開及Java自動化測開學習資料(里面有功能測試、性能測試、python自動化、java自動化、測試開發、接口測試、APP測試等多個知識點的架構資料)

    總結

    以上是生活随笔為你收集整理的熟练使用 Elastic Job系列之作业分片策略(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

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