Topik ini menjelaskan cara menyambungkan aplikasi Go ke SchedulerX menggunakan Go SDK.
Konfigurasi konsol
-
Lihat Buat aplikasi untuk membuat aplikasi standar, lalu ikuti Langkah 2 guna menemukan informasi konfigurasinya.
Pada daftar aplikasi, temukan aplikasi target dan klik Access Configuration di kolom Operation.
Pilih Golang untuk mendapatkan parameter koneksi berikut.
Endpoint: acm.aliyun.com, Namespace: 433d8b23-xxx-a-90d4d1b9a4af, GroupId: xxl-job-test, AppKey: b0iXMY3Bxxx+Gew==, -
Untuk membuat Go job, lihat Manajemen job.
Pada langkah Konfigurasi Dasar, atur Job Name menjadi
hellogo, pilih Application target, atur Job Type menjadi golang, atur Task Name menjadiHelloWorld, atur Execution mode menjadi Standalone, atur Priority menjadi Medium, dan tentukan Job parameters sesuai kebutuhan.
Integrasi client
-
Jalankan perintah berikut untuk mengambil versi terbaru SchedulerX Go SDK dengan menentukan tag tertentu.
go get github.com/alibaba/schedulerx-worker-go@{LATEST_TAG}Atau, jalankan perintah berikut untuk mengambil branch tertentu.
go get github.com/alibaba/schedulerx-worker-go@{BRANCH_NAME} -
Tulis logika bisnis Anda dengan mengimplementasikan antarmuka
Processor.type Processor interface { Process(ctx *processor.JobContext) (*ProcessResult, error) }Contoh:
package main import ( "fmt" "github.com/alibaba/schedulerx-worker-go/processor" "github.com/alibaba/schedulerx-worker-go/processor/jobcontext" "time" ) var _ processor.Processor = &HelloWorld{} type HelloWorld struct{} func (h *HelloWorld) Process(ctx *jobcontext.JobContext) (*processor.ProcessResult, error) { fmt.Println("[Process] Start process my task: Hello world!") // mock execute task time.Sleep(3 * time.Second) ret := new(processor.ProcessResult) ret.SetStatus(processor.InstanceStatusSucceed) fmt.Println("[Process] End process my task: Hello world!") return ret, nil } -
Daftarkan client dan job. Nama task harus sesuai dengan nama yang dikonfigurasi di konsol.
package main import ( "github.com/alibaba/schedulerx-worker-go" ) func main() { // Ini hanya contoh, dapatkan konfigurasi aktual dari konsol cfg := &schedulerx.Config{ Endpoint: "acm.aliyun.com", Namespace: "433d8b23-xxx-xxx-xxx-90d4d1b9a4af", GroupId: "xueren_sub", AppKey: "xxxxxx", } client, err := schedulerx.GetClient(cfg) if err != nil { panic(err) } task := &HelloWorld{} // Daftarkan task menggunakan nama yang sesuai dengan yang dikonfigurasi di konsol. client.RegisterTask("HelloWorld", task) select {} }
Parameter konfigurasi client
|
Parameter |
API |
Deskripsi |
|
Custom port |
config.WithGrpcPort |
Untuk job non-standalone, worker saling berkomunikasi. Anda dapat menentukan port untuk komunikasi ini. Jika tidak ditentukan, port idle acak akan digunakan. |
|
Custom NIC |
config.WithIface |
Jika mesin memiliki beberapa Network Interface Controller (NIC), tentukan NIC berdasarkan nama untuk menggunakan alamat IP-nya. |
|
Custom tag |
config.WithLabel |
Anda dapat melampirkan tag ke client dan mengonfigurasi job agar hanya berjalan pada client dengan tag tersebut. Fitur ini umum digunakan untuk rilis canary dan pengujian. |
Contoh:
func main() {
// Ini hanya contoh, dapatkan konfigurasi aktual dari konsol
cfg := &schedulerx.Config{
Endpoint: "acm.aliyun.com",
Namespace: "fa6ed99e-xxxxxx-a2bf1659d039",
GroupId: "xueren_test_sub",
AppKey: "myV5K5Xaf1kxxxxxxxx",
}
client, err := schedulerx.GetClient(cfg, schedulerx.WithWorkerConfig(config.NewWorkerConfig(
config.WithGrpcPort(8001),
config.WithIface("eth0")))),
config.WithLabel("test")
if err != nil {
panic(err)
}
// Nama task, TestMapReduceJob, harus sesuai dengan nama yang dikonfigurasi di konsol.
task := &TestMapReduceJob{
mapjob.NewMapReduceJobProcessor(), // FIXME how define user behavior
}
client.RegisterTask("TestMapReduceJob", task)
select {}
}
Verifikasi hasil
-
Setelah mengonfigurasi client, deploy aplikasi ke Alibaba Cloud.
Masuk ke Konsol MSE SchedulerX.
-
Di bilah navigasi atas, pilih wilayah.
-
Di panel navigasi kiri, klik Application Management.
-
Pada halaman Application Management, periksa nilai Total number of instances.
-
Jika Total number of instances bernilai 0, aplikasi gagal tersambung. Periksa konfigurasi client Anda.
-
Nilai lebih dari 0 pada Total number of instances menunjukkan koneksi berhasil dan merepresentasikan jumlah instans yang tersambung. Di kolom Actions, klik View instances untuk melihat daftar detail di kotak dialog Connect to an instance.
-
Langkah selanjutnya
Setelah aplikasi tersambung ke SchedulerX, Anda dapat membuat tugas penjadwalan di Platform Penjadwalan Tugas Terdistribusi. Untuk informasi selengkapnya, lihat Buat tugas penjadwalan.