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
Buat proyek Maven bernama
scx-example.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>CatatanKami 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.
Buat kelas startup bernama
ScxApplicationuntukscx-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); } }Buat kelas sederhana bernama
TestServicedan 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--------"); } }Buat kelas sederhana bernama
SimpleTasksebagai kelas pekerjaan uji dan suntikkanTestServiceke 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); } }Buat pekerjaan terjadwal dan tambahkan konfigurasi yang diperlukan.
Masuk ke Konsol EDAS. Di wilayah test, buat grup pekerjaan terjadwal dan catat ID grup.
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.
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******
Jalankan fungsi utama di
ScxApplicationuntuk 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:
Masuk ke Konsol EDAS. Di wilayah test, buat grup pekerjaan terjadwal dan catat ID grup.
Pergi ke halaman Manajemen Keamanan dan peroleh ID AccessKey dan Rahasia AccessKey.
Konfigurasikan pekerjaan terjadwal di file
application.properties.Anda juga dapat mengonfigurasi jenis pekerjaan lain kecuali Simple Job Single-instance Edition.
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.