GeminiStateBackend adalah mesin penyimpanan key-value yang dirancang untuk pemrosesan aliran dan merupakan backend status default dari Realtime Compute for Apache Flink. Topik ini menjelaskan manfaat penyimpanan backend status tingkat perusahaan GeminiStateBackend serta membandingkan kinerja antara GeminiStateBackend dan RocksDBStateBackend.
Ikhtisar
Komputasi berstatus merupakan skenario kompleks dan menantang dalam pemrosesan aliran. Akses data untuk pemrosesan aliran memiliki karakteristik sebagai berikut:
Banyak akses acak dengan sedikit kueri rentang.
Lalu lintas data dan hotspot sering berubah. Dalam situasi ini, thread paralel yang berbeda dari operator yang sama menggunakan mode akses data yang berbeda.
GeminiStateBackend memberikan manfaat berikut:
Menggunakan arsitektur baru dan desain struktur data untuk meningkatkan kinerja pemrosesan data secara keseluruhan.
Arsitektur keseluruhan GeminiStateBackend didesain berdasarkan struktur data log-structured merge-tree (LSM tree). GeminiStateBackend menyediakan tiga kemampuan utama: adaptasi terhadap perubahan volume data dan pola akses, penyimpanan bertingkat data panas dan dingin, serta pergantian antara arsitektur anti-caching dan caching. GeminiStateBackend juga mendukung struktur penyimpanan hash untuk akses acak. Perbandingan kinerja menggunakan Nexmark menunjukkan bahwa GeminiStateBackend memberikan kinerja lebih baik dibandingkan RocksDBStateBackend. Kinerja sekitar setengah dari kasus penggunaan GeminiStateBackend lebih dari 70% lebih tinggi daripada kasus penggunaan RocksDBStateBackend.
Mendukung pemisahan komputasi-penyimpanan untuk menghilangkan ketergantungan data status pada disk lokal.
Ruang disk lokal terbatas, sehingga penyebaran dengan jumlah data status besar sering kali mengalami masalah kekurangan ruang disk lokal. Dalam banyak kasus, jika penyebaran yang menggunakan RocksDBStateBackend mengalami masalah kekurangan ruang disk lokal, Anda perlu meningkatkan paralelisme thread atau menggunakan metode lain untuk menambah sumber daya. GeminiStateBackend mendukung pemisahan komputasi-penyimpanan, sehingga penyimpanan status dapat independen dari disk lokal. Ini mencegah kegagalan penyebaran akibat data status lokal yang berlebihan. Untuk informasi lebih lanjut tentang konfigurasi terkait pemisahan komputasi-penyimpanan, lihat Parameter untuk pemisahan komputasi-penyimpanan.
Mendukung pemisahan key-value adaptif untuk meningkatkan kinerja penyebaran secara signifikan, terutama dalam JOIN dua aliran atau JOIN multi-aliran.
JOIN dua aliran atau JOIN multi-aliran adalah salah satu skenario paling menantang dalam pemrosesan aliran dan tipikal di mana penyimpanan status mengalami hambatan. GeminiStateBackend menyediakan fitur pemisahan key-value untuk beradaptasi dengan skenario di mana tingkat keberhasilan operasi JOIN rendah atau panjang nilai data status panjang. Fitur ini secara signifikan meningkatkan kinerja penyebaran yang melibatkan JOIN dua aliran atau JOIN multi-aliran. Pemisahan key-value mendukung penyesuaian adaptif tanpa konfigurasi dan optimasi manual. Verifikasi selama Festival Belanja Double 11 Alibaba Group menunjukkan bahwa throughput penyebaran dapat ditingkatkan sebesar 50% hingga 70% atau lebih tinggi, serta pemanfaatan sumber daya komputasi dapat ditingkatkan rata-rata sebesar 50%. Dalam skenario tipikal, pemanfaatan sumber daya komputasi dapat ditingkatkan sebesar 100% hingga 200%. Untuk informasi lebih lanjut tentang konfigurasi terkait pemisahan key-value, lihat Parameter untuk pemisahan key-value.
Menggunakan savepoint ringan, yang mempercepat pembuatan checkpoint dan savepoint untuk penyebaran dengan sejumlah besar data status.
GeminiStateBackend mendukung savepoint yang lebih halus dan melepaskan fitur checkpoint dari mekanisme compaction LSM tree. Hal ini mempercepat dan menstabilkan pembuatan checkpoint dan savepoint. GeminiStateBackend juga mendukung fitur Native Incremental Savepoint, yang digunakan bersama dengan savepoint asli dari Realtime Compute for Apache Flink untuk memberikan kinerja mirip dengan checkpoint. Ini meningkatkan ketersediaan savepoint.
Mendukung penyetelan parameter adaptif, yang mengurangi beban kerja penyetelan parameter manual.
Dalam tugas pemrosesan aliran, operator yang berbeda memiliki mode akses status yang berbeda. Dalam banyak kasus, kombinasi parameter yang berbeda diperlukan untuk mencapai kinerja optimal penyimpanan status. Konfigurasi parameter ini melibatkan teknologi dasar, dan penyetelan parameter manual memiliki biaya pembelajaran dan pemahaman yang tinggi. Untuk mengatasi masalah ini, GeminiStateBackend mendukung teknologi penyetelan parameter adaptif. Saat penyebaran berjalan, konfigurasi parameter dapat disetel secara otomatis berdasarkan mode akses data dan lalu lintas saat ini untuk mencapai kinerja optimal penyimpanan status dalam berbagai skenario. Verifikasi selama Festival Belanja Double 11 Alibaba Group menunjukkan bahwa teknologi ini dapat mengurangi penyetelan parameter manual lebih dari 95% dan meningkatkan throughput inti tunggal sebesar 10% hingga 40%. Untuk informasi lebih lanjut tentang konfigurasi terkait penyetelan parameter adaptif, lihat Parameter untuk penyetelan parameter adaptif.
Perbandingan kinerja menggunakan Nexmark
Dalam contoh ini, kasus penggunaan terkait hambatan status dan sumber daya perangkat keras di Nexmark digunakan untuk membandingkan kinerja antara RocksDBStateBackend dan GeminiStateBackend.
Tautan Nexmark berasal dari situs web pihak ketiga. Saat mengunjungi situs web tersebut, akses mungkin gagal atau tertunda.
Hasil perbandingan menunjukkan bahwa GeminiStateBackend secara signifikan mengoptimalkan kinerja keseluruhan (throughput inti tunggal) penyebaran. Tabel berikut menunjukkan hasil perbandingan.
Nama kasus | GeminiStateBackend TPS/Core | RocksDBStateBackend TPS/Core | Peningkatan kinerja oleh GeminiStateBackend |
q4 | 83.63 K/s | 53.26 K/s | 57.02% |
q5 | 84.52 K/s | 57.86 K/s | 46.08% |
q8 | 468.96 K/s | 361.37 K/s | 29.77% |
q9 | 59.42 K/s | 26.56 K/s | 123.72% |
q11 | 93.08 K/s | 48.82 K/s | 90.66% |
q18 | 150.93 K/s | 87.37 K/s | 72.75% |
q19 | 143.46 K/s | 58.5 K/s | 145.23% |
q20 | 75.69 K/s | 22.44 K/s | 237.30% |
Referensi
Untuk informasi lebih lanjut tentang cara membuat, melihat, atau menghapus status penyebaran, atau memulihkan penyebaran dari status tertentu, lihat Manajemen Set Status.
Untuk informasi lebih lanjut tentang perbedaan efisiensi migrasi dan kinerja penyebaran selama migrasi data status antara RocksDBStateBackend dan GeminiStateBackend, lihat Ikhtisar.
Untuk informasi lebih lanjut tentang dampak modifikasi dalam pernyataan SQL penyebaran terhadap kompatibilitas antara penyebaran dan data status, lihat Modifikasi SQL dan Dampak pada Kompatibilitas.
Untuk informasi lebih lanjut tentang pengujian kinerja Nexmark dari Realtime Compute for Apache Flink, lihat Makalah Putih Kinerja (Pengujian Kinerja Nexmark).
Untuk informasi lebih lanjut tentang jawaban atas beberapa pertanyaan umum tentang checkpoint atau savepoint dari Realtime Compute for Apache Flink, lihat FAQ tentang Checkpoint atau Savepoint Penyebaran.