Rumah >Java >javaTutorial >Cara menggunakan Spring Cloud untuk membangunkan sistem penjadualan tugas di bawah seni bina perkhidmatan mikro

Cara menggunakan Spring Cloud untuk membangunkan sistem penjadualan tugas di bawah seni bina perkhidmatan mikro

WBOY
WBOYasal
2023-06-22 17:54:541286semak imbas

Dengan pembangunan Internet, semakin banyak syarikat mula mengguna pakai seni bina perkhidmatan mikro untuk membina sistem teragih bagi meningkatkan kebolehpercayaan, kebolehskalaan dan kebolehselenggaraan aplikasi. Di bawah seni bina perkhidmatan mikro, sistem penjadualan tugas adalah komponen yang sangat penting. Ia boleh digunakan untuk melaksanakan beberapa tugas tak segerak dengan kerap, memanggil antara muka perkhidmatan mikro lain, dsb.

Spring Cloud ialah rangka kerja mikroperkhidmatan sumber terbuka yang menyediakan beberapa alatan dan rangka kerja yang sangat berkuasa, seperti Spring Cloud Netflix, Spring Cloud Config, Spring Cloud Stream, Spring Cloud Security, dsb. Antaranya, Spring Cloud Netflix ialah rangka kerja mikro yang sangat popular Ia menyediakan beberapa komponen teras dan sambungan, seperti pendaftaran perkhidmatan dan penemuan, pengimbangan beban pelanggan, pengurusan konfigurasi, pemutus litar, get laluan API, dll.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan Spring Cloud untuk membangunkan sistem penjadualan tugas, yang terutamanya termasuk kandungan berikut:

  1. Analisis keperluan sistem penjadualan tugas
  2. Penggunaan Spring Scheduler melaksanakan penjadualan tugas
  3. Letakkan sistem penjadualan tugas ke dalam seni bina mikroperkhidmatan Spring Cloud

1 Dalam seni bina perkhidmatan mikro Seterusnya, sistem penjadualan tugasan perlu menyokong fungsi berikut:

boleh mencetuskan pelaksanaan tugas pada titik masa atau saat tertentu.
  1. Menyokong mencetuskan pelaksanaan tugas pada selang masa tetap atau selang masa berkala.
  2. Menyokong percubaan semula selepas kegagalan pelaksanaan tugas.
  3. Menyokong pelaksanaan tugasan tak segerak dan tidak menjejaskan perjalanan program utama.
  4. Menyokong penambahan dinamik dan pemadaman tugas.
  5. 2. Gunakan Penjadual Musim Bunga untuk melaksanakan penjadualan tugas

Penjadual Musim Bunga ialah modul rangka kerja Penjadualan yang ringan yang boleh melaksanakan fungsi penjadualan tugas.

Tambah kebergantungan Spring Scheduler
  1. Tambahkan kebergantungan Spring Scheduler dalam fail pom.xml projek Spring Boot:
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.4.3</version>
 </dependency>

Buat tugas Kelas pelaksanaan
  1. Buat kelas pelaksanaan tugas yang diwarisi daripada antara muka Runnable untuk melaksanakan logik tugasan tertentu.
@Component
public class JobTask implements Runnable {
 
     @Override
     public void run() {
         System.out.println("running job...");
     }
 }

Tambah konfigurasi penjadualan tugas
  1. Tambah kelas konfigurasi penjadualan tugas dalam projek Spring Boot untuk mengkonfigurasi strategi dan tugas penjadualan tugas khusus untuk dilaksanakan.
@Configuration
@EnableScheduling
public class ScheduleConfig {
 
     @Autowired
     private JobTask jobTask;
 
     //在每分钟的3秒和6秒执行一次
     @Scheduled(cron = "3-6 * * * * ?")
     public void scheduleJob1() {
         jobTask.run();
     }
 
     //在间隔5秒后执行第一次,之后每隔10秒执行一次
     @Scheduled(initialDelay = 5000, fixedRate = 10000)
     public void scheduleJob2() {
         jobTask.run();
     }
 }

Uji fungsi penjadualan tugas
  1. Selepas memulakan aplikasi Spring Boot, anda boleh melihat output konsol dan tugasan akan dilaksanakan pada selang masa dan berkala yang ditentukan . Jika anda ingin mengubah suai strategi pelaksanaan tugas, anda hanya perlu mengubah suai kelas konfigurasi.

3. Letakkan sistem penjadualan tugas ke dalam seni bina perkhidmatan mikro Spring Cloud

Daftar sistem penjadualan tugas ke pusat pendaftaran perkhidmatan
  1. Dalam penjadualan tugas Dalam aplikasi sistem, komponen pendaftaran perkhidmatan dan penemuan seperti Spring Cloud's Eureka atau Consul digunakan untuk mendaftarkan sistem penjadualan tugas ke pusat pendaftaran perkhidmatan.
spring:
     application:
          name: task-scheduler
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/

Tetapkan peraturan penghalaan dalam get laluan
  1. Gunakan get laluan API seperti Spring Cloud Gateway atau Zuul untuk mendedahkan sistem penjadualan tugas kepada perkhidmatan mikro lain.
spring:
     application:
          name: api-gateway
          
 server:
     port: 8080
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/
 
 gateway:
     routes:
          - id: task-scheduler
               uri: lb://task-scheduler
               predicates:
                    - Path=/schedule/**

Panggil sistem penjadualan tugas dalam perkhidmatan mikro
  1. Dalam perkhidmatan mikro lain, gunakan alatan seperti Feign atau RestTemplate untuk memanggil API RESTful yang didedahkan oleh sistem penjadualan tugas tugas tak segerak atau mencetuskan pelaksanaan tugas.
@Service
 public class OrderService {
 
     @Autowired
     private TaskSchedulerClient taskSchedulerClient;
     
     public void createOrder(Order order) {
         //... 创建订单逻辑
         taskSchedulerClient.scheduleJob();
     }
 }

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan Spring Cloud untuk membangunkan sistem penjadualan tugas di bawah seni bina perkhidmatan mikro, terutamanya termasuk menggunakan Penjadual Spring untuk melaksanakan penjadualan tugas dan meletakkan sistem penjadualan tugas ke dalam Awan Musim Bunga Dalam seni bina perkhidmatan mikro. Saya harap ia akan membantu pembangun yang menggunakan seni bina perkhidmatan mikro, supaya mereka boleh membina sistem teragih yang sangat boleh dipercayai dan berskala dengan lebih mudah.

Atas ialah kandungan terperinci Cara menggunakan Spring Cloud untuk membangunkan sistem penjadualan tugas di bawah seni bina perkhidmatan mikro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn