SchedulerX memungkinkan Anda menjalankan pekerjaan terjadwal dalam aplikasi Spring Cloud yang diterapkan ke Enterprise Distributed Application Service (EDAS). Panduan ini akan memandu Anda membuat pekerjaan Simple Job Single-instance Edition, mengujinya secara lokal, dan menerapkannya ke EDAS.
SchedulerX adalah platform penjadwalan pekerjaan terdistribusi Alibaba Cloud yang menyediakan:
Presisi sub-menit: Jadwalkan pekerjaan dengan granularitas tingkat detik menggunakan ekspresi cron.
Ketersediaan tinggi: Dilengkapi failover bawaan dan eksekusi yang andal.
Model eksekusi terdistribusi: Jalankan beban kerja paralel dengan model seperti MapReduce.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Akun Alibaba Cloud dengan EDAS yang telah diaktifkan.
Akses ke EDAS console.
Langkah 1: Buat proyek Maven
Buat proyek Maven bernama scx-example.
Tambahkan dependensi berikut ke file pom.xml. Konfigurasi ini menggunakan Spring Boot 2.1.4.RELEASE dengan Spring Cloud Finchley.SR1.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!-- SchedulerX Spring Boot starter -->
<dependency>
<groupId>com.aliyun.schedulerx</groupId>
<artifactId>schedulerx2-spring-boot-starter</artifactId>
<version>${schedulerx2.version}</version>
<!-- Exclude log4j if you use Logback -->
<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>Spring Boot 1.x telah mencapai akhir masa dukungan. Jika Anda masih menggunakan Spring Boot 1.5.x dengan Spring Cloud Edgware, atur versi Spring Cloud Alibaba ke 1.5.1.RELEASE.
Langkah 2: Buat titik masuk aplikasi
Buat kelas startup bernama ScxApplication:
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);
}
}Langkah 3: Buat layanan pengujian
Buat kelas layanan yang dikelola Spring bernama TestService. Kelas ini memvalidasi bahwa injeksi Spring Inversion of Control (IoC) berfungsi dengan benar di dalam kelas pekerjaan.
import org.springframework.stereotype.Service;
@Service
public class TestService {
public void test() {
System.out.println("---------IOC Success--------");
}
}Langkah 4: Implementasikan prosesor pekerjaan
Buat kelas pekerjaan bernama SimpleTask yang mengimplementasikan ScxSimpleJobProcessor. Kelas ini mendefinisikan logika yang dijalankan setiap kali pekerjaan dipicu.
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("-----------Hello world---------------");
testService.test();
return new ProcessResult(true);
}
}Metode process mengembalikan ProcessResult(true) untuk menunjukkan eksekusi yang berhasil. Spring secara otomatis menginjeksikan TestService melalui anotasi @Autowired.
Langkah 5: Buat pekerjaan terjadwal di EDAS console
Masuk ke EDAS console.
Di wilayah test, buat grup pekerjaan terjadwal dan catat ID grup tersebut.
Di dalam grup pekerjaan, buat pekerjaan dengan parameter berikut:
Parameter Nilai Deskripsi Application ID ID grup dari langkah sebelumnya Menautkan pekerjaan ke grup pekerjaan Anda Processor class name SimpleTaskNama kelas lengkap yang mengimplementasikan antarmuka pekerjaan Task type Stand-alone operation Menjalankan pekerjaan pada satu instans cron expression 0 * * * * ?Mememicu pekerjaan sekali setiap menit Description (Kosongkan) Deskripsi pekerjaan opsional Task parameters (Kosongkan) Parameter waktu proses opsional
Langkah 6: Konfigurasi aplikasi
Di src/main/resources, buat file application.properties dengan pengaturan berikut:
server.port=18033
# Pengaturan koneksi SchedulerX
# Ganti nilai placeholder dengan namespace dan kredensial grup aktual Anda.
spring.schedulerx2.endpoint=acm.aliyun.com
spring.schedulerx2.namespace=<your-namespace-id>
spring.schedulerx2.groupId=<your-group-id>
spring.schedulerx2.appKey=<your-app-key>Ganti placeholder berikut dengan nilai aktual Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<your-namespace-id> | ID namespace dari EDAS console | d1ce9d38-ab9b-444e-ab2a-4***** |
<your-group-id> | ID grup dari grup pekerjaan terjadwal Anda | Diperoleh di Langkah 5 |
<your-app-key> | Kunci aplikasi untuk otentikasi | 5pHlwaWpluJGd39****** |
Wilayah test menggunakan cn-test sebagai regionName-nya. Saat Anda menguji secara lokal, lalu lintas melewati Internet tanpa batasan izin.Langkah 7: Jalankan dan verifikasi secara lokal
Jalankan metode main di ScxApplication untuk memulai layanan.
Periksa output konsol di IDE Anda. Ketika pekerjaan berhasil dijalankan, pesan berikut akan dicetak sekali setiap menit:
-----------Hello world---------------
---------IOC Success--------Terapkan ke EDAS
Setelah verifikasi lokal selesai, terapkan aplikasi ke EDAS tanpa mengubah kode atau konfigurasi apa pun. SchedulerX mendukung migrasi mulus dari lingkungan pengembangan ke EDAS.
Pilih target penerapan berdasarkan infrastruktur Anda:
| Target penerapan | Panduan |
|---|---|
| Kluster Kubernetes | Buat dan terapkan aplikasi di kluster Kubernetes |
| Kluster Elastic Compute Service (ECS) | Buat dan terapkan aplikasi di kluster ECS |
Setelah penerapan, kelola dan pantau pekerjaan terjadwal Anda dari EDAS console.
Terapkan ke wilayah produksi
Langkah-langkah di atas menggunakan wilayah test untuk pengembangan dan verifikasi. Untuk menerapkan ke wilayah produksi seperti China (Hangzhou), tambahkan kredensial AccessKey Anda ke file application.properties:
spring.cloud.alicloud.access-key=<your-access-key-id>
spring.cloud.alicloud.secret-key=<your-access-key-secret>Dapatkan ID AccessKey dan Rahasia AccessKey Anda dari halaman Security Management.
Simpan kredensial AccessKey secara aman. Hindari menyimpannya di sistem kontrol versi. Gunakan variabel lingkungan atau secrets manager di lingkungan produksi.
Langkah selanjutnya
Setelah menerapkan aplikasi ke EDAS, jelajahi kemampuan SchedulerX tambahan:
Konfigurasikan jenis pekerjaan lain selain Simple Job Single-instance Edition.
Siapkan model eksekusi terdistribusi seperti MapReduce untuk menjalankan beban kerja paralel di beberapa instans.