全部产品
Search
文档中心

Enterprise Distributed Application Service:Implementasi penjadwalan pekerjaan

更新时间:Jul 02, 2025

SchedulerX adalah komponen inti dari Alibaba Cloud Enterprise Distributed Application Service (EDAS) yang digunakan untuk mengimplementasikan penjadwalan pekerjaan secara efisien. Topik ini menjelaskan cara menggunakan SchedulerX untuk menjadwalkan pekerjaan tipe Simple Job Single-instance Edition pada aplikasi Spring Cloud dan menerapkan aplikasi tersebut ke EDAS.

Mengapa SchedulerX?

SchedulerX adalah platform penjadwalan pekerjaan terdistribusi yang dikembangkan oleh Alibaba Cloud. SchedulerX menyediakan layanan penjadwalan dengan interval sub-menit, akurat, sangat andal, dan tersedia tinggi serta mendukung ekspresi cron. SchedulerX juga menawarkan model eksekusi pekerjaan terdistribusi seperti MapReduce.

Jadwalkan pekerjaan di lingkungan lokal Anda

  1. Buat proyek Maven bernama scx-example.

  2. Tambahkan dependensi Spring Boot 2.1.4.RELEASE dan Spring Cloud Finchley.SR1 ke file pom.xml, seperti yang ditunjukkan dalam contoh kode berikut:

     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.1.4.RELEASE</version>
         <relativePath/>
     </parent>
    
      <dependencies>
        <dependency>
          <groupId>com.aliyun.schedulerx</groupId>
          <artifactId>schedulerx2-spring-boot-starter</artifactId>
          <version>${schedulerx2.version}</version>
          <!--Jika Anda menggunakan logback, hapus log4j dan log4j2. -->
          <exclusions>
            <exclusion>
              <groupId>org.apache.logging.log4j</groupId>
              <artifactId>log4j-api</artifactId>
            </exclusion>
            <exclusion>
              <groupId>org.apache.logging.log4j</groupId>
              <artifactId>log4j-core</artifactId>
            </exclusion>
            <exclusion>
              <groupId>log4j</groupId>
              <artifactId>log4j</artifactId>
             </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
     </dependencies>
    
     <dependencyManagement>
         <dependencies>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-dependencies</artifactId>
                 <version>Finchley.SR1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>                        
    Catatan
    • Kami merekomendasikan penggunaan Spring Boot 1.5.x dan Spring Cloud Edgware daripada Spring Boot 1.x. Versi Spring Cloud Alibaba yang sesuai adalah 1.5.1.RELEASE.

    • Spring Boot 1.x telah mencapai akhir masa pakai. Oleh karena itu, kami merekomendasikan penggunaan versi Spring Boot yang lebih baru untuk mengembangkan aplikasi Anda.

  3. Buat kelas startup bernama ScxApplication untuk scx-example.

     import org.springframework.boot.SpringApplication;
     import org.springframework.boot.autoconfigure.SpringBootApplication;
    
     @SpringBootApplication
     public class ScxApplication {
         public static void main(String[] args) {
             SpringApplication.run(ScxApplication.class, args);
         }
     }               
  4. Buat kelas sederhana bernama TestService dan gunakan Spring untuk menyuntikkan kelas tersebut ke dalam Inversion of Control (IoC) pekerjaan uji.

     import org.springframework.stereotype.Service;
    
     @Service
     public class TestService {
    
         public void test() {
             System.out.println("---------IOC Berhasil--------");
         }
     }                        
  5. Buat kelas sederhana bernama SimpleTask sebagai kelas pekerjaan uji dan suntikkan TestService ke dalam kelas tersebut.

     import com.alibaba.edas.schedulerx.ProcessResult;
    import com.alibaba.schedulerx.worker.domain.JobContext;
     import com.alibaba.schedulerx.worker.processor.JavaProcessor;
     import org.springframework.beans.factory.annotation.Autowired;
    
     public class SimpleTask implements ScxSimpleJobProcessor {
    
         @Autowired
         private TestService testService;
    
         @Override
         public ProcessResult process(JobContext context) {
             System.out.println("-----------Halo dunia---------------");
             testService.test();
            return new ProcessResult(true);
         }
    
     }                        
  6. Buat pekerjaan terjadwal dan tambahkan konfigurasi yang diperlukan.

    1. Masuk ke Konsol EDAS. Di wilayah test, buat grup pekerjaan terjadwal dan catat ID grup.

    2. Di grup pekerjaan yang Anda buat, buat pekerjaan dengan menentukan parameter berikut:

      • Application ID: Pilih ID grup yang Anda buat di wilayah test.

      • Processor class name: Nama lengkap kelas yang mengimplementasikan antarmuka pemrosesan pekerjaan. Dalam contoh ini, nilainya adalah SimpleTask. Nilai ini sama dengan kelas pekerjaan uji di aplikasi.

      • Task type: Atur parameter ini ke Stand-alone operation.

      • cron expression: Nilai defaultnya adalah *0 * * * * ?*. *0 * * * * ?* menentukan bahwa pekerjaan dieksekusi sekali setiap menit.

      • Description: tidak ada.

      • Task parameters: Tidak ada.

    3. Di jalur src/main/resources proyek Maven lokal, buat file application.properties dan tambahkan konfigurasi berikut ke dalam file:

      server.port=18033
      # Tentukan wilayah (**regionName** wilayah uji adalah *cn-test*) dan ID grup (group-id) pekerjaan.
      spring.schedulerx2.endpoint=acm.aliyun.com
      spring.schedulerx2.namespace=d1ce9d38-ab9b-444e-ab2a-4*****
      spring.schedulerx2.groupId=****
      spring.schedulerx2.appKey=5pHlwaWpluJGd39******                            
  7. Jalankan fungsi utama di ScxApplication untuk memulai layanan.

Verifikasi hasil

Lihat keluaran standar di konsol IntelliJ IDEA. Anda dapat menemukan bahwa informasi uji berikut dicetak secara berkala:

-----------Halo dunia---------------
---------IOC Berhasil--------            

Terapkan aplikasi ke EDAS

SchedulerX dirancang untuk memigrasikan aplikasi dari lingkungan pengembangan ke EDAS. Anda dapat langsung menerapkan aplikasi ke EDAS tanpa mengubah kode atau konfigurasi apa pun. Untuk informasi lebih lanjut tentang metode dan langkah-langkah penerapan, lihat Ikhtisar pembuatan dan penerapan aplikasi di kluster Kubernetes dan Ikhtisar pembuatan dan penerapan aplikasi di kluster Elastic Compute Service (ECS).

Setelah aplikasi diterapkan, Anda dapat menjadwalkan pekerjaan di konsol EDAS.

Terapkan aplikasi ke EDAS di wilayah non-uji

Dalam topik ini, wilayah uji digunakan dan pengujian dilakukan melalui Internet. Anda dapat memverifikasi hasil penerapan di lingkungan lokal atau di cloud. Tidak ada batasan izin yang diberlakukan. Jika Anda ingin menerapkan aplikasi di wilayah lain, seperti China (Hangzhou), Anda harus melakukan langkah-langkah berikut saat membuat dan mengeksekusi pekerjaan terjadwal:

  1. Masuk ke Konsol EDAS. Di wilayah test, buat grup pekerjaan terjadwal dan catat ID grup.

  2. Pergi ke halaman Manajemen Keamanan dan peroleh ID AccessKey dan Rahasia AccessKey.

  3. Konfigurasikan pekerjaan terjadwal di file application.properties.

    Anda juga dapat mengonfigurasi jenis pekerjaan lain kecuali Simple Job Single-instance Edition.

  4. Di file application.properties, tambahkan ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud Anda.

    spring.cloud.alicloud.access-key=xxxxx
    spring.cloud.alicloud.secret-key=xxxxx                        

Apa yang harus dilakukan selanjutnya

Setelah aplikasi Anda diterapkan ke EDAS, Anda dapat menggunakan komponen SchedulerX untuk mengimplementasikan lebih banyak fitur penjadwalan pekerjaan.