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 Go, 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 properti 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
Jika ukuran total blob kurang dari atau sama dengan 256 MB, data diunggah dengan satu permintaan Put Blob . Jika ukuran blob lebih besar dari 256 MB, atau jika ukuran blob tidak diketahui, blob diunggah dalam gugus menggunakan serangkaian panggilan Put Block diikuti oleh Put Block List.
Properti berikut dapat dikonfigurasi dan disetel berdasarkan kebutuhan aplikasi Anda:
-
BlockSize: Panjang maksimum transfer dalam byte saat mengunggah blob blok dalam gugus. Default ke 4 MB. -
Concurrency: Jumlah maksimum subtransfer yang dapat digunakan secara paralel. Default ke 5.
Opsi konfigurasi ini tersedia saat mengunggah menggunakan metode berikut:
Metode Unggah tidak mendukung opsi ini, dan mengunggah data dalam satu permintaan.
Catatan
Pustaka klien 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.
Ukuran Blok
Argumen BlockSize adalah panjang maksimum transfer dalam byte saat mengunggah blob blok dalam gugus.
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 menentukan nilai untuk instans UploadFileOptions dan meneruskan opsi konfigurasi ini sebagai parameter ke UploadFile.
Nilai yang disediakan dalam sampel ini tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyetel nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.
func uploadBlobWithTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Open the file for reading
file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
handleError(err)
defer file.Close()
// Upload the data to a block blob with transfer options
_, err = client.UploadFile(context.TODO(), containerName, blobName, file,
&azblob.UploadFileOptions{
BlockSize: int64(8 * 1024 * 1024), // 8 MiB
Concurrency: uint16(2),
})
handleError(err)
}
Dalam contoh ini, kami mengatur jumlah pekerja transfer paralel ke 2, menggunakan Concurrency bidang . Konfigurasi ini membuka hingga dua koneksi secara bersamaan, memungkinkan unggahan terjadi secara paralel. Jika ukuran blob lebih besar dari 256 MB, blob diunggah dalam gugus dengan ukuran gugus maksimum 8 MiB, sebagaimana diatur oleh Block_Size bidang .
Pertimbangan performa untuk unggahan
Selama pengunggahan, pustaka klien Storage membagi aliran unggahan tertentu menjadi beberapa subupload berdasarkan opsi konfigurasi yang ditentukan selama konstruksi klien. Setiap subupload memiliki panggilan khususnya sendiri ke operasi REST. Pustaka klien Storage mengelola operasi REST ini secara paralel (tergantung opsi transfer) untuk menyelesaikan unggahan lengkap.
Anda dapat mempelajari bagaimana pustaka klien menangani buffering di bagian berikut.
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 REST Storage tidak mendukung melanjutkan operasi pengunggahan REST dari titik terakhir; setiap transfer harus selesai atau dianggap hilang. Untuk memastikan ketahanan unggahan streaming, pustaka klien Storage membuffer data 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 dengan benar adalah kunci untuk performa yang dapat diandalkan untuk unduhan. Transfer penyimpanan dipartisi ke dalam beberapa subtransfer berdasarkan nilai properti ini.
Mengatur opsi transfer untuk unduhan
Properti berikut dapat disetel berdasarkan kebutuhan aplikasi Anda:
-
BlockSize: Ukuran gugus maksimum yang digunakan untuk mengunduh blob. Default ke 4 MB. -
Concurrency: Jumlah maksimum subtransfer yang dapat digunakan secara paralel. Default ke 5.
Opsi ini tersedia saat mengunduh menggunakan metode berikut:
Metode DownloadStream tidak mendukung opsi ini, dan mengunduh data dalam satu permintaan.
Contoh kode
Contoh kode berikut menunjukkan cara menentukan nilai untuk instans DownloadFileOptions dan meneruskan opsi konfigurasi ini sebagai parameter ke DownloadFile.
Nilai yang disediakan dalam sampel ini tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyetel nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.
func downloadBlobTransferOptions(client *azblob.Client, containerName string, blobName string) {
// Create or open a local file where we can download the blob
file, err := os.Create("path/to/sample/file")
handleError(err)
// Download the blob to the local file
_, err = client.DownloadFile(context.TODO(), containerName, blobName, file,
&azblob.DownloadFileOptions{
BlockSize: int64(4 * 1024 * 1024), // 4 MiB
Concurrency: uint16(2),
})
handleError(err)
}
Pertimbangan performa untuk unduhan
Selama pengunduhan, pustaka klien Storage membagi permintaan unduhan tertentu menjadi beberapa subdownload berdasarkan opsi konfigurasi yang ditentukan selama konstruksi klien. Setiap subdownload memiliki panggilan tersendiri yang khusus untuk operasi REST. Bergantung pada opsi transfer, pustaka klien mengelola operasi REST ini secara paralel untuk menyelesaikan unduhan lengkap.
Konten terkait
- Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk Go. Lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi Anda.
- Untuk memahami selengkapnya tentang faktor-faktor yang dapat memengaruhi kinerja 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.