Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pertimbangan manajemen pecahan untuk Kinesis Data Streams
Kinesis data strea, menghitung throughputnya dalam pecahan. Di Amazon Kinesis Data stream, Anda dapat memilih antara mode sesuai permintaan dan mode yang disediakan untuk aliran data Anda.
Sebaiknya gunakan mode sesuai permintaan untuk Kinesis Data Stream Anda jika beban kerja penulisan DynamoDB Anda sangat bervariasi dan tidak dapat diprediksi. Dengan mode on-demand, tidak ada perencanaan kapasitas yang diperlukan karena Kinesis Data Streams secara otomatis mengelola pecahan untuk menyediakan throughput yang diperlukan.
Untuk beban kerja yang dapat diprediksi, Anda dapat menggunakan mode yang disediakan untuk Kinesis Data Stream Anda. Dengan mode yang disediakan, Anda harus menentukan jumlah pecahan untuk aliran data untuk mengakomodasi catatan pengambilan data perubahan dari DynamoDB. Untuk menentukan jumlah pecahan yang dibutuhkan aliran data Kinesis untuk mendukung tabel DynamoDB Anda, Anda memerlukan nilai input berikut:
-
Ukuran rata-rata catatan tabel DynamoDB Anda dalam byte (
average_record_size_in_bytes
). -
Jumlah maksimum operasi tulis yang tabel DynamoDB Anda akan melakukan per detik. Ini termasuk membuat, menghapus, dan memperbarui operasi yang dilakukan oleh aplikasi Anda, serta operasi yang dihasilkan secara otomatis seperti Time to Live generated delete operations (
write_throughput
). -
Persentase operasi pembaruan dan penimpaan yang Anda lakukan pada tabel Anda, dibandingkan dengan membuat atau menghapus operasi (
percentage_of_updates
). Perlu diingat bahwa operasi pembaruan dan penimpaan mereplikasi gambar lama dan baru dari item yang dimodifikasi ke stream. Ini menghasilkan dua kali ukuran item DynamoDB.
Anda dapat menghitung jumlah pecahan (number_of_shards
) yang dibutuhkan aliran data Kinesis Anda dengan menggunakan nilai input dalam rumus berikut:
number_of_shards = ceiling( max( ((write_throughput * (4+percentage_of_updates) * average_record_size_in_bytes) / 1024 / 1024), (write_throughput/1000)), 1)
Misalnya, Anda mungkin memiliki throughput maksimum 1040 operasi tulis per detik (write_throughput
) dengan ukuran catatan rata-rata 800 byte (. average_record_size_in_bytes)
Jika 25 persen dari operasi penulisan tersebut adalah operasi pembaruan (percentage_of_updates
), maka Anda akan memerlukan dua pecahan (number_of_shards
) untuk mengakomodasi throughput streaming DynamoDB Anda:
ceiling( max( ((1040 * (4+25/100) * 800)/ 1024 / 1024), (1040/1000)), 1).
Pertimbangkan hal berikut sebelum menggunakan rumus untuk menghitung jumlah pecahan yang diperlukan dengan mode yang disediakan untuk aliran data Kinesis:
-
Rumus ini membantu memperkirakan jumlah pecahan yang akan diperlukan untuk mengakomodasi catatan data perubahan DynamoDB Anda. Ini tidak mewakili jumlah total pecahan yang dibutuhkan dalam aliran data Kinesis Anda, seperti jumlah pecahan yang diperlukan untuk mendukung konsumen aliran data Kinesis tambahan.
-
Anda mungkin masih mengalami pengecualian throughput baca dan tulis dalam mode yang disediakan jika Anda tidak mengonfigurasi aliran data untuk menangani throughput puncak Anda. Dalam hal ini, Anda harus menskalakan aliran data Anda secara manual untuk mengakomodasi lalu lintas data Anda.
-
Rumus ini mempertimbangkan bloat tambahan yang dihasilkan oleh DynamoDB sebelum mengalirkan catatan data log perubahan ke Kinesis Data Stream.
Untuk mempelajari lebih lanjut tentang mode kapasitas pada Kinesis Data Stream lihat Memilih Mode Kapasitas Aliran Data. Untuk mempelajari selengkapnya tentang perbedaan harga antara mode kapasitas yang berbeda, lihat harga Amazon Kinesis Data Streams
Memantau pengambilan data perubahan dengan Kinesis Data Streams
DynamoDB menyediakan beberapa metrik CloudWatch Amazon untuk membantu Anda memantau replikasi pengambilan data perubahan ke Kinesis. Untuk daftar lengkap CloudWatch metrik, lihatDimensi dan Metrik DynamoDB.
Untuk menentukan apakah streaming Anda memiliki kapasitas yang memadai, sebaiknya pantau item berikut selama pengaktifan streaming dan produksi:
-
ThrottledPutRecordCount
: Jumlah catatan yang dibatasi oleh aliran data Kinesis Anda karena kapasitas aliran data Kinesis tidak mencukupi. Anda mungkin mengalami beberapa throttling selama puncak penggunaan yang luar biasa, namunThrottledPutRecordCount
harus tetap serendah mungkin. DynamoDB mencoba lagi mengirimkan catatan yang dibatasi ke aliran data Kinesis, namun hal ini mungkin mengakibatkan latensi replikasi yang lebih tinggi.Jika Anda mengalami throttling yang berlebihan dan secara rutin, maka Anda mungkin perlu meningkatkan jumlah serpihan aliran Kinesis secara proporsional dengan throughput tulis yang diamati pada tabel Anda. Untuk mempelajari selengkapnya tentang menentukan ukuran Kinesis data stream, lihat Menentukan Ukuran Awal Kinesis Data Stream.
-
AgeOfOldestUnreplicatedRecord
: Waktu yang berlalu sejak perubahan tingkat item terlama yang belum direplikasi ke aliran data Kinesis muncul di tabel DynamoDB. Dalam operasi normal,AgeOfOldestUnreplicatedRecord
harus dalam urutan milidetik. Jumlah ini bertambah berdasarkan upaya replikasi yang gagal karena pilihan konfigurasi yang dikontrol pelanggan.Jika
AgeOfOldestUnreplicatedRecord
metrik melebihi 168 jam, replikasi perubahan tingkat item dari tabel DynamoDB ke aliran data Kinesis akan dinonaktifkan secara otomatis.Contoh konfigurasi yang dikontrol pelanggan yang menyebabkan upaya replikasi gagal adalah kapasitas aliran data Kinesis yang kurang tersedia sehingga menyebabkan throttling berlebihan, atau pembaruan manual pada kebijakan akses aliran data Kinesis Anda yang mencegah DynamoDB menambahkan data ke aliran data Anda. Untuk menjaga metrik ini serendah mungkin, Anda mungkin perlu memastikan penyediaan kapasitas aliran data Kinesis yang tepat, dan memastikan bahwa izin DynamoDB tidak berubah.
-
FailedToReplicateRecordCount
: Jumlah catatan yang gagal direplikasi DynamoDB ke Kinesis data stream Anda. Item tertentu yang lebih besar dari 34 KB mungkin bertambah besar ukurannya untuk mengubah catatan data yang lebih besar dari batas ukuran item 1 MB Kinesis Data Streams. Perluasan ukuran ini terjadi ketika item yang lebih besar dari 34 KB ini menyertakan sejumlah besar nilai atribut Boolean atau kosong. Nilai atribut Boolean dan kosong disimpan sebagai 1 byte di DynamoDB, namun diperluas hingga 5 byte saat diserialkan menggunakan JSON standar untuk replikasi Kinesis Data Streams. DynamoDB tidak dapat mereplikasi catatan perubahan tersebut ke aliran data Kinesis Anda. DynamoDB akan melewatkan catatan data perubahan ini, dan secara otomatis akan tetap melakukan replikasi atas catatan-catatan berikutnya.
Anda dapat membuat CloudWatch alarm Amazon yang mengirim pesan Amazon Simple Notification Service (Amazon SNS) untuk pemberitahuan ketika salah satu metrik sebelumnya melebihi ambang batas tertentu.