Memilih Mode Kapasitas Aliran Data - Amazon Kinesis Data Streams

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

Memilih Mode Kapasitas Aliran Data

Apa itu Mode Kapasitas Aliran Data?

Mode kapasitas menentukan bagaimana kapasitas aliran data dikelola dan bagaimana Anda dikenakan biaya untuk penggunaan aliran data Anda. Di Amazon Kinesis Data Streams, Anda dapat memilih antara mode sesuai permintaan dan mode yang disediakan untuk aliran data Anda.

  • On-demand - aliran data dengan mode on-demand tidak memerlukan perencanaan kapasitas dan secara otomatis menskalakan untuk menangani gigabyte throughput tulis dan baca per menit. Dengan mode on-demand, Kinesis Data Streams secara otomatis mengelola pecahan untuk menyediakan throughput yang diperlukan.

  • Disediakan - untuk aliran data dengan mode yang disediakan, Anda harus menentukan jumlah pecahan untuk aliran data. Kapasitas total aliran data adalah jumlah dari kapasitas pecahannya. Anda dapat menambah atau mengurangi jumlah pecahan dalam aliran data sesuai kebutuhan.

Anda dapat menggunakan Kinesis Data PutRecords Streams dan API untuk menulis PutRecord data ke dalam aliran data Anda baik dalam mode kapasitas sesuai permintaan maupun yang disediakan. Untuk mengambil data, kedua mode kapasitas mendukung konsumen default yang menggunakan GetRecords API dan konsumen Enhanced Fan-Out (EFO) yang menggunakan API. SubscribeToShard

Semua kemampuan Kinesis Data Streams, termasuk mode retensi, enkripsi, metrik pemantauan, dan lainnya, didukung untuk mode sesuai permintaan dan yang disediakan. Kinesis Data Streams memberikan daya tahan dan ketersediaan yang tinggi baik dalam mode kapasitas sesuai permintaan maupun yang disediakan.

Mode Sesuai Permintaan

Aliran data dalam mode on-demand tidak memerlukan perencanaan kapasitas dan secara otomatis menskalakan untuk menangani gigabyte throughput tulis dan baca per menit. Mode on-demand menyederhanakan pengambilan dan penyimpanan volume data yang besar pada latensi rendah karena menghilangkan penyediaan dan pengelolaan server, penyimpanan, atau throughput. Anda dapat menelan miliaran catatan per hari tanpa biaya operasional apa pun.

Mode on-demand sangat ideal untuk memenuhi kebutuhan lalu lintas aplikasi yang sangat bervariasi dan tidak dapat diprediksi. Anda tidak lagi harus menyediakan beban kerja ini untuk kapasitas puncak, yang dapat menghasilkan biaya yang lebih tinggi karena pemanfaatan yang rendah. Mode on-demand cocok untuk beban kerja dengan pola lalu lintas yang tidak dapat diprediksi dan sangat bervariasi.

Dengan mode kapasitas sesuai permintaan, Anda membayar per GB data yang ditulis dan dibaca dari aliran data Anda. Anda tidak perlu menentukan berapa banyak throughput baca dan tulis yang Anda harapkan untuk dilakukan aplikasi Anda. Kinesis Data Streams langsung mengakomodasi beban kerja Anda saat mereka naik atau turun. Lihat informasi yang lebih lengkap di struktur harga Amazon Kinesis Data Streams.

Anda dapat membuat aliran data baru dengan mode on-demand menggunakan konsol Kinesis Data Streams, API, atau perintah CLI.

Aliran data dalam mode on-demand mengakomodasi hingga dua kali lipat throughput penulisan puncak yang diamati dalam 30 hari sebelumnya. Saat throughput penulisan aliran data Anda mencapai puncak baru, Kinesis Data Streams menskalakan kapasitas aliran data secara otomatis. Misalnya, jika aliran data Anda memiliki throughput tulis yang bervariasi antara 10 MB/s dan 40 MB/s, maka Kinesis Data Streams memastikan bahwa Anda dapat dengan mudah melakukan burst untuk menggandakan throughput puncak sebelumnya, atau 80 MB/s. Jika aliran data yang sama mempertahankan throughput puncak baru sebesar 50 MB/s, Kinesis Data Streams memastikan bahwa ada kapasitas yang cukup untuk menelan 100 MB/s throughput tulis. Namun, pelambatan tulis dapat terjadi jika lalu lintas Anda meningkat menjadi lebih dari dua kali lipat puncak sebelumnya dalam durasi 15 menit. Anda perlu mencoba kembali permintaan yang dibatasi ini.

Kapasitas baca agregat dari aliran data dengan mode on-demand meningkat secara proporsional terhadap throughput penulisan. Ini membantu memastikan bahwa aplikasi konsumen selalu memiliki throughput baca yang memadai untuk memproses data yang masuk secara real time. Anda mendapatkan setidaknya dua kali throughput tulis dibandingkan dengan membaca data menggunakan GetRecords API. Kami menyarankan Anda menggunakan satu aplikasi konsumen dengan GetRecord API, sehingga memiliki cukup ruang untuk mengejar ketinggalan ketika aplikasi perlu pulih dari waktu henti. Disarankan agar Anda menggunakan kemampuan Enhanced Fan-Out dari Kinesis Data Streams untuk skenario yang memerlukan penambahan lebih dari satu aplikasi konsumen. Enhanced Fan-Out mendukung penambahan hingga 20 aplikasi konsumen ke aliran data menggunakan SubscribeToShard API, dengan setiap aplikasi konsumen memiliki throughput khusus.

Menangani Pengecualian Throughput Baca dan Tulis

Dengan mode kapasitas sesuai permintaan (sama dengan mode kapasitas yang disediakan), Anda harus menentukan kunci partisi dengan setiap catatan untuk menulis data ke dalam aliran data Anda. Kinesis Data Streams menggunakan kunci partisi Anda untuk mendistribusikan data di seluruh pecahan. Kinesis Data Streams memantau lalu lintas untuk setiap pecahan. Ketika lalu lintas masuk melebihi 500 Kb/s per shard, itu membagi pecahan dalam waktu 15 menit. Nilai kunci hash shard induk didistribusikan kembali secara merata di seluruh pecahan anak.

Jika lalu lintas masuk Anda melebihi dua kali puncak sebelumnya, Anda dapat mengalami pengecualian baca atau tulis selama sekitar 15 menit, bahkan ketika data Anda didistribusikan secara merata di seluruh pecahan. Kami menyarankan Anda mencoba kembali semua permintaan tersebut sehingga semua catatan disimpan dengan benar di Kinesis Data Streams.

Anda mungkin mengalami pengecualian baca dan tulis jika Anda menggunakan kunci partisi yang mengarah ke distribusi data yang tidak merata, dan catatan yang ditetapkan ke pecahan tertentu melebihi batasnya. Dengan mode on-demand, aliran data secara otomatis beradaptasi untuk menangani pola distribusi data yang tidak merata kecuali satu kunci partisi melebihi throughput 1 MB/s pecahan dan batas 1000 record per detik.

Dalam mode on-demand, Kinesis Data Streams membagi pecahan secara merata saat mendeteksi peningkatan lalu lintas. Namun, itu tidak mendeteksi dan mengisolasi kunci hash yang mendorong bagian yang lebih tinggi dari lalu lintas masuk ke pecahan tertentu. Jika Anda menggunakan kunci partisi yang sangat tidak rata, Anda dapat terus menerima pengecualian tulis. Untuk kasus penggunaan seperti itu, kami menyarankan Anda menggunakan mode kapasitas yang disediakan yang mendukung pemisahan pecahan granular.

Mode yang Disediakan

Dengan mode yang disediakan, setelah Anda membuat aliran data, Anda dapat menskalakan kapasitas pecahan secara dinamis ke atas atau ke bawah menggunakan atau API. AWS Management Console UpdateShardCount Anda dapat melakukan pembaruan saat ada produsen Kinesis Data Streams atau aplikasi konsumen yang menulis atau membaca data dari aliran.

Mode yang disediakan cocok untuk lalu lintas yang dapat diprediksi dengan persyaratan kapasitas yang mudah diprediksi. Anda dapat menggunakan mode yang disediakan jika Anda ingin kontrol halus atas bagaimana data didistribusikan di seluruh pecahan.

Dengan mode yang disediakan, Anda harus menentukan jumlah pecahan untuk aliran data. Untuk menentukan ukuran aliran data dengan mode yang disediakan, Anda memerlukan nilai input berikut:

  • Ukuran rata-rata catatan data yang ditulis ke aliran dalam kilobyte (KB), dibulatkan ke 1 KB (average_data_size_in_KB) terdekat.

  • Jumlah catatan data yang ditulis dan dibaca dari aliran per detik (records_per_second).

  • Jumlah konsumen, yaitu aplikasi Kinesis Data Streams yang mengkonsumsi data secara bersamaan dan independen dari stream (). number_of_consumers

  • Bandwidth tulis masuk dalam KB (incoming_write_bandwidth_in_KB), yang sama dengan average_data_size_in_KB dikalikan dengan. records_per_second

  • Bandwidth baca keluar dalam KB (outgoing_read_bandwidth_in_KB), yang sama dengan incoming_write_bandwidth_in_KB dikalikan dengan. number_of_consumers

Anda dapat menghitung jumlah pecahan (number_of_shards) yang dibutuhkan aliran Anda dengan menggunakan nilai input dalam rumus berikut.

number_of_shards = max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048)

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.

Anda mungkin juga mengalami pengecualian baca dan tulis jika Anda menggunakan kunci partisi yang mengarah ke distribusi data yang tidak merata dan catatan yang ditetapkan ke pecahan melebihi batasnya. Untuk mengatasi masalah ini dalam mode yang disediakan, identifikasi pecahan tersebut dan pisahkan secara manual untuk mengakomodasi lalu lintas Anda dengan lebih baik. Untuk informasi selengkapnya, lihat Menyusun Ulang Stream.

Beralih Antar Mode Kapasitas

Anda dapat mengalihkan mode kapasitas aliran data dari on-demand ke provisioned, atau dari provisioned ke on-demand. Untuk setiap aliran data di AWS akun Anda, Anda dapat beralih antara mode kapasitas sesuai permintaan dan yang disediakan dua kali dalam 24 jam.

Beralih di antara mode kapasitas aliran data tidak menyebabkan gangguan pada aplikasi Anda yang menggunakan aliran data ini. Anda dapat terus menulis dan membaca dari aliran data ini. Saat Anda beralih di antara mode kapasitas, baik dari on-demand ke provisioned atau dari provisioned ke on-demand, status stream diatur ke Update. Anda harus menunggu status aliran data untuk masuk ke Aktif sebelum Anda dapat mengubah propertinya lagi.

Saat Anda beralih dari mode kapasitas yang disediakan ke mode sesuai permintaan, aliran data Anda pada awalnya mempertahankan jumlah pecahan apa pun yang dimilikinya sebelum transisi, dan mulai saat ini, Kinesis Data Streams memantau lalu lintas data Anda dan menskalakan jumlah pecahan aliran data sesuai permintaan ini tergantung pada throughput penulisan Anda.

Saat Anda beralih dari mode on-demand ke provisioned, aliran data Anda pada awalnya juga mempertahankan jumlah pecahan apa pun yang dimilikinya sebelum transisi, tetapi mulai saat ini, Anda bertanggung jawab untuk memantau dan menyesuaikan jumlah pecahan aliran data ini untuk mengakomodasi throughput tulis Anda dengan benar.