Realtime Compute for Apache Flink menyediakan fitur pemeriksaan kompatibilitas state dan migrasi data state. Topik ini menjelaskan hasil pemeriksaan kompatibilitas serta membandingkan efisiensi migrasi dan performa pekerjaan antara backend status RocksDB dan Gemini.
Latar Belakang
Pekerjaan Flink menggunakan data state, termasuk checkpoint dan titik simpan (savepoint), untuk menyimpan hasil komputasi antaranya. Seiring perkembangan pengembangan dan kebutuhan bisnis, Anda sering perlu memodifikasi pekerjaan SQL Anda. Namun, jika pekerjaan SQL yang telah dimodifikasi dijalankan ulang dari state sebelumnya, masalah ketidakkompatibelan state dapat terjadi.
Mulai dari versi engine vvr-4.0.11-flink-1.13, Realtime Compute for Apache Flink menyediakan fitur pemeriksaan kompatibilitas state dan migrasi data state. Fitur-fitur ini membantu Anda menggunakan kembali data state yang ada dan memperbarui pekerjaan SQL dengan cepat. Setelah men-deploy pekerjaan yang telah dimodifikasi, jika Anda menjalankannya dari state sebelumnya, sistem akan menilai kompatibilitasnya. Untuk detail hasilnya, lihat Kompatibilitas.
Agar pekerjaan baru dapat menggunakan data state yang dipilih, data tersebut harus dimigrasikan. Realtime Compute for Apache Flink mendukung dua backend status, yaitu RocksDB dan Gemini, yang berbeda dalam hal efisiensi migrasi dan performa pekerjaan. Untuk informasi lebih lanjut, lihat Migrasi data state.
Kompatibilitas
Pada halaman Start Job, saat Anda memilih Resume Mode, sistem Flink secara otomatis mendeteksi perubahan pada pekerjaan SQL, seperti perubahan pada kode SQL, parameter runtime Flink, atau versi engine. Jika terdeteksi adanya perubahan, kami menyarankan Anda mengklik Click to detect di samping State Compatibility untuk menjalankan pemeriksaan kompatibilitas state, lalu lanjutkan berdasarkan hasilnya.
Jika Anda memodifikasi pekerjaan SQL, Anda harus menjalankan pemeriksaan kompatibilitas state sebelum menjalankannya dalam Resume Mode untuk memastikan pemulihan yang berhasil.
Daftar berikut menjelaskan hasil kompatibilitas dan rekomendasi kami:
-
Fully compatible
Perubahan pada pekerjaan sepenuhnya kompatibel dengan data state terbaru. Artinya, pekerjaan akan menghasilkan hasil yang sama seolah-olah telah memproses seluruh riwayat data. Kami merekomendasikan untuk menjalankan pekerjaan tersebut.
-
Partially compatible
Perubahan pada pekerjaan hanya sebagian yang kompatibel dengan data state terbaru. Artinya, meskipun hasil untuk kolom yang kompatibel konsisten dengan hasil dari pemrosesan seluruh riwayat data, kolom lain tidak memiliki data state yang sesuai, sehingga dapat menyebabkan ketidakkonsistenan. Untuk memastikan kompatibilitas penuh, kami merekomendasikan agar Anda menjalankan pekerjaan dari state yang berbeda atau melakukan startup tanpa status (stateless start).
-
Incompatible
PeringatanMenjalankan pekerjaan dari state ini kemungkinan besar akan menyebabkan kegagalan atau menghasilkan output yang tidak terduga. Kami sangat menyarankan untuk menggunakan state yang berbeda atau melakukan startup tanpa status.
-
Compatibility unknown
PeringatanMenjalankan pekerjaan dari state ini dapat menyebabkan kegagalan atau menghasilkan output yang tidak terduga. Lanjutkan dengan hati-hati.
Migrasi data state
RocksDB dan Gemini berbeda dalam hal efisiensi migrasi dan performa pekerjaan:
-
RocksDB
RocksDB melakukan migrasi penuh terhadap semua data state saat pekerjaan dimulai. Selama pekerjaan berada dalam status RUNNING, operator yang memerlukan migrasi data state tetap berada dalam status INITIALIZING dan tidak memproses data. Setelah migrasi operator selesai, operator tersebut beralih ke status RUNNING dan mulai memproses data secara normal. Di Flink Web UI, pekerjaan telah berjalan selama 3m 8s, backpressure operator Source berada di 100%, dan operator GroupAggregate menampilkan
0untuk kedua metrik Bytes Received dan Records Received.CatatanDalam skenario ini, karena fungsi agregat dimodifikasi, RocksDB melakukan migrasi state penuh saat startup. Operator GroupAggregate tetap dalam status INITIALIZING dan tidak dapat memproses data hingga migrasi selesai.
-
Gemini
Berbeda dengan RocksDB yang melakukan migrasi penuh saat startup, Gemini melakukan migrasi data state secara on-demand selama pekerjaan berjalan. Data state hanya dimigrasikan saat diakses pertama kali. Setelah startup, pekerjaan langsung memasuki status RUNNING, dan operator-operatornya dengan cepat beralih dari INITIALIZING ke RUNNING serta mulai memproses data. Seiring berjalannya migrasi, transaksi per detik (TPS) secara bertahap kembali ke level normal, menandakan migrasi telah selesai. Dibandingkan dengan RocksDB, Gemini umumnya memiliki waktu migrasi keseluruhan yang lebih singkat. Pekerjaan state_migration_q3_1_new_gemini berada dalam status RUNNING. Setelah berjalan selama 1m 28s, operator GroupAggregate di downstream telah menerima 20,4 MB (147.337 catatan), metrik Busy-nya berada di 100%, dan backpressure operator Source di upstream berada di 99%.
CatatanDengan pekerjaan SQL dan data state yang sama, Gemini mulai memproses data jauh lebih cepat dibandingkan RocksDB karena beralih lebih cepat dari status INITIALIZING ke RUNNING.