Template Pub/Sub ke Redis

Template Pub/Sub to Redis adalah pipeline streaming yang membaca pesan dari langganan Pub/Sub dan menulis payload pesan ke Redis. Kasus penggunaan paling umum dari template ini adalah mengekspor log ke Redis Enterprise untuk analisis log berbasis penelusuran lanjutan secara real time.

  • Sebelum menulis ke Redis, Anda dapat menerapkan fungsi JavaScript yang ditentukan pengguna ke payload pesan.
  • Setiap pesan yang mengalami kegagalan pemrosesan akan diteruskan ke topik Pub/Sub yang belum diproses untuk pemecahan masalah dan pemrosesan ulang lebih lanjut.
  • Untuk keamanan tambahan, aktifkan koneksi SSL saat menyiapkan koneksi endpoint database Anda. Template ini tidak mendukung TLS bersama.

Persyaratan pipeline

  • Langganan Pub/Sub sumber harus ada sebelum menjalankan pipeline.
  • Topik Pub/Sub yang belum diproses harus ada sebelum menjalankan pipeline.
  • Endpoint database Redis harus dapat diakses dari subnetwork pekerja Dataflow.

Parameter template

Parameter Deskripsi
inputSubscription Langganan Pub/Sub untuk membaca input, dalam format 'projects/my-project-id/subscriptions/my-subscription-id'. Misalnya: projects/my-project-id/subscriptions/my-subscription-id.
redisHost Host database Redis. Misalnya: your.cloud.db.redislabs.com. Nilai defaultnya adalah 127.0.0.1.
redisPort Port database Redis. Misalnya: 12345. Nilai defaultnya adalah 6379.
redisPassword Sandi database Redis. Nilai defaultnya adalah kosong.
sslEnabled Opsional: Parameter SSL database Redis. Nilai defaultnya adalah false.
redisSinkType Opsional: Sink Redis. Nilai yang didukung adalah STRING_SINK, HASH_SINK, STREAMS_SINK, dan LOGGING_SINK. Setelan defaultnya adalah STRING_SINK.
connectionTimeout Opsional: Waktu tunggu koneksi Redis dalam milidetik. Misalnya: 2000. Nilai defaultnya adalah 2000.
ttl Opsional: Waktu habis masa berlaku kunci dalam detik. Default ttl untuk HASH_SINK adalah -1, yang berarti tidak memiliki batas waktu.
javascriptTextTransformGcsPath Opsional: Pola jalur Cloud Storage untuk kode JavaScript yang berisi fungsi yang ditentukan pengguna. Contoh: gs://your-bucket/your-function.js.
javascriptTextTransformFunctionName Opsional: Nama fungsi yang akan dipanggil dari file JavaScript. Hanya gunakan huruf, angka, dan garis bawah. Misalnya: transform atau transform_udf1.
javascriptTextTransformReloadIntervalMinutes Opsional: Menentukan frekuensi pemuatan ulang UDF, dalam hitungan menit. Jika nilainya lebih besar dari 0, Dataflow secara berkala akan memeriksa file UDF di Cloud Storage, dan memuat ulang UDF jika file diubah. Parameter ini memungkinkan Anda memperbarui UDF saat pipeline berjalan, tanpa perlu memulai ulang tugas. Jika nilainya adalah 0, pemuatan ulang UDF akan dinonaktifkan. Nilai defaultnya adalah 0.

Fungsi yang ditentukan pengguna

Anda juga dapat memperluas template ini dengan menulis fungsi yang ditentukan pengguna (UDF). Template memanggil UDF untuk setiap elemen input. Payload elemen diserialisasi sebagai string JSON. Untuk mengetahui informasi selengkapnya, lihat Membuat fungsi yang ditentukan pengguna untuk template Dataflow.

Spesifikasi fungsi

UDF memiliki spesifikasi berikut:

  • Input: String JSON
  • Output: string atau objek JSON string

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

    Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Dataflow template, pilih the Pub/Sub to Redis template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_PubSub_to_Redis \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       inputSubscription=INPUT_SUBSCRIPTION,\
       redisHost=REDIS_HOST,\
       redisPort=REDIS_PORT,\
       redisPassword=REDIS_PASSWORD,\

Ganti kode berikut:

  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • INPUT_SUBSCRIPTION: langganan input Pub/Sub
  • REDIS_HOST: Host DB Redis
  • REDIS_PORT: Port DB Redis
  • REDIS_PASSWORD: Sandi DB Redis

API

Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "redisHost": "REDIS_HOST",
       "redisPort": "REDIS_PORT",
       "redisPassword": "REDIS_PASSWORD",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_PubSub_to_Redis",
     "environment": { "maxWorkers": "10" }
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • INPUT_SUBSCRIPTION: langganan input Pub/Sub
  • REDIS_HOST: Host DB Redis
  • REDIS_PORT: Port DB Redis
  • REDIS_PASSWORD: Sandi DB Redis

Langkah selanjutnya