Mengelola cadangan aplikasi menggunakan snapshot - Layanan Terkelola untuk Apache Flink

Amazon Managed Service untuk Apache Flink sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola cadangan aplikasi menggunakan snapshot

Snapshot adalah Managed Service untuk implementasi Apache Flink dari Apache Flink Savepoint. Snapshot adalah cadangan status aplikasi yang dipicu, dibuat, dan dikelola pengguna atau layanan. Untuk informasi tentang Apache Flink Savepoints, lihat Savepoints di Dokumentasi Apache Flink. Menggunakan snapshot, Anda dapat me-restart aplikasi dari snapshot tertentu dari status aplikasi.

catatan

Sebaiknya aplikasi Anda membuat snapshot beberapa kali sehari untuk memulai ulang dengan benar menggunakan data status yang benar. Frekuensi yang benar untuk snapshot Anda bergantung pada logika bisnis aplikasi Anda. Mengambil snapshot yang sering memungkinkan Anda memulihkan data yang lebih baru, tetapi meningkatkan biaya dan membutuhkan lebih banyak sumber daya sistem.

Di Managed Service for Apache Flink, Anda mengelola snapshot menggunakan tindakan API berikut:

Untuk batas per aplikasi pada jumlah snapshot, lihat Kuota. Jika aplikasi Anda mencapai batas pada snapshot, lalu secara manual membuat snapshot gagal dengan LimitExceededException.

Layanan Terkelola untuk Apache Flink tidak pernah menghapus snapshot. Anda harus secara manual menghapus snapshot menggunakan tindakan DeleteApplicationSnapshot.

Untuk memuat snapshot status aplikasi tersimpan saat memulai aplikasi, gunakan parameter ApplicationRestoreConfiguration dari StartApplication atau tindakan UpdateApplication.

Pembuatan snapshot otomatis

Jika SnapshotsEnabled diatur ke true dalam untuk aplikasi, Managed Service ApplicationSnapshotConfigurationfor Apache Flink secara otomatis membuat dan menggunakan snapshot saat aplikasi diperbarui, diskalakan, atau dihentikan untuk menyediakan semantik pemrosesan yang tepat sekali.

catatan

Mengatur ApplicationSnapshotConfiguration::SnapshotsEnabled ke false akan menyebabkan kehilangan data selama pembaruan aplikasi.

catatan

Layanan Terkelola untuk Apache Flink memicu savepoint perantara selama pembuatan snapshot. Untuk Flink versi 1.15 atau lebih besar, savepoint menengah tidak lagi melakukan efek samping apa pun. Lihat Memicu savepoint.

Snapshot yang dibuat secara otomatis memiliki kualitas berikut:

  • Snapshot dikelola oleh layanan, tetapi Anda dapat melihat snapshot menggunakan tindakan. ListApplicationSnapshots Snapshot yang dibuat secara otomatis menghitung batas snapshot Anda.

  • Jika aplikasi Anda melebihi batas snapshot, snapshot yang dibuat secara manual akan gagal, tetapi Layanan Terkelola untuk layanan Apache Flink akan tetap berhasil membuat snapshot saat aplikasi diperbarui, diskalakan, atau dihentikan. Anda harus menghapus snapshot secara manual menggunakan DeleteApplicationSnapshottindakan sebelum membuat lebih banyak snapshot secara manual.

Memulihkan dari snapshot yang berisi data status yang tidak kompatibel

Karena snapshot berisi informasi tentang operator, memulihkan data status dari snapshot untuk operator yang telah berubah sejak versi aplikasi sebelumnya mungkin memiliki hasil yang tak terduga. Aplikasi akan gagal jika mencoba memulihkan data status dari snapshot yang tidak sesuai dengan operator saat ini. Aplikasi yang gagal akan terhenti di status STOPPING atau UPDATING.

Untuk memungkinkan aplikasi memulihkan dari snapshot yang berisi data status yang tidak kompatibel, atur AllowNonRestoredState parameter FlinkRunConfigurationuntuk true menggunakan tindakan. UpdateApplication

Anda akan melihat perilaku berikut ketika aplikasi dipulihkan dari snapshot usang:

  • Operator ditambahkan: Jika operator baru ditambahkan, titik simpan tidak memiliki data status untuk operator baru. Tidak ada kesalahan yang akan terjadi, dan tidak perlu untuk mengatur AllowNonRestoredState.

  • Operator dihapus: Jika operator yang ada dihapus, titik simpan memiliki data status untuk operator yang hilang. Kesalahan akan terjadi kecuali AllowNonRestoredState diatur ke true.

  • Operator dimodifikasi: Jika perubahan yang kompatibel dibuat, seperti mengubah tipe parameter ke tipe yang kompatibel, aplikasi dapat memulihkan dari snapshot usang. Untuk informasi selengkapnya tentang memulihkan dari snapshot, lihat Savepoints di Dokumentasi Apache Flink. Aplikasi yang menggunakan Apache Flink versi 1.8 atau yang lebih baru mungkin dapat dipulihkan dari snapshot dengan skema yang berbeda. Aplikasi yang menggunakan Apache Flink versi 1.6 tidak dapat dipulihkan. Untuk two-phase-commit sink, sebaiknya gunakan snapshot sistem (SWs) alih-alih snapshot () buatan pengguna. CreateApplicationSnapshot

    Untuk Flink, Layanan Terkelola untuk Apache Flink memicu savepoint perantara selama pembuatan snapshot. Untuk Flink 1.15 dan seterusnya, savepoint menengah tidak lagi melakukan efek samping apa pun. Lihat Memicu Savepoint.

Jika Anda perlu melanjutkan aplikasi yang tidak kompatibel dengan data savepoint yang ada, sebaiknya Anda melewatkan pemulihan dari snapshot dengan menyetel ApplicationRestoreType parameter tindakan ke. StartApplicationSKIP_RESTORE_FROM_SNAPSHOT

Untuk informasi selengkapnya tentang cara Apache Flink menangai data status yang tidak kompatibel, lihat Evolusi Skema Status di Dokumentasi Apache Flink.

Contoh API Snapshot

Bagian ini mencakup permintaan contoh tindakan API untuk menggunakan snapshot dengan aplikasi. Untuk informasi tentang cara menggunakan file JSON untuk input tindakan API, lihat Layanan Terkelola untuk kode contoh API Apache Flink.

Aktifkan snapshot untuk aplikasi

Contoh permintaan untuk tindakan UpdateApplication berikut mengaktifkan snapshot untuk aplikasi:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }

Buat snapshot

Contoh permintaan untuk tindakan CreateApplicationSnapshot berikut membuat snapshot dari status aplikasi saat ini:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }

Buat daftar snapshot untuk aplikasi

Contoh permintaan untuk tindakan ListApplicationSnapshots berikut mencantumkan 50 snapshot pertama untuk status aplikasi saat ini:

{ "ApplicationName": "MyApplication", "Limit": 50 }

Rincian daftar untuk snapshot aplikasi

Contoh permintaan berikut untuk tindakan DescribeApplicationSnapshot mencantumkan detail untuk snapshot aplikasi tertentu:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }

Menghapus snapshot

Contoh permintaan berikut untuk tindakan DeleteApplicationSnapshot menghapus snapshot yang disimpan sebelumnya. Anda bisa mendapatkan nilai SnapshotCreationTimestamp menggunakan ListApplicationSnapshots atau DeleteApplicationSnapshot:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }

Mulai ulang aplikasi menggunakan snapshot bernama

Contoh permintaan berikut untuk tindakan StartApplication memulai aplikasi menggunakan status yang disimpan dari snapshot tertentu:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }

Mulai ulang aplikasi menggunakan snapshot terbaru

Contoh permintaan berikut untuk tindakan StartApplication memulai aplikasi menggunakan snapshot terbaru:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }

Mulai ulang aplikasi tanpa snapshot

Contoh permintaan berikut untuk tindakan StartApplication memulai aplikasi tanpa memuat status aplikasi, bahkan jika snapshot tersedia:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }