Dataflow mendukung dua mode untuk tugas streaming:
- Mode tepat satu kali. Mode ini adalah setelan default untuk semua Tugas streaming Dataflow. Dalam mode ini, Dataflow memastikan bahwa {i>record<i} tidak dihapus atau diduplikasi saat data berpindah pipeline tersebut.
- Mode minimal satu kali. Mode ini menjamin bahwa data diproses dengan setidaknya sekali (yaitu, tidak ada catatan input yang hilang). Namun, catatan duplikat dapat dilakukan dalam mode ini. Untuk kasus penggunaan yang dapat menoleransi duplikasi, mode minimal satu kali dapat menurunkan biaya dan latensi tugas secara signifikan.
Pilih mode streaming yang akan digunakan
Pilih mode tepat satu kali jika Anda perlu memastikan hasil yang tepat dari pipeline dan semantik yang bisa diprediksi. Contoh:
- Pipeline dengan agregasi, seperti jumlah, jumlah, atau rata-rata.
- Kasus penggunaan penting dalam bisnis yang mengandalkan pemrosesan kumpulan data sekali dan hanya sekali. Contohnya mencakup deteksi penipuan, deteksi ancaman jaringan, dan dasbor inventaris e-commerce.
Pilih mode streaming minimal satu kali jika beban kerja Anda dapat menoleransi duplikat data dan mungkin mendapatkan keuntungan dari biaya atau latensi yang lebih rendah. Contoh:
- Workload tempat penghapusan duplikat dilakukan di downstream Dataflow. Misalnya, pipeline yang menulis ke BigQuery atau datastore SQL.
- Pipeline khusus peta tanpa agregasi. Contohnya mencakup pemrosesan log, mengubah pekerjaan pengambilan data, atau mengekstrak, mentransformasi, dan memuat (ETL), di mana pipeline hanya melakukan transformasi per-elemen, seperti penafsiran skema.
- Pipeline di mana sink output tidak dapat menjamin pengiriman tepat satu kali, seperti sebagai Pub/Sub. Dalam hal ini, penghapusan duplikat dalam pipeline mungkin tidak diperlukan, dan Anda bisa mendapatkan keuntungan dari biaya dan latensi yang lebih rendah mode streaming minimal satu kali.
- Pipeline yang membaca dari Pub/Sub. Membaca dari Pub/Sub adalah dioptimalkan secara signifikan saat menggunakan mode minimal satu kali.
Pertimbangan lainnya
Mode minimal satu kali dapat secara signifikan mengurangi biaya dan latensi {i>pipelines<i} yang sama. Dampak persisnya bergantung pada spesifikasi pipeline. Uji coba streaming minimal satu kali di bawah pemuatan realistis untuk mengevaluasi dampaknya.
Saat menggunakan mode minimal satu kali, tingkat data duplikat bergantung pada jumlah percobaan ulang. Rasio garis dasar biasanya rendah (<1%). Namun, lonjakan dapat terjadi jika worker node gagal atau kondisi lainnya menyebabkan panggilan RPC berulang.
Mode streaming memengaruhi cara Streaming Engine memproses kumpulan data, tetapi tidak mengubah semantik konektor I/O. Sebaiknya Anda menyelaraskan Semantik I/O dengan mode streaming. Misalnya, jika Anda menggunakan setidaknya satu kali mode streaming dengan Konektor I/O BigQuery, setel mode tulis ke
STORAGE_API_AT_LEAST_ONCE
. Template Dataflow yang disediakan Google mengaktifkan opsi ini secara otomatis saat Anda menggunakan streaming minimal satu kali.Transformasi yang menangani elemen seperti
Map
tidak selalu idempoten. Misalnya, pertimbangkan fungsi yang menerima pesan dan menambahkan stempel waktu saat ini IP eksternal mana pun yang ditetapkan pada instance tersebut. Dalam hal ini, kumpulan data duplikat dapat menghasilkan beberapa output yang berbeda. Mode minimal satu kali mungkin tidak sesuai untuk pipeline tersebut.
Setel mode streaming
Pemrosesan tepat satu kali adalah setelan default untuk semua Dataflow
pekerjaan. Untuk mengaktifkan mode streaming minimal satu kali, atur
streaming_mode_at_least_once
opsi layanan Anda.
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 menggunakan mode streaming tepat satu kali.
Jika Anda menetapkan opsi streaming_mode_at_least_once
, Dataflow
otomatis mengaktifkan Streaming Engine dengan
penagihan berbasis resource.
Untuk memperbarui mode streaming pada tugas yang sedang berjalan, hentikan tugas yang ada dan jalankan untuk tugas pengganti. Untuk informasi selengkapnya, lihat Meluncurkan tugas pengganti.
Memilih mode streaming untuk template
Untuk memilih mode streaming saat Anda menjalankan streaming Dataflow {i>template<i}, lakukan langkah-langkah berikut:
Konsol
Di konsol Google Cloud, buka Jobs Dataflow kami.
Klik Create job from template.
Pilih template yang ingin Anda jalankan dari Menu drop-down Dataflow template.
Untuk mode Streaming, pilih mode streaming. Jika template mendukung hanya satu mode, maka opsi ini akan dinonaktifkan.
gcloud
Untuk mengaktifkan mode minimal satu kali, setel opsi streaming_mode_at_least_once
dalam flag additional-experiments
:
--additional-experiments=streaming_mode_at_least_once
Untuk mengaktifkan mode tepat satu kali, setel opsi streaming_mode_exactly_once
dalam flag additional-experiments
:
--additional-experiments=streaming_mode_exactly_once
Kedua opsi ini sama-sama bersifat eksklusif. Jika Anda tidak menetapkan salah satu pilihan default, template secara default akan disetel ke mode streaming yang ditentukan oleh metadata template. Untuk informasi selengkapnya, lihat Template kustom.
REST
Gunakan kolom additionalExperiments
di
FlexTemplateRuntimeEnvironment
(Template fleksibel) atau
RuntimeEnvironment
(template klasik).
{
additionalExperiments : ["streaming_mode_at_least_once"]
...
}
Template kustom
Jika Anda membuat template kustom yang mendukung pemrosesan setidaknya satu kali, 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
jangan tentukan defaultStreamingModeg
dan template mendukung kedua mode tersebut, lalu
mode tepat satu kali adalah default.
Untuk mengetahui informasi lebih lanjut, lihat bagian berikut di Dataflow dokumentasi template:
- Template fleksibel: Metadata
- Template klasik: Menggunakan metadata dalam kode pipeline Anda
Melihat mode streaming lowongan
Untuk melihat mode streaming lowongan, buka halaman Lowongan di Konsol Google Cloud Anda.
Mode streaming juga tercantum pada halaman detail pekerjaan, di bagian panel info.
Batasan
Mode streaming minimal satu kali memerlukan Streaming Engine dengan penagihan berbasis resource.
Harga
Mode minimal satu kali selalu menggunakan penagihan berbasis resource, Anda akan ditagih untuk total resource yang dipakai oleh tugas.
Biaya per unit Unit Komputasi Streaming Engine sekarang sama terlepas dari mode streaming. Namun, dalam kebanyakan kasus, pipeline menggunakan total resource yang jauh lebih sedikit saat menggunakan mode minimal satu kali.
Langkah selanjutnya
- Pelajari lebih lanjut pemrosesan tepat satu kali.