Dataflow mendukung dua mode untuk tugas streaming:
- Mode tepat satu kali. Mode ini adalah mode default untuk semua tugas streaming Dataflow. Dalam mode ini, Dataflow memastikan bahwa data tidak dihilangkan atau diduplikasi saat data berpindah melalui pipeline.
- Mode minimal satu kali. Mode ini menjamin bahwa data diproses setidaknya satu kali (yaitu, tidak ada data input yang hilang). Namun, data duplikat dapat terjadi dalam mode ini. Untuk kasus penggunaan yang dapat menoleransi duplikat, mode minimal satu kali dapat menurunkan biaya dan latensi tugas Anda secara signifikan.
Memilih mode streaming yang akan digunakan
Pilih mode tepat satu kali jika Anda perlu memastikan hasil yang tepat dari pipeline dan semantik yang dapat diprediksi. Contoh:
- Pipeline dengan agregasi, seperti jumlah, total, atau rata-rata.
- Kasus penggunaan penting untuk bisnis yang bergantung pada data yang diproses satu kali dan hanya satu kali. Contohnya mencakup deteksi penipuan, deteksi ancaman jaringan, dan dasbor inventaris ecommerce.
Pilih mode streaming minimal satu kali jika workload Anda dapat menoleransi data duplikat dan mungkin mendapatkan manfaat dari pengurangan biaya atau latensi. Contoh:
- Workload tempat penghapusan duplikat dilakukan di hilir dari Dataflow. Misalnya, pipeline yang menulis ke BigQuery atau datastore SQL.
- Pipeline khusus peta tanpa agregasi. Contohnya mencakup pemrosesan log, pengambilan data perubahan, atau tugas ekstrak, transformasi, dan pemuatan (ETL), yang pipeline-nya hanya melakukan transformasi per elemen, seperti terjemahan skema.
- Pipeline tempat sink output tidak dapat menjamin pengiriman tepat satu kali, seperti Pub/Sub. Dalam hal ini, penghapusan duplikat dalam pipeline mungkin tidak diperlukan, dan Anda dapat memperoleh manfaat dari pengurangan biaya dan latensi mode streaming minimal satu kali.
- Pipeline yang membaca dari Pub/Sub. Membaca dari Pub/Sub dioptimalkan secara signifikan saat menggunakan mode minimal satu kali.
Pertimbangan lainnya
Mode minimal satu kali dapat mengurangi biaya dan latensi pipeline secara signifikan. Dampak pastinya bergantung pada spesifikasi pipeline. Uji streaming minimal satu kali di bawah beban yang realistis untuk mengevaluasi dampaknya.
Saat menggunakan mode minimal satu kali, rasio data duplikat bergantung pada jumlah percobaan ulang. Rasio dasar biasanya rendah (<1%). Namun, lonjakan dapat terjadi jika node pekerja gagal atau kondisi lain menyebabkan panggilan RPC berulang.
Mode streaming memengaruhi cara Streaming Engine memproses data, tetapi tidak mengubah semantik konektor I/O. Sebaiknya sesuaikan semantik I/O dengan mode streaming. Misalnya, jika Anda menggunakan mode streaming minimal satu kali dengan konektor I/O BigQuery, tetapkan mode tulis ke
STORAGE_API_AT_LEAST_ONCE. Template Dataflow yang disediakan Google secara otomatis mengaktifkan opsi ini saat Anda menggunakan streaming minimal satu kali.Transformasi per elemen seperti
Maptidak selalu bersifat idempoten. Misalnya, pertimbangkan fungsi yang menerima pesan dan menambahkan stempel waktu saat ini ke pesan tersebut. Dalam hal ini, data duplikat dapat menghasilkan beberapa output yang berbeda. Mode minimal satu kali mungkin tidak sesuai untuk pipeline tersebut.
Menetapkan mode streaming
Pemrosesan tepat satu kali adalah setelan default untuk semua tugas Dataflow. Untuk mengaktifkan mode streaming minimal satu kali, tetapkan
streaming_mode_at_least_once
opsi layanan.
Java
--dataflowServiceOptions=streaming_mode_at_least_once
Python
--dataflow_service_options=streaming_mode_at_least_once
Go
--dataflow_service_options=streaming_mode_at_least_once
Jika Anda tidak menentukan opsi streaming_mode_at_least_once, Dataflow akan menggunakan mode streaming tepat satu kali.
Jika Anda menetapkan opsi streaming_mode_at_least_once, Dataflow
akan otomatis mengaktifkan Streaming Engine dengan
penagihan berbasis resource.
Untuk memperbarui mode streaming pada tugas yang sedang berjalan, luncurkan tugas pengganti.
Memilih mode streaming untuk template
Untuk memilih mode streaming saat Anda menjalankan template streaming Dataflow, lakukan langkah-langkah berikut:
Konsol
Di Google Cloud konsol, buka halaman Tugas Dataflow.
Klik Create job from template.
Pilih template yang ingin Anda jalankan dari menu drop-down Dataflow template.
Untuk Streaming mode, pilih mode streaming. Jika template hanya mendukung satu mode, opsi ini akan dinonaktifkan.
gcloud
Untuk mengaktifkan mode minimal satu kali, tetapkan opsi streaming_mode_at_least_once di flag additional-experiments:
--additional-experiments=streaming_mode_at_least_once
Untuk mengaktifkan mode tepat satu kali, tetapkan opsi streaming_mode_exactly_once di flag additional-experiments:
--additional-experiments=streaming_mode_exactly_once
Kedua opsi ini tidak dapat muncul bersamaan. Jika Anda tidak menetapkan salah satu opsi ini, template akan ditetapkan secara default ke mode streaming yang ditentukan oleh metadata template. Untuk mengetahui informasi selengkapnya, lihat Template kustom.
REST
Gunakan kolom additionalExperiments dalam
FlexTemplateRuntimeEnvironment
(template Flex) atau
RuntimeEnvironment
(template klasik) objek.
{
additionalExperiments : ["streaming_mode_at_least_once"]
...
}
Template kustom
Jika Anda membuat template kustom yang mendukung pemrosesan minimal satu kali, tambahkan kolom tingkat atas berikut ke file metadata template:
{
"streaming": true,
"supportsAtLeastOnce": true,
"supportsExactlyOnce": true,
"defaultStreamingMode": "AT_LEAST_ONCE"
}
Kolom metadata ini memungkinkan pengguna memilih mode streaming saat men-deploy
template di Google Cloud konsol. Kolom defaultStreamingMode bersifat opsional dan menentukan mode streaming default untuk template. Jika Anda tidak menentukan defaultStreamingMode dan template mendukung kedua mode, mode tepat satu kali akan menjadi mode default.
Untuk mengetahui informasi selengkapnya, lihat bagian berikut dalam dokumentasi template Dataflow:
- Template Flex: Metadata
- Template klasik: Menggunakan metadata dalam kode pipeline
Melihat mode streaming tugas
Untuk melihat mode streaming tugas, buka halaman Tugas di Google Cloud konsol.
Mode streaming juga tercantum di halaman detail tugas, di panel Job info.
Batasan
Mode streaming minimal satu kali memerlukan Streaming Engine dengan penagihan berbasis resource.
Harga
Mode minimal satu kali selalu menggunakan penagihan berbasis resource, yang akan menagih Anda untuk total resource yang digunakan oleh tugas Anda.
Biaya per unit Streaming Engine Compute Units sama , terlepas dari mode streaming. Namun, dalam sebagian besar kasus, pipeline menggunakan total resource yang jauh lebih sedikit saat menggunakan mode minimal satu kali.
Langkah berikutnya
- Pelajari pemrosesan tepat satu kali lebih lanjut.