Dataflow mendukung dua mode untuk tugas streaming:
- Mode tepat sekali. Mode ini adalah setelan default untuk semua tugas streaming Dataflow. Dalam mode ini, Dataflow memastikan bahwa data tidak dihapus atau diduplikasi saat data bergerak melalui pipeline.
- Mode minimal satu kali. Mode ini menjamin bahwa data diproses setidaknya sekali (yaitu, tidak ada data input yang hilang). Namun, data duplikat mungkin terjadi dalam mode ini. Untuk kasus penggunaan yang dapat menerima duplikat, mode setidaknya sekali dapat secara signifikan menurunkan biaya dan latensi tugas Anda.
Memilih mode streaming yang akan digunakan
Pilih mode tepat sekali 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 yang penting bagi bisnis yang mengandalkan data yang diproses satu kali dan hanya sekali. Contohnya mencakup deteksi penipuan, deteksi ancaman jaringan, dan dasbor inventaris e-commerce.
Pilih mode streaming setidaknya sekali jika beban kerja Anda dapat menoleransi data duplikasi dan mungkin mendapatkan manfaat dari pengurangan biaya atau latensi. Contoh:
- Workload tempat penghapusan duplikat dilakukan di downstream 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 muat (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 setidaknya sekali.
- Pipeline yang membaca dari Pub/Sub. Pembacaan dari Pub/Sub dioptimalkan secara signifikan saat menggunakan mode minimal satu kali.
Pertimbangan lainnya
Mode setidaknya sekali dapat secara signifikan mengurangi biaya dan latensi pipeline. Dampaknya yang sebenarnya bergantung pada spesifikasi pipeline. Uji streaming setidaknya sekali dalam beban yang realistis untuk mengevaluasi dampaknya.
Saat menggunakan mode minimal satu kali, frekuensi data duplikat bergantung pada jumlah percobaan ulang. Rasio dasar pengukuran 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 setidaknya sekali dengan konektor I/O BigQuery, tetapkan mode tulis ke
STORAGE_API_AT_LEAST_ONCE
. Template Dataflow yang disediakan Google otomatis mengaktifkan opsi ini saat Anda menggunakan streaming setidaknya sekali.Transformasi per elemen seperti
Map
tidak selalu idempoten. Misalnya, pertimbangkan fungsi yang menerima pesan dan menambahkan stempel waktu saat ini ke dalamnya. Dalam hal ini, kumpulan data duplikat dapat menghasilkan beberapa output yang berbeda. Mode setidaknya sekali mungkin tidak sesuai untuk pipeline tersebut.
Menetapkan mode streaming
Pemrosesan tepat sekali adalah setelan default untuk semua tugas Dataflow. Untuk mengaktifkan mode streaming setidaknya sekali, tetapkan
opsi layanan
streaming_mode_at_least_once
.
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 Create job from 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
dalam flag additional-experiments
:
--additional-experiments=streaming_mode_at_least_once
Untuk mengaktifkan mode exactly-once, tetapkan opsi streaming_mode_exactly_once
dalam flag additional-experiments
:
--additional-experiments=streaming_mode_exactly_once
Kedua opsi ini saling eksklusif. Jika Anda tidak menetapkan salah satu opsi ini, template akan ditetapkan secara default ke mode streaming yang ditentukan oleh metadata template. Untuk 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 setidaknya sekali, 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 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 exactly-once adalah default.
Untuk 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 Tugas di konsol Google Cloud.
Mode streaming juga tercantum di halaman detail tugas, di panel Info tugas.
Batasan
Mode streaming setidaknya sekali memerlukan Streaming Engine dengan penagihan berbasis resource.
Harga
Mode setidaknya sekali selalu menggunakan penagihan berbasis resource, tempat Anda ditagih untuk total resource yang digunakan oleh tugas Anda.
Biaya per unit Unit Komputasi Streaming Engine sama, terlepas dari mode streaming. Namun, dalam sebagian besar kasus, pipeline menggunakan total resource yang jauh lebih sedikit saat menggunakan mode setidaknya sekali.
Langkah selanjutnya
- Pelajari pemrosesan tepat sekali lebih lanjut.