Dataflow mendukung dua mode untuk tugas streaming:
- Mode tepat satu kali. Mode ini adalah default untuk semua tugas streaming Dataflow. Dalam mode ini, Dataflow memastikan bahwa rekaman tidak dihapus atau diduplikasi saat data bergerak melalui pipeline.
- Mode minimal satu kali. Mode ini menjamin bahwa rekaman diproses setidaknya sekali (yaitu, tidak ada rekaman input yang hilang). Namun, duplikat data mungkin terjadi dalam mode ini. Untuk kasus penggunaan yang dapat mentoleransi duplikat, mode minimal sekali dapat secara signifikan menurunkan biaya dan latensi tugas Anda.
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 mengandalkan pemrosesan data satu kali dan hanya satu kali. Contohnya mencakup deteksi penipuan, deteksi ancaman jaringan, dan dasbor inventaris e-commerce.
Pilih mode streaming minimal sekali jika beban kerja Anda dapat mentoleransi duplikasi data dan mungkin mendapatkan manfaat dari pengurangan biaya atau latensi. Contoh:
- Workload yang penghapusan duplikasinya dilakukan di hilir dari Dataflow. Misalnya, pipeline yang menulis ke BigQuery atau penyimpanan data SQL.
- Pipeline hanya 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 yang sink outputnya 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 sekali.
- Pipeline yang membaca dari Pub/Sub. Membaca dari Pub/Sub dioptimalkan secara signifikan saat menggunakan mode minimal satu kali.
Pertimbangan lainnya
Mode minimal sekali dapat mengurangi biaya dan latensi pipeline secara signifikan. Dampak persisnya bergantung pada spesifikasi pipeline. Uji streaming minimal sekali di bawah beban yang realistis untuk mengevaluasi dampaknya.
Saat menggunakan mode minimal satu kali, rasio duplikat data bergantung pada jumlah percobaan ulang. Tingkat 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 sekali dengan konektor I/O BigQuery, tetapkan mode penulisan ke
STORAGE_API_AT_LEAST_ONCE
. Template Dataflow yang disediakan Google secara otomatis mengaktifkan opsi ini saat Anda menggunakan streaming minimal sekali.Transformasi per elemen seperti
Map
tidak selalu bersifat idempoten. Misalnya, pertimbangkan fungsi yang menerima pesan dan menambahkan stempel waktu saat ini ke pesan tersebut. Dalam hal ini, kumpulan data duplikat dapat menghasilkan beberapa output yang berbeda. Mode minimal sekali mungkin tidak sesuai untuk pipeline tersebut.
Menetapkan mode streaming
Pemrosesan tepat sekali adalah setelan default untuk semua tugas Dataflow. Untuk mengaktifkan mode streaming minimal sekali, 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 konsol Google Cloud , buka halaman Jobs Dataflow.
Klik Buat tugas dari template.
Pilih template yang ingin Anda jalankan dari menu drop-down Template Dataflow.
Untuk Streaming mode, pilih mode streaming. Jika template hanya mendukung satu mode, opsi ini akan dinonaktifkan.
gcloud
Untuk mengaktifkan mode minimal sekali, tetapkan opsi streaming_mode_at_least_once
di flag additional-experiments
:
--additional-experiments=streaming_mode_at_least_once
Untuk mengaktifkan mode tepat sekali, tetapkan opsi streaming_mode_exactly_once
di tanda additional-experiments
:
--additional-experiments=streaming_mode_exactly_once
Kedua opsi ini saling eksklusif. Jika Anda tidak menyetel salah satu opsi ini, template akan menggunakan mode streaming default yang ditentukan oleh metadata template. Untuk mengetahui informasi selengkapnya, lihat Template kustom.
REST
Gunakan kolom additionalExperiments
di objek
FlexTemplateRuntimeEnvironment
(template fleksibel) atau
RuntimeEnvironment
(template klasik).
{
additionalExperiments : ["streaming_mode_at_least_once"]
...
}
Template kustom
Jika Anda membuat template kustom yang mendukung pemrosesan minimal sekali, tambahkan kolom tingkat teratas 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 konsol Google Cloud . Kolom defaultStreamingMode
bersifat opsional dan menentukan mode streaming default untuk template. Jika Anda tidak menentukan defaultStreamingMode
dan template mendukung kedua mode, maka mode tepat sekali adalah defaultnya.
Untuk mengetahui informasi selengkapnya, lihat bagian berikut dalam dokumentasi template Dataflow:
- Template fleksibel: Metadata
- Template klasik: Menggunakan metadata dalam kode pipeline
Melihat mode streaming tugas
Untuk melihat mode streaming tugas, buka halaman Jobs di konsol Google Cloud .
Mode streaming juga tercantum di halaman detail tugas, di panel Info tugas.
Batasan
Mode streaming minimal sekali memerlukan Streaming Engine dengan penagihan berbasis resource.
Harga
Mode minimal sekali selalu menggunakan penagihan berbasis resource, dengan Anda ditagih untuk total resource yang digunakan oleh tugas Anda.
Biaya per unit Unit Komputasi Streaming Engine adalah sama terlepas dari mode streaming. Namun, dalam sebagian besar kasus, pipeline menggunakan total resource yang jauh lebih sedikit saat menggunakan mode minimal sekali.
Langkah berikutnya
- Pelajari lebih lanjut pemrosesan tepat sekali.