SchedulerX, Enterprise Distributed Application Service (EDAS) üzerine dağıtılan Spring Cloud uygulamalarında zamanlanmış işleri çalıştırmanıza olanak tanır. Bu kılavuz, bir Simple Job Single-instance Edition işi oluşturma, yerel ortamda test etme ve EDAS'a dağıtma sürecinde size rehberlik eder.
SchedulerX, Alibaba Cloud'un dağıtılmış iş zamanlama platformudur. Şu özellikleri sunar:
Dakika altı hassasiyet: Cron ifadeleri kullanarak saniye düzeyinde granülerite ile işleri zamanlayın.
Yüksek kullanılabilirlik: Yerleşik yük devretme ve güvenilir çalıştırma desteği.
Dağıtılmış yürütme modelleri: MapReduce gibi modellerle paralel iş yüklerini çalıştırın.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
EDAS etkinleştirilmiş bir Alibaba Cloud hesabı
EDAS konsolu erişimi
1. Adım: Maven projesini oluşturun
scx-example adında bir Maven projesi oluşturun.
Aşağıdaki bağımlılıkları pom.xml dosyanıza ekleyin. Bu yapılandırma, Spring Cloud Finchley.SR1 ile Spring Boot 2.1.4.RELEASE sürümünü kullanır.
<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 kullanım ömrünü tamamlamıştır. Hala Spring Cloud Edgware ile Spring Boot 1.5.x kullanıyorsanız, Spring Cloud Alibaba sürümünü 1.5.1.RELEASE olarak ayarlayın.
2. Adım: Uygulama giriş noktasını oluşturun
ScxApplication adında bir başlangıç sınıfı oluşturun:
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);
}
}
3. Adım: Test hizmeti oluşturun
TestService adında Spring tarafından yönetilen bir hizmet sınıfı oluşturun. Bu sınıf, iş sınıfında Spring Tersine Kontrol (IoC) enjeksiyonunun doğru çalıştığını doğrular.
import org.springframework.stereotype.Service;
@Service
public class TestService {
public void test() {
System.out.println("---------IOC Success--------");
}
}
4. Adım: İş işlemcisini uygulayın
ScxSimpleJobProcessor arayüzünü uygulayan SimpleTask adında bir iş sınıfı oluşturun. Bu sınıf, iş her tetiklendiğinde çalışacak mantığı tanımlar.
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);
}
}
process yöntemi, başarılı çalıştırmayı belirtmek için ProcessResult(true) döndürür. Spring, @Autowired anotasyonu aracılığıyla TestService öğesini otomatik olarak enjekte eder.
5. Adım: EDAS konsolunda zamanlanmış bir iş oluşturun
EDAS konsoluna giriş yapın.
test bölgesinde zamanlanmış bir iş grubu oluşturun ve grup kimliğini not edin.
-
İş grubunda aşağıdaki parametrelerle bir iş oluşturun:
Parametre Değer Açıklama Application ID Önceki adımdaki grup kimliği İşi iş grubunuza bağlar Processor class name SimpleTaskİş arayüzünü uygulayan tam sınıf adı Task type Stand-alone operation İşi tek bir örnekte çalıştırır cron expression 0 * * * * ?İşi her dakika bir tetikler Description (Boş bırakın) İsteğe bağlı iş açıklaması Task parameters (Boş bırakın) İsteğe bağlı çalışma zamanı parametreleri
6. Adım: Uygulamayı yapılandırın
src/main/resources dizininde aşağıdaki ayarlara sahip application.properties dosyasını oluşturun:
server.port=18033
# SchedulerX connection settings
# Replace the placeholder values with your actual namespace and group credentials.
spring.schedulerx2.endpoint=acm.aliyun.com
spring.schedulerx2.namespace=<your-namespace-id>
spring.schedulerx2.groupId=<your-group-id>
spring.schedulerx2.appKey=<your-app-key>
Aşağıdaki yer tutucuları gerçek değerlerinizle değiştirin:
| Yer Tutucu | Açıklama | Örnek |
|---|---|---|
<your-namespace-id> |
EDAS konsolundaki ad alanı kimliği | d1ce9d38-ab9b-444e-ab2a-4***** |
<your-group-id> |
Zamanlanmış iş grubunuzun grup kimliği | 5. Adımda elde edilir |
<your-app-key> |
Kimlik doğrulama için uygulama anahtarı | 5pHlwaWpluJGd39****** |
test bölgesi regionName olarak cn-test değerini kullanır. Yerel olarak test ettiğinizde, trafik izin kısıtlamaları olmadan İnternet üzerinden gider.
7. Adım: Yerel ortamda çalıştırın ve doğrulayın
Hizmeti başlatmak için ScxApplication içindeki main yöntemini çalıştırın.
IDE'nizdeki konsol çıktısını kontrol edin. İş başarıyla çalıştığında, aşağıdaki mesajlar her dakika bir yazdırılır:
-----------Hello world---------------
---------IOC Success--------
EDAS'a dağıtın
Yerel doğrulamadan sonra, herhangi bir kod veya yapılandırma değişikliği yapmadan uygulamayı EDAS'a dağıtın. SchedulerX, geliştirme ortamından EDAS'a sorunsuz geçiş destekler.
Altyapınıza göre bir dağıtım hedefi seçin:
| Dağıtım hedefi | Kılavuz |
|---|---|
| Kubernetes kümesi | Kubernetes kümelerinde uygulama oluşturma ve dağıtma |
| Elastic Compute Service (ECS) kümesi | ECS kümelerinde uygulama oluşturma ve dağıtma |
Dağıtımdan sonra, zamanlanmış işlerinizi EDAS konsolundan yönetin ve izleyin.
Üretim bölgelerine dağıtın
Yukarıdaki adımlar, geliştirme ve doğrulama için test bölgesini kullanır. Çin (Hangzhou) gibi bir üretim bölgesine dağıtmak için AccessKey kimlik bilgilerinizi application.properties dosyasına ekleyin:
spring.cloud.alicloud.access-key=<your-access-key-id>
spring.cloud.alicloud.secret-key=<your-access-key-secret>
AccessKey ID'nizi ve AccessKey gizli anahtarınızı Security Management sayfasından alın.
AccessKey kimlik bilgilerini güvenli bir şekilde saklayın. Bunları sürüm kontrolüne kaydetmekten kaçının. Üretim ortamlarında ortam değişkenleri veya bir gizli anahtar yöneticisi kullanın.
Sonraki adımlar
Uygulamayı EDAS'a dağıttıktan sonra ek SchedulerX özelliklerini keşfedin:
Simple Job Single-instance Edition dışındaki diğer iş türlerini yapılandırın.
Birden çok örnekte paralel iş yükleri çalıştırmak için MapReduce gibi dağıtılmış yürütme modelleri kurun.