Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Flow FrameworkKonsep Basic: Eksekusi Terdistribusi
Instans alur kerja pada dasarnya adalah utas eksekusi virtual yang dapat menjangkau aktivitas dan logika orkestrasi yang berjalan di beberapa komputer jarak jauh. Amazon SWF dan fungsi AWS Flow Framework sebagai sistem operasi yang mengelola instans alur kerja pada CPU virtual dengan:
-
Mempertahankan status eksekusi setiap instans.
-
Beralih antar instans.
-
Melanjutkan eksekusi sebuah instans pada saat itu dimatikan.
Memutar Ulang Alur Kerja
Karena aktivitas dapat berjalan lama, tidak diinginkan jika alur kerja diblokir begitu saja hingga selesai. Sebagai gantinya, AWS Flow Framework mengelola eksekusi alur kerja dengan menggunakan mekanisme putar ulang, yang bergantung pada riwayat alur kerja yang dikelola oleh Amazon SWF untuk menjalankan alur kerja dalam beberapa episode.
Setiap episode memutar ulang logika alur kerja dengan cara yang mengeksekusi setiap aktivitas hanya sekali, dan memastikan bahwa aktivitas dan metode asinkron tidak dijalankan hingga objek Promise mereka siap.
Pemula alur kerja memulai episode putar ulang pertama saat memulai eksekusi alur kerja. Kerangka kerja memanggil metode titik masuk alur kerja dan:
-
Mengeksekusi semua tugas alur kerja yang tidak bergantung pada penyelesaian aktivitas, termasuk memanggil semua metode klien aktivitas.
-
Memberi Amazon SWF daftar tugas aktivitas yang dijadwalkan untuk dieksekusi. Untuk episode pertama, daftar ini hanya terdiri dari aktivitas-aktivitas yang tidak bergantung pada Promise dan dapat segera dieksekusi.
-
Memberi tahu Amazon SWF bahwa episode telah selesai.
Amazon SWF menyimpan tugas aktivitas dalam riwayat alur kerja dan menjadwalkannya untuk dieksekusi dengan menempatkannya di daftar tugas aktivitas. Pekerja aktivitas mengumpulkan daftar tugas dan mengeksekusi tugas.
Saat pekerja aktivitas menyelesaikan tugas, ia mengembalikan hasilnya ke Amazon SWF, yang mencatatnya dalam riwayat eksekusi alur kerja dan menjadwalkan tugas alur kerja baru untuk pekerja alur kerja dengan menempatkannya di daftar tugas alur kerja. Pekerja alur kerja polling daftar tugas dan ketika menerima tugas, menjalankan episode putar ulang berikutnya, sebagai berikut:
-
Kerangka kerja menjalankan metode titik masuk alur kerja lagi dan:
-
Mengeksekusi semua tugas alur kerja yang tidak bergantung pada penyelesaian aktivitas, termasuk memanggil semua metode klien aktivitas. Namun, kerangka kerja memeriksa riwayat eksekusi dan tidak menjadwalkan tugas aktivitas duplikat.
-
Memeriksa riwayat untuk melihat tugas aktivitas mana yang telah diselesaikan dan menjalankan metode alur kerja asinkron yang bergantung pada aktivitas tersebut.
-
-
Ketika semua tugas alur kerja yang dapat dijalankan telah selesai, kerangka kerja melaporkan kembali ke Amazon SWF:
-
Ini memberi Amazon SWF daftar aktivitas apa pun yang objek
Promise<T>
inputnya telah siap sejak episode terakhir dan dapat dijadwalkan untuk dieksekusi. -
Jika episode tidak menghasilkan tugas aktivitas tambahan tetapi masih ada aktivitas yang belum selesai, kerangka kerja akan memberi tahu Amazon SWF bahwa episode telah selesai. Kemudian menunggu aktivitas lain selesai, memulai episode putar ulang berikutnya.
-
Jika episode tidak menghasilkan tugas aktivitas tambahan dan semua aktivitas telah selesai, kerangka kerja akan memberi tahu Amazon SWF bahwa eksekusi alur kerja telah selesai.
-
Untuk contoh perilaku putar ulang, lihat AWS Flow Framework untuk Java Replay Behavior.
Metode Alur Kerja Putar Ulang dan Asinkron
Metode alur kerja asinkron sering digunakan seperti aktivitas, karena metode menunda eksekusi hingga semua objek Promise<T>
input siap. Namun, mekanisme putar ulang menangani metode asinkron secara berbeda dari aktivitas.
-
Putar ulang tidak menjamin bahwa metode asinkron akan dijalankan hanya sekali. Ini menunda eksekusi pada metode asinkron hingga objek Promise inputnya siap, tetapi kemudian mengeksekusi metode itu untuk semua episode berikutnya.
-
Ketika metode asinkron selesai, itu tidak memulai episode baru.
Contoh memutar ulang alur kerja asinkron disediakan di AWS Flow Framework untuk Java Replay Behavior.
Implementasi Putar Ulang dan Alur Kerja
Untuk sebagian besar, Anda tidak perlu khawatir dengan detail mekanisme putar ulang. Ini pada dasarnya adalah sesuatu yang terjadi di belakang layar. Namun, putar ulang memiliki dua implikasi penting untuk implementasi alur kerja Anda.
-
Jangan gunakan metode alur kerja untuk melakukan tugas yang sudah berjalan lama, karena putar ulang akan mengulangi tugas tersebut beberapa kali. Bahkan metode alur kerja asinkron biasanya berjalan lebih dari sekali. Sebaliknya, gunakan aktivitas untuk tugas yang berjalan lama; putar ulang mengeksekusi aktivitas hanya sekali.
-
Logika alur kerja Anda harus sepenuhnya deterministik; setiap episode harus mengambil jalur aliran kontrol yang sama. Misalnya, jalur aliran kontrol tidak boleh bergantung pada waktu saat ini. Untuk penjelasan mendetail tentang putar ulang dan persyaratan determinisme, lihat Nondeterminisme.