Topik ini menjelaskan cara menghubungkan aplikasi Golang ke SchedulerX menggunakan SDK untuk Golang.
Prosedur
Buat aplikasi umum dan kueri konfigurasinya. Untuk informasi selengkapnya, lihat bagian Buat aplikasi pada topik manajemen aplikasi dan bagian Langkah 2 pada topik Menghubungkan ke SchedulerX melalui Internet dari lingkungan on-premises.


Buat job Golang. Untuk informasi selengkapnya, lihat Manajemen job.

Akses client
Jalankan perintah berikut untuk mendapatkan SchedulerX SDK untuk Go menggunakan tag terbaru:
go get github.com/alibaba/schedulerx-worker-go@{Latest tag}Atau, jalankan perintah berikut untuk mendapatkan paket branch SDK untuk Golang beserta dependensinya:
go get github.com/alibaba/schedulerx-worker-go@{Branch name}Tulis kode layanan untuk mengimplementasikan antarmuka
Processor.type Processor interface { Process(ctx *processor.JobContext) (*ProcessResult, error) }Kode 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 job Golang ke client. Nama job harus sama dengan yang Anda tentukan di Konsol.
package main import ( "github.com/alibaba/schedulerx-worker-go" ) func main() { // Ini hanya contoh, konfigurasi sebenarnya perlu diperoleh dari platform 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{} // Tentukan nama untuk job Anda dan daftarkan ke client. Nama job harus sama dengan yang Anda tentukan di Konsol. client.RegisterTask("HelloWorld", task) select {} }
Parameter client
Parameter | Operasi | Deskripsi |
Custom port | config.WithGrpcPort | Job non-standalone yang berjalan pada multiple worker perlu saling terhubung. Untuk menghubungkan job tersebut, Anda harus menentukan sebuah port. Jika Anda tidak menentukan port, sistem akan memilih port idle secara acak. |
Custom NIC | config.WithIface | Jika sebuah worker memiliki multiple network interface controllers (NICs) dan Anda ingin menggunakan NIC tertentu, Anda dapat menentukan nama kustom untuk NIC tersebut guna mendapatkan alamat IP-nya. |
Custom tag | config.WithLabel | Anda dapat menambahkan tag ke client dan mengonfigurasi penjadwalan job berdasarkan tag tertentu. Tag cocok digunakan dalam skenario rilis canary dan pengujian. |
Kode contoh:
func main() {
// Ini hanya contoh, konfigurasi sebenarnya perlu diperoleh dari platform
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 TestMapReduceJob yang didaftarkan di sini harus konsisten dengan yang dikonfigurasi di platform
task := &TestMapReduceJob{
mapjob.NewMapReduceJobProcessor(), // FIXME how define user behavior
}
client.RegisterTask("TestMapReduceJob", task)
select {}
}Verifikasi hasil
Publikasikan aplikasi ke Alibaba Cloud.
Masuk ke Konsol SchedulerX.
Pada bilah navigasi atas, pilih Wilayah.
Pada panel navigasi kiri, klik Application Management.
Pada halaman Application Management, periksa jumlah total pelaksana.
Jika jumlah total pelaksana adalah 0, aplikasi gagal terhubung. Periksa dan perbaiki aplikasi.
Jika jumlah total pelaksana bukan 0, aplikasi berhasil terhubung.
Langkah selanjutnya
Setelah aplikasi terhubung ke SchedulerX, Anda dapat membuat job di Konsol SchedulerX. Untuk informasi selengkapnya, lihat bagian "Buat job" pada topik Manajemen job.