Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat aplikasi mentransfer data menggunakan pustaka klien Azure Storage untuk JavaScript, ada beberapa faktor yang dapat memengaruhi kecepatan, penggunaan memori, dan bahkan keberhasilan atau kegagalan permintaan. Untuk memaksimalkan performa dan keandalan transfer data, penting untuk proaktif dalam mengonfigurasi opsi transfer pustaka klien berdasarkan lingkungan tempat aplikasi Anda berjalan.
Artikel ini membahas beberapa pertimbangan untuk menyetel opsi transfer data. Ketika disetel dengan benar, pustaka klien dapat mendistribusikan data secara efisien di beberapa permintaan, yang dapat mengakibatkan peningkatan kecepatan operasi, penggunaan memori, dan stabilitas jaringan.
Penyetelan performa untuk unggahan
Menyetel opsi transfer data dengan benar adalah kunci untuk performa yang dapat diandalkan untuk unggahan. Transfer penyimpanan dipartisi ke dalam beberapa subtransfer berdasarkan nilai argumen ini. Ukuran transfer maksimum yang didukung bervariasi menurut operasi dan versi layanan, jadi pastikan untuk memeriksa dokumentasi untuk menentukan batas. Untuk informasi selengkapnya tentang batas ukuran transfer untuk penyimpanan Blob, lihat Menskalakan target untuk penyimpanan Blob.
Mengatur opsi transfer untuk unggahan
Anda dapat mengonfigurasi properti di BlockBlobParallelUploadOptions untuk meningkatkan performa operasi transfer data. Tabel berikut ini mencantumkan properti yang bisa Anda konfigurasi, bersama dengan deskripsi:
| Properti | Deskripsi |
|---|---|
blockSize |
Ukuran blok maksimum untuk ditransfer untuk setiap permintaan sebagai bagian dari operasi pengunggahan. Untuk mempelajari lebih lanjut, lihat blockSize. |
maxSingleShotSize |
Jika ukuran data kurang dari atau sama dengan nilai ini, data diunggah dalam satu taruh daripada dipecah menjadi potongan. Jika data diunggah dalam satu bidikan, ukuran blok diabaikan. Nilai defaultnya adalah 256 MB. Jika Anda menyesuaikan properti ini, Anda harus menggunakan nilai kurang dari atau sama dengan 256 MB. Untuk mempelajari lebih lanjut, lihat maxSingleShotSize. |
concurrency |
Jumlah maksimum permintaan paralel yang dikeluarkan pada waktu tertentu sebagai bagian dari transfer paralel tunggal. |
Catatan
Pustaka klien akan menggunakan default untuk setiap opsi transfer data, jika tidak disediakan. Default ini biasanya dilakukan di lingkungan pusat data, tetapi tidak mungkin cocok untuk lingkungan konsumen rumahan. Opsi transfer data yang disetel dengan buruk dapat mengakibatkan operasi yang terlalu panjang dan bahkan meminta batas waktu. Yang terbaik adalah proaktif dalam menguji nilai-nilai ini, dan menyetelnya berdasarkan kebutuhan aplikasi dan lingkungan Anda.
maxSingleShotSize
Nilainya maxSingleShotSize adalah ukuran blob maksimum dalam byte untuk satu unggahan permintaan.
Jika ukuran data kurang dari atau sama dengan maxSingleShotSize, blob diunggah dengan satu permintaan Put Blob . Jika ukuran blob lebih besar dari maxSingleShotSize, atau jika ukuran blob tidak diketahui, blob diunggah dalam gugus menggunakan serangkaian panggilan Put Block diikuti oleh Put Block List.
Penting untuk dicatat bahwa nilai yang Anda tentukan blockSize tidak membatasi nilai yang Anda tentukan untuk maxSingleShotSize. Argumen maxSingleShotSize menentukan batasan ukuran terpisah untuk permintaan untuk melakukan seluruh operasi sekaligus, tanpa subtransfer. Sering kali kasus yang Anda inginkan maxSingleShotSize setidaknya sebesar nilai yang Anda tentukan untuk blockSize, jika tidak lebih besar. Tergantung pada ukuran transfer data, pendekatan ini bisa lebih berkinerja, karena transfer selesai dengan satu permintaan dan menghindari overhead beberapa permintaan.
Jika Anda tidak yakin nilai apa yang terbaik untuk situasi Anda, opsi yang aman adalah mengatur maxSingleShotSize ke nilai yang sama yang digunakan untuk blockSize.
blockSize
Nilainya blockSize adalah panjang maksimum transfer dalam byte saat mengunggah blob blok dalam gugus.
Seperti disebutkan sebelumnya, nilai ini tidak membatasi maxSingleShotSize, yang bisa lebih besar dari blockSize.
Agar data tetap bergerak secara efisien, pustaka klien mungkin tidak selalu mencapai blockSize nilai untuk setiap transfer. Tergantung pada operasi, nilai maksimum yang didukung untuk ukuran transfer dapat bervariasi. Untuk informasi selengkapnya tentang batas ukuran transfer untuk penyimpanan Blob, lihat bagan di Target skala untuk penyimpanan Blob.
Contoh kode
Contoh kode berikut menunjukkan cara mengatur nilai untuk BlockBlobParallelUploadOptions dan menyertakan opsi sebagai bagian dari panggilan metode pengunggahan. Nilai yang disediakan dalam sampel tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyetel nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.
// Specify data transfer options
const uploadOptions = {
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
concurrency: 2, // maximum number of parallel transfer workers
maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with transfer options
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
Dalam contoh ini, kami mengatur jumlah maksimum pekerja transfer paralel ke 2 menggunakan concurrency properti . Kami juga mengatur maxSingleShotSize ke 8 MiB. Jika ukuran blob lebih kecil dari 8 MiB, hanya satu permintaan yang diperlukan untuk menyelesaikan operasi unggahan. Jika ukuran blob lebih besar dari 8 MiB, blob diunggah dalam gugus dengan ukuran gugus maksimum 4 MiB, yang kami tentukan dalam blockSize properti .
Pertimbangan performa untuk unggahan
Selama pengunggahan, pustaka klien Storage membagi aliran unggahan tertentu menjadi beberapa subupload berdasarkan opsi konfigurasi yang ditentukan oleh BlockBlobParallelUploadOptions. Setiap subupload memiliki panggilan khususnya sendiri ke operasi REST. Dalam contoh ini, operasinya adalah Put Block. Pustaka klien Storage mengelola operasi REST ini secara paralel (tergantung opsi transfer) untuk menyelesaikan unggahan lengkap.
Catatan
Blob blok memiliki jumlah blok maksimum 50.000 blok. Ukuran maksimum blob blok Anda, kemudian, adalah 50.000 kali block_size.
Buffering selama pengunggahan
Lapisan Storage REST tidak mendukung pengambilan operasi pengunggahan REST tempat Anda meninggalkan; transfer individu selesai atau hilang. Untuk memastikan ketahanan untuk unggahan streaming, klien Storage pustaka data buffer untuk setiap panggilan REST individu sebelum memulai unggahan. Selain batasan kecepatan jaringan, perilaku buffering ini adalah alasan untuk mempertimbangkan nilai yang lebih kecil untuk blockSize, bahkan ketika mengunggah secara berurutan. Mengurangi nilai blockSize mengurangi jumlah maksimum data yang di-buffer pada setiap permintaan dan setiap percobaan ulang permintaan yang gagal. Jika Anda sering mengalami batas waktu selama transfer data dengan ukuran tertentu, mengurangi nilai blockSize mengurangi waktu buffering, dan dapat mengakibatkan performa yang lebih baik.
Penyetelan performa untuk unduhan
Menyetel opsi transfer data untuk unduhan hanya tersedia saat menggunakan metode downloadToBuffer . Metode ini mengunduh blob secara paralel dengan buffer berdasarkan nilai yang ditentukan dalam BlobDownloadToBufferOptions. Metode unduhan lainnya tidak mendukung opsi transfer data penyetelan.
Mengatur opsi transfer untuk unduhan
Nilai berikut dapat disetel untuk unduhan saat menggunakan downloadToBuffer metode :
- blockSize: Ukuran blok maksimum yang akan ditransfer untuk setiap permintaan.
- konkurensi: Jumlah maksimum permintaan paralel yang dikeluarkan pada waktu tertentu sebagai bagian dari transfer paralel tunggal.
Pertimbangan performa untuk unduhan
Selama pengunduhan menggunakan downloadToBuffer, pustaka klien Storage membagi permintaan unduhan tertentu menjadi beberapa subdownload berdasarkan opsi konfigurasi yang ditentukan oleh BlobDownloadToBufferOptions. Setiap subdownload memiliki panggilan khususnya sendiri ke operasi REST. Bergantung pada opsi transfer, pustaka klien mengelola operasi REST ini secara paralel untuk menyelesaikan unduhan lengkap.
Contoh kode
Contoh kode berikut menunjukkan cara mengatur nilai untuk BlobDownloadToBufferOptions dan menyertakan opsi sebagai bagian dari panggilan metode downloadToBuffer . Nilai yang disediakan dalam sampel tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyetel nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.
// Specify data transfer options
const downloadToBufferOptions = {
blockSize: 4 * 1024 * 1024, // 4 MiB max block size
concurrency: 2, // maximum number of parallel transfer workers
}
// Download data to buffer
const result = await client.downloadToBuffer(offset, count, downloadToBufferOptions);
Konten terkait
- Untuk memahami selengkapnya tentang faktor-faktor yang dapat memengaruhi performa untuk operasi Azure Storage, lihat Latensi di penyimpanan Blob.
- Untuk melihat daftar pertimbangan desain untuk mengoptimalkan performa aplikasi menggunakan penyimpanan Blob, lihat Daftar periksa performa dan skalabilitas untuk penyimpanan Blob.