<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Mossrose高可用分布式調(diào)度框架

          聯(lián)合創(chuàng)作 · 2023-09-29 15:03

          Mossrose,高可用分布式調(diào)度框架

          環(huán)境要求:

          • Zookeeper

          • Java 8

          安裝

          <dependency>
            <groupId>com.jiuxian</groupId>
            <artifactId>mossrose</artifactId>
            <version>1.1.0-RELEASE</version>
          </dependency>

          核心概念

          • SimpleJob

            • 簡單任務(wù)

          • DistributedJob

            • 分布式任務(wù),通過slice()方法將作業(yè)分隔成多個(gè)子任務(wù),子任務(wù)在集群內(nèi)分布執(zhí)行

          • MossroseProcess

            • 多個(gè)MossroseProcess組成集群,集群保證有且只有一個(gè)節(jié)點(diǎn)競選成為主節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)責(zé)觸發(fā)作業(yè);所有節(jié)點(diǎn)都是工作節(jié)點(diǎn),主節(jié)點(diǎn)觸發(fā)的任務(wù)會(huì)在所有工作節(jié)點(diǎn)上分布執(zhí)行

          • MossroseConfig

            • Mossrose配置,包括集群元信息和任務(wù)元信息

          快速上手

          實(shí)現(xiàn)一個(gè)簡單任務(wù)

          public class SomeJob implements SimpleJob {
              @Override
              public void execute() {
                  System.out.println("SimpleJob: " + UUID.randomUUID());
              }
          }

          配置任務(wù) - mossrose.yaml

          # Mossrose config info
          ---
          cluster:
            name: mossrose-example    # 集群命名空間
            loadBalancingMode: ROUND_ROBIN    # 集群負(fù)載均衡策略,可選:ROUND_ROBIN/RANDOM
          jobs:
            - id: 1   # 作業(yè)ID
              group: test # 作業(yè)分組(可選)
              cron: 0/5 * * * * ? # 作業(yè)cron表達(dá)式
              runInCluster: true  # 是否在集群中分布執(zhí)行,如果為false,則只在主節(jié)點(diǎn)上執(zhí)行
              main: com.jiuxian.mossrose.test.SomeJob # 作業(yè)類全名

          運(yùn)行mossrose主類

          public class MainTest {
              @Test
              public void test() throws Exception {
                  String zks = "localhost"; // zookeeper集群地址
                  try (MossroseProcess process = new MossroseProcess(
                          MossroseConfigFactory.fromClasspathYamlFile("mossrose.yaml"), 
                          new ZookeeperClusterDiscovery("/mossrose/jobtest", zks), zks)) {
                      process.run();
                      try {
                          // Block the unit test
                          Thread.sleep(60 * 60 * 1000);
                      } catch (InterruptedException e) {
                      }
                  }
              }
          }

          分布式任務(wù)

          實(shí)現(xiàn)一個(gè)分布式任務(wù)

          public class SomeDistributedJob implements DistributedJob {
              @Override
              public List slice() {
                  return Splitter.on(" ").splitToList("This is a test on the mossrose distributed job, how are you feeling?");
              }
              @Override
          public void execute(String item) {
                  System.out.println(Thread.currentThread() + " DistributedJob: " + item);
              }
          }
          瀏覽 22
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久精品麻豆 | 草久大香蕉啪啪91视频 | 欧美XXX黑人XYX性爽 | 一本色道久久综合亚洲精品按摩 | 国产草草 |