Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Durable Functions adalah ekstensi Azure Functions yang menambahkan kemampuan orkestrasi stateful ke aplikasi fungsi Anda. Aplikasi Durable Functions terdiri dari berbagai fungsi Azure, masing-masing memainkan peran tertentu: orkestrator, aktivitas, entitas, atau klien. Peran ini sesuai dengan jenis trigger dan pengikatan khusus yang disediakan oleh ekstensi Durable Functions.
Durable Task SDK memungkinkan Anda membangun aplikasi yang stateful dan toleran terhadap kesalahan pada platform komputasi apa pun. Aplikasi Anda mendefinisikan orkestrator, aktivitas, dan entitas sebagai kelas atau fungsi yang Anda daftarkan dengan pekerja. API klien terpisah memungkinkan Anda memulai dan mengelola instans orkestrasi.
Tabel berikut ini meringkas komponen pemrograman inti dan perannya:
| Komponen | Peranan | Ditentukan oleh |
|---|---|---|
| Orkestrator | Mengkoordinasikan logika alur kerja | Pemicu orkestrasi |
| Aktivitas | Menjalankan satu unit pekerjaan | Pemicu aktivitas |
| Entitas | Mengelola bagian kecil keadaan | Pemicu entitas |
| Client | Memulai dan mengelola orkestrasi dan entitas | Pengikatan klien yang tahan lama |
| Komponen | Peranan | Ditentukan oleh |
|---|---|---|
| Orkestrator | Mengkoordinasikan logika alur kerja | Kelas atau fungsi yang terdaftar di pekerja |
| Aktivitas | Menjalankan satu unit pekerjaan | Kelas atau fungsi yang terdaftar di pekerja |
| Entitas | Mengelola bagian kecil keadaan | Kelas yang terdaftar dengan pekerja |
| Client | Memulai dan mengelola orkestrasi dan entitas |
DurableTaskClient Antarmuka Pemrograman Aplikasi (API) |
Orkestrator
Orkestrator menentukan alur kerja: tindakan apa yang harus diambil, dalam urutan apa, dan cara menangani hasilnya. Anda menulis logika orkestrator sebagai kode biasa menggunakan konstruksi aliran kontrol standar seperti perulangan, kondisional, dan blok coba/tangkap.
Orkestrator dapat menjadwalkan beberapa jenis tugas:
- Aktivitas untuk menjalankan pekerjaan
- Sub-orkestrasi untuk menyusun alur kerja yang lebih kecil
- Timer andal untuk penundaan dan batas waktu
- Peristiwa eksternal untuk menunggu sinyal dari luar orkestrasi
Orkestrator juga dapat berinteraksi dengan entitas.
Dalam Durable Functions, Anda menentukan orkestrator dengan menggunakan pengikatan pemicu orkestrasi. Pemicu menyediakan objek konteks yang Anda gunakan untuk menjadwalkan tugas dan menerima hasil.
Dalam SDK Durable Task, Anda menentukan orkestrator dengan menerapkan kelas atau fungsi dan mendaftarkannya dengan worker Durable Task. Orkestrator menerima objek konteks yang Anda gunakan untuk menjadwalkan tugas dan menerima hasil.
Penting
Kode orkestrator harus deterministik. Runtime Tugas Tahan Lama menggunakan sumber peristiwa dan pemutaran ulang untuk membangun kembali status orkestrator, sehingga kode nondeterministik dapat menyebabkan kegagalan atau kebuntuan. Untuk panduan terperinci, lihat Batasan kode orkestrator.
Untuk gambaran umum lengkap perilaku orkestrator, termasuk pemutaran ulang, identitas instans, dan penanganan kesalahan, lihat Orkestrasi tahan lama.
Aktivitas
Aktivitas adalah unit dasar pekerjaan dalam orkestrasi berketahanan tinggi. Setiap aktivitas biasanya mewakili satu tugas, seperti memanggil API web, menulis ke database, atau menghitung hasil. Orkestrator memanggil aktivitas untuk melaksanakan pekerjaan inti mereka.
Aktivitas berbeda dari orkestrator dalam beberapa cara utama:
- Tidak ada batasan kode. Orkestrator harus deterministik, tetapi aktivitas dapat menjalankan kode apa pun, termasuk operasi yang tidak deterministik atau berjalan lama.
- Setidaknya sekali eksekusi. Runtime menjamin bahwa setiap aktivitas dijalankan setidaknya sekali selama orkestrasi. Jika kegagalan terjadi setelah aktivitas selesai tetapi sebelum hasilnya direkam, runtime mungkin menjalankannya kembali.
- Tanggung jawab tunggal. Setiap aktivitas menerima satu input dan mengembalikan satu output. Untuk meneruskan beberapa nilai, gunakan jenis kompleks atau kumpulan.
Anda menentukan fungsi aktivitas dengan menggunakan pengikatan pemicu aktivitas. Pemicu menyediakan input yang diteruskan orkestrator saat menjadwalkan aktivitas.
Anda menentukan aktivitas dengan mengimplementasikan kelas atau fungsi dan mendaftarkannya dengan pekerja Durable Task. Aktivitas menerima input yang diteruskan orkestrator saat menjadwalkannya.
Nota
Karena aktivitas hanya menjamin eksekusi minimal sekali, buat logika aktivitas Anda idempoten jika memungkinkan. Misalnya, gunakan "upserts" alih-alih "inserts", atau periksa hasil yang ada sebelum membuat resource baru.
Aktivitas dapat berjalan secara serial, paralel, atau dalam kombinasi keduanya.
Entities
Entitas mengelola bagian-bagian status yang kecil dan tahan lama. Setiap entitas memiliki identitas unik dan sekumpulan operasi bernama yang dapat membaca atau memperbarui status internalnya. Entitas berbeda dari orkestrator karena mereka mengelola status secara eksplisit melalui operasi alih-alih secara implisit melalui alur kontrol. Mereka juga berbeda dari orkestrator karena mereka tidak memiliki pembatasan kode yang sama - operasi entitas dapat menjalankan kode apa pun, termasuk operasi yang tidakdeterministik atau berjalan lama.
Penggunaan umum untuk entitas meliputi:
- Menggabungkan data dari beberapa sumber
- Menerapkan kunci terdistribusi atau semafor
- Memodelkan objek yang menyimpan status seperti keranjang belanja atau sesi permainan
Entitas menjalankan operasi secara serial: hanya satu operasi yang berjalan pada satu waktu untuk instans entitas tertentu. Eksekusi serial ini mencegah konflik keserentakan tanpa memerlukan penguncian eksplisit.
Anda menentukan fungsi entitas dengan menggunakan pengikatan pemicu entitas.
Nota
Fungsi entitas didukung di .NET, JavaScript/TypeScript, Python, dan Java, tetapi tidak di PowerShell.
Anda menentukan entitas dengan menerapkan kelas dan mendaftarkannya dengan pekerja Tugas Tahan Lama.
Nota
Dukungan entitas tersedia di SDK .NET, JavaScript/TypeScript, dan Python. SDK Java saat ini tidak mendukung entitas.
Untuk panduan lengkap untuk menentukan, memanggil, dan mengelola entitas, lihat Entitas tahan lama.
Client
Komponen klien adalah cara Anda berinteraksi dengan orkestrasi dan entitas dari luar orkestrasi. Operasi klien umum meliputi:
- Menjadwalkan instans orkestrasi baru
- Memeriksa status orkestrasi yang sedang berjalan atau yang telah selesai
- Memicu peristiwa ke orkestrasi yang sedang menunggu
- Menangguhkan dan melanjutkan instans orkestrasi
- Mengakhiri instance orkestrasi
- Memberi sinyal operasi entitas dan membaca status entitas
Fungsi non-orkestrator apa pun dapat bertindak sebagai fungsi klien. Apa yang menjadikannya klien adalah penggunaan pengikatan output klien yang tahan lama. Misalnya, Anda dapat memulai orkestrasi dari fungsi yang dipicu oleh HTTP, fungsi yang dipicu oleh antrian, atau fungsi yang dipicu oleh timer.
Pengikatan klien yang tahan lama juga menyediakan API untuk berinteraksi dengan entitas, termasuk memberi sinyal operasi entitas dan membaca status entitas. Untuk informasi selengkapnya, lihat pengikatan klien entitas.
Dalam Durable Task SDK, Anda berinteraksi dengan orkestrasi dan entitas melalui kelas DurableTaskClient. Anda membuat instans klien dalam kode aplikasi dan memanggil metodenya untuk memulai, melakukan kueri, atau mengelola orkestrasi dan instans entitas. Klien dapat digunakan dari bagian mana pun dari aplikasi Anda — titik akhir HTTP, layanan latar belakang, aplikasi konsol, atau kode lainnya.
Untuk informasi terperinci tentang semua operasi manajemen instans, termasuk sampel kode untuk setiap bahasa, lihat Mengelola instans orkestrasi.
Langkah berikutnya
Mulailah dengan membuat aplikasi Durable Function pertama Anda:
Mulai menggunakan SDK Tugas Tahan Lama: