Tabel metadata DynamoDB dan load balancing di KCL - Amazon Kinesis Data Streams

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tabel metadata DynamoDB dan load balancing di KCL

KCL mengelola metadata seperti sewa dan metrik pemanfaatan CPU dari pekerja. KCL melacak metadata ini menggunakan tabel DynamoDB. Untuk setiap aplikasi Amazon Kinesis Data Streams, KCL membuat tiga tabel DynamoDB untuk mengelola metadata: tabel sewa, tabel metrik pekerja, dan tabel status koordinator.

catatan

KCL 3.x memperkenalkan dua tabel metadata baru: metrik pekerja dan tabel status koordinator.

penting

Anda harus menambahkan izin yang tepat untuk aplikasi KCL untuk membuat dan mengelola tabel metadata di DynamoDB. Untuk detailnya, lihat Izin IAM diperlukan untuk aplikasi konsumen KCL.

Aplikasi konsumen KCL tidak secara otomatis menghapus ketiga tabel metadata DynamoDB ini. Pastikan Anda menghapus tabel metadata DynamoDB ini yang dibuat oleh aplikasi konsumen KCL saat Anda menonaktifkan aplikasi konsumen Anda untuk mencegah biaya yang tidak perlu.

Tabel sewa

Tabel sewa adalah tabel Amazon DynamoDB unik yang digunakan untuk melacak pecahan yang disewa dan diproses oleh penjadwal aplikasi konsumen KCL. Setiap aplikasi konsumen KCL membuat tabel sewa sendiri. KCL menggunakan nama aplikasi konsumen untuk nama tabel sewa secara default. Anda dapat mengatur nama tabel kustom menggunakan konfigurasi. KCL juga menciptakan indeks sekunder global pada tabel sewa dengan kunci partisi LeaseOwner untuk penemuan sewa yang efisien. Indeks sekunder global mencerminkan atribut LeaseKey dari tabel sewa dasar. Jika tabel sewa untuk aplikasi konsumen KCL Anda tidak ada saat aplikasi dimulai, salah satu pekerja membuat tabel sewa untuk aplikasi Anda.

Anda dapat melihat tabel sewa menggunakan konsol Amazon DynamoDB saat aplikasi konsumen sedang berjalan.

penting
  • Setiap nama aplikasi konsumen KCL harus unik untuk mencegah duplikasi nama tabel sewa.

  • Akun Anda dikenakan biaya untuk biaya yang terkait dengan tabel DynamoDB, selain biaya yang terkait dengan Kinesis Data Streams itu sendiri.

Setiap baris dalam tabel sewa mewakili pecahan yang sedang diproses oleh penjadwal aplikasi konsumen Anda. Bidang utama meliputi yang berikut:

  • LeaseKey: Untuk pemrosesan aliran tunggal, ini adalah ID pecahan. Untuk pemrosesan multi-stream dengan KCL, ini terstruktur sebagai. account-id:StreamName:streamCreationTimestamp:ShardId leaseKey adalah kunci partisi dari tabel sewa. Untuk informasi selengkapnya tentang pemrosesan multi-aliran, lihatPemrosesan multi-aliran dengan KCL .

  • pos pemeriksaan: Nomor urutan pos pemeriksaan terbaru untuk pecahan.

  • checkpointSubSequenceNomor: Saat menggunakan fitur agregasi Perpustakaan Produser Kinesis, ini adalah ekstensi ke pos pemeriksaan yang melacak catatan pengguna individu dalam catatan Kinesis.

  • LeaseCounter: Digunakan untuk memeriksa apakah seorang pekerja saat ini memproses sewa secara aktif. LeaseCounter meningkat jika kepemilikan sewa ditransfer ke pekerja lain.

  • LeaseOwner: Pekerja saat ini yang memegang sewa ini.

  • ownerSwitchesSincePos pemeriksaan: Berapa kali sewa ini telah berganti pekerja sejak pos pemeriksaan terakhir.

  • parentShardId: ID dari induk pecahan ini. Pastikan pecahan induk diproses sepenuhnya sebelum pemrosesan dimulai pada pecahan anak, mempertahankan urutan pemrosesan catatan yang benar.

  • childShardId: Daftar pecahan anak IDs yang dihasilkan dari pecahan atau penggabungan pecahan ini. Digunakan untuk melacak garis keturunan pecahan dan mengelola urutan pemrosesan selama operasi resharding.

  • startingHashKey: Batas bawah kisaran kunci hash untuk pecahan ini.

  • endingHashKey: Batas atas rentang kunci hash untuk pecahan ini.

Jika Anda menggunakan pemrosesan multi-aliran dengan KCL, Anda melihat dua bidang tambahan berikut dalam tabel sewa. Untuk informasi selengkapnya, lihat Pemrosesan multi-aliran dengan KCL .

  • ShardID: ID pecahan.

  • StreamName: Pengidentifikasi aliran data dalam format berikut:. account-id:StreamName:streamCreationTimestamp

Tabel metrik pekerja

Tabel metrik Worker adalah tabel Amazon DynamoDB unik untuk setiap aplikasi KCL dan digunakan untuk merekam metrik pemanfaatan CPU dari setiap pekerja. Metrik ini akan digunakan oleh KCL untuk melakukan penugasan sewa yang efisien untuk menghasilkan pemanfaatan sumber daya yang seimbang di seluruh pekerja. KCL menggunakan KCLApplicationName-WorkerMetricStats nama tabel metrik pekerja secara default.

Tabel negara koordinator

Tabel status koordinator adalah tabel Amazon DynamoDB unik untuk setiap aplikasi KCL dan digunakan untuk menyimpan informasi status internal untuk pekerja. Misalnya, tabel negara koordinator menyimpan data mengenai pemilihan pemimpin atau metadata yang terkait dengan migrasi di tempat dari KCL 2.x ke KCL 3.x. KCL menggunakan KCLApplicationName-CoordinatorState nama tabel status koordinator secara default.

Mode kapasitas DynamoDB untuk tabel metadata yang dibuat oleh KCL

Secara default, Kinesis Client Library (KCL) membuat tabel metadata DynamoDB seperti tabel sewa, tabel metrik pekerja, dan tabel status koordinator menggunakan mode kapasitas sesuai permintaan. Mode ini secara otomatis menskalakan kapasitas baca dan tulis untuk mengakomodasi lalu lintas tanpa memerlukan perencanaan kapasitas. Kami sangat menyarankan Anda untuk menjaga mode kapasitas sebagai mode sesuai permintaan untuk pengoperasian tabel metadata ini dengan lebih efisien.

Jika Anda memutuskan untuk mengganti tabel sewa ke mode kapasitas yang disediakan, ikuti praktik terbaik berikut:

  • Menganalisis pola penggunaan:

    • Pantau pola dan penggunaan baca dan tulis aplikasi Anda (RCU, WCU) menggunakan metrik Amazon. CloudWatch

    • Memahami persyaratan throughput puncak dan rata-rata.

  • Hitung kapasitas yang dibutuhkan:

    • Perkirakan unit kapasitas baca (RCUs) dan tulis unit kapasitas (WCUs) berdasarkan analisis Anda.

    • Pertimbangkan faktor-faktor seperti jumlah pecahan, frekuensi pos pemeriksaan, dan jumlah pekerja.

  • Menerapkan penskalaan otomatis:

    • Gunakan penskalaan otomatis DynamoDB untuk menyesuaikan kapasitas yang disediakan secara otomatis dan menetapkan batas kapasitas minimum dan maksimum yang sesuai.

    • Penskalaan otomatis DynamoDB akan membantu menghindari tabel metadata KCL Anda mencapai batas kapasitas dan terhambat.

  • Pemantauan dan pengoptimalan rutin:

    • Terus memantau CloudWatch metrik untukThrottledRequests.

    • Sesuaikan kapasitas saat beban kerja Anda berubah seiring waktu.

Jika Anda mengalami tabel DynamoDB ProvisionedThroughputExceededException dalam metadata untuk aplikasi konsumen KCL Anda, Anda harus meningkatkan kapasitas throughput yang disediakan dari tabel DynamoDB. Jika Anda menetapkan tingkat tertentu unit kapasitas baca (RCU) dan unit kapasitas tulis (WCU) saat pertama kali membuat aplikasi konsumen Anda, itu mungkin tidak cukup seiring dengan bertambahnya penggunaan Anda. Misalnya, jika aplikasi konsumen KCL Anda sering melakukan pemeriksaan atau beroperasi pada aliran dengan banyak pecahan, Anda mungkin memerlukan lebih banyak unit kapasitas. Untuk informasi tentang throughput yang disediakan di DynamoDB, lihat kapasitas throughput DynamoDB dan memperbarui tabel di Panduan Pengembang Amazon DynamoDB.

Bagaimana KCL memberikan sewa kepada pekerja dan menyeimbangkan beban

KCL terus mengumpulkan dan memantau metrik pemanfaatan CPU dari host komputasi yang menjalankan pekerja untuk memastikan distribusi beban kerja yang merata. Metrik pemanfaatan CPU ini disimpan dalam tabel metrik pekerja di DynamoDB. Jika KCL mendeteksi bahwa beberapa pekerja menunjukkan tingkat pemanfaatan CPU yang lebih tinggi dibandingkan dengan yang lain, itu akan menetapkan kembali sewa di antara pekerja untuk menurunkan beban pada pekerja yang sangat digunakan. Tujuannya adalah untuk menyeimbangkan beban kerja secara lebih merata di seluruh armada aplikasi konsumen, mencegah setiap pekerja menjadi kelebihan beban. Saat KCL mendistribusikan pemanfaatan CPU di seluruh armada aplikasi konsumen, Anda dapat mengukur kapasitas armada aplikasi konsumen Anda dengan memilih jumlah pekerja yang tepat atau menggunakan penskalaan otomatis untuk mengelola kapasitas komputasi secara efisien guna mencapai biaya yang lebih rendah.

penting

KCL dapat mengumpulkan metrik pemanfaatan CPU dari pekerja hanya jika prasyarat tertentu terpenuhi. Untuk detailnya, lihat Prasyarat. Jika KCL tidak dapat mengumpulkan metrik pemanfaatan CPU dari pekerja, KCL akan kembali menggunakan throughput per pekerja untuk menetapkan sewa dan menyeimbangkan beban di seluruh pekerja di armada. KCL akan memantau throughput yang diterima setiap pekerja pada waktu tertentu dan menetapkan kembali sewa untuk memastikan bahwa setiap pekerja mendapatkan tingkat throughput total yang sama dari sewa yang ditugaskan.