Menetapkan mode streaming pipeline

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 detail 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

  1. Di konsol Google Cloud, buka halaman Jobs Dataflow.

    Buka Tugas

  2. Klik Create job from template.

  3. Pilih template yang ingin Anda jalankan dari menu drop-down Template dataflow.

  4. Untuk Streaming mode, pilih mode streaming. Jika template hanya mendukung satu mode, opsi ini akan dinonaktifkan.

gcloud

Untuk mengaktifkan mode setidaknya 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 persis sekali adalah default.

Untuk informasi selengkapnya, lihat bagian berikut dalam dokumentasi template Dataflow:

Melihat mode streaming tugas

Untuk melihat mode streaming tugas, buka halaman Tugas di konsol Google Cloud.

Buka Tugas

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