Secara default, semua bucket dalam wilayah yang sama di bawah Akun Alibaba Cloud berbagi bandwidth. Ketika beberapa bucket mentransfer data dalam jumlah besar secara bersamaan, kontensi bandwidth dapat menunda transfer untuk layanan kritis. Untuk mengatasi hal ini, konfigurasikan pembatasan kecepatan QoS kolam sumber daya: threshold-based throttling mencegah bucket mengonsumsi bandwidth berlebihan, sedangkan priority-based throttling menjamin bandwidth minimum untuk layanan inti. Kedua metode komplementer ini memastikan beban kerja kritis Anda tetap stabil.
Cara kerja
Threshold-based throttling
Anda dapat menetapkan batas bandwidth untuk objek di setiap level, seperti bucket dan BucketGroups, guna mencegah konsumsi sumber daya berlebihan.
Hierarki relasi
Hierarki kolam sumber daya: Kolam sumber daya dapat berisi hierarki multi-level objek. Diagram berikut menunjukkan beberapa struktur umum.
Dimensi peminta (independen): Peminta bukan bagian dari hierarki kolam sumber daya. Ini merupakan dimensi independen untuk pembatasan kecepatan.
Prinsip pembatasan kecepatan
Prinsip dasar
resource pool: Max 100Gbps
├─ bucket A: Max 40Gbps ← Tidak dapat melebihi 40 Gbps, meskipun sumber daya lain menganggur
├─ bucket B: Max 30Gbps
└─ bucket C: Unlimited ← Dapat menggunakan seluruh bandwidth tersisaAturan kendala
Batas ganda diterapkan secara bersamaan: Bandwidth efektif adalah nilai minimum dari semua batas yang berlaku.
Jumlah bandwidth objek anak tidak boleh melebihi total bandwidth induknya.
Peminta merupakan kendala independen: Kendala ini berlaku selain kendala hierarkis kolam sumber daya, dengan batas terendah yang berlaku.
Contoh
Ketika Pengguna RAM mengakses sebuah bucket, trafik tersebut tunduk pada kedua hal berikut:
Batas peminta (20 Gbps) ← Dimensi independen
Batas bucket (30 Gbps) ← Hierarki kolam sumber daya
Bandwidth maksimum efektif = min(20 Gbps, 30 Gbps) = 20 Gbps
Priority-based throttling
Anda dapat mengonfigurasi 3 hingga 10 level prioritas dalam satu kolam sumber daya. Angka yang lebih tinggi menunjukkan prioritas yang lebih tinggi. Dengan menetapkan komitmen bandwidth minimum untuk objek pada level prioritas berbeda, Anda dapat memastikan layanan berprioritas tinggi menerima bandwidth terlebih dahulu saat terjadi konflik sumber daya. Objek tanpa level prioritas yang ditentukan menggunakan prioritas default. Level prioritas tanpa komitmen bandwidth minimum yang dikonfigurasi menggunakan komitmen default.
Mekanisme inti
Bandwidth terjamin: Setiap level prioritas memiliki komitmen bandwidth minimum, yang menjamin bandwidth yang ditentukan akan tersedia.
Mekanisme preemption: Trafik berprioritas tinggi dapat merebut bandwidth dari trafik berprioritas rendah yang menggunakan bandwidth melebihi komitmen bandwidth minimumnya. Prioritas tertinggi melakukan preemption terlebih dahulu.
Pemanfaatan bandwidth menganggur: Trafik berprioritas rendah dapat menggunakan bagian menganggur dari komitmen bandwidth minimum prioritas lebih tinggi. Namun, trafik berprioritas tinggi selalu memiliki hak utama atas bandwidth yang tersedia.
Kendala konfigurasi: Jumlah semua komitmen bandwidth minimum di seluruh level prioritas tidak boleh melebihi total bandwidth kolam sumber daya.
Skenario khas
Dalam skenario berikut, kolam sumber daya memiliki batas bandwidth total 100 Gbps dan dikonfigurasi dengan beberapa level prioritas. Angka yang lebih tinggi menunjukkan prioritas yang lebih tinggi.
Menggabungkan metode pembatasan kecepatan
Ketika kedua metode digunakan, bandwidth efektif untuk suatu sumber daya ditentukan oleh interaksi antara batas berbasis ambang batas, komitmen minimum berbasis prioritas, dan permintaan aktual.
Aturan prioritas
Batas berbasis ambang batas adalah batas keras: Bandwidth akhir yang dialokasikan tidak boleh melebihi batas ini, terlepas dari komitmen bandwidth minimum.
Komitmen berbasis prioritas adalah jaminan lunak: Sistem berusaha memenuhi komitmen ini, tetapi alokasi tidak boleh melebihi batas keras.
Contoh konfigurasi
Konfigurasi standar
Bucket A dikonfigurasi dengan:
Priority-based throttling: komitmen bandwidth minimum 50 Gbps ← Dimensi prioritas
Threshold-based throttling: batas maksimum 80 Gbps ← Hierarki kolam sumber daya
Hasil: Bandwidth yang tersedia untuk bucket A berkisar antara minimum terjamin 50 Gbps hingga maksimum 80 Gbps.
Konfigurasi yang bertentangan
Jika bucket A memiliki konfigurasi yang bertentangan:
Priority-based throttling: komitmen bandwidth minimum 80 Gbps ← Dimensi prioritas
Threshold-based throttling: batas maksimum 50 Gbps ← Hierarki kolam sumber daya
Hasil: Bandwidth aktual yang tersedia untuk bucket A adalah 50 Gbps. Batas berbasis ambang batas merupakan batas keras dan didahulukan, mengesampingkan komitmen minimum yang lebih tinggi.
Mengajukan permohonan kolam sumber daya
Ketika bandwidth akun Anda di suatu wilayah mencapai atau melebihi 400 Gbps, hubungi Technical Support untuk mengajukan permohonan kolam sumber daya, akses konsol, dan priority-based throttling.
Berikan informasi berikut saat mengirimkan tiket:
Bucket dalam satu kolam sumber daya harus dimiliki oleh pengguna yang sama, berada di wilayah yang sama, dan memiliki jenis redundansi yang sama. Proses pembuatan kolam sumber daya mungkin melibatkan migrasi data dan realokasi sumber daya.
Region: China (Hangzhou)
Resource pool name: qos-resource-pool-1
Bucket list: qos-examplebucket-1, qos-examplebucket-2
Total upload bandwidth: 300 Gbps
Internal network upload bandwidth: 100 Gbps
Public network upload bandwidth: 200 Gbps
Total download bandwidth: 100 Gbps
Internal network download bandwidth: 50 Gbps
Public network download bandwidth: 50 Gbps
Console access to resource pool: Required
Priority-based throttling: RequiredMenambahkan bucket di konsol
Jika Anda telah membuat kolam sumber daya, Anda dapat menambahkan bucket objek ke dalamnya di konsol OSS.
Pada halaman Resource Pool QoS, buka halaman detail kolam sumber daya target, lalu klik tab Buckets .
Klik Add Bucket. Di kotak dialog Add Bucket, Buckets di sebelah kiri menampilkan bucket yang berada di wilayah yang sama dengan kolam sumber daya, menggunakan jenis redundansi yang sama, dan belum ditambahkan ke kolam sumber daya. Bucket yang tidak memenuhi persyaratan ini diredupkan dan tidak dapat dipilih, serta Anda tidak dapat memasukkan nama bucket secara manual. Pilih bucket yang ingin ditambahkan dan klik > untuk memindahkannya ke Buckets Selected di sebelah kanan. Anda dapat menambahkan hingga 20 bucket dalam satu batch. Anda dapat menyaring bucket berdasarkan nama menggunakan kotak pencarian di kedua sisi.
Klik OK. Di kotak dialog Confirm adding the following Buckets to the resource pool , periksa daftar bucket yang akan ditambahkan, lalu klik OK untuk mengirimkan. Pengiriman tidak dapat dibatalkan. Untuk membatalkannya, hubungi Technical Support.
Setelah Anda mengirimkan permintaan, status pemrosesan ditampilkan di atas daftar bucket. Anda dapat mengklik Refresh di pesan untuk memperbarui status. (Daftar aplikasi mungkin tertunda setelah pengiriman.)
Setelah pengiriman, backend biasanya menyelesaikan pemrosesan dalam waktu 24 jam. Saat beberapa bucket berhasil ditambahkan, bucket tersebut dihapus dari pesan pemrosesan, dan hanya bucket yang belum ditambahkan yang tersisa. Setelah semua bucket ditambahkan, pesan pemrosesan menghilang. Jika beberapa bucket masih belum ditambahkan 24 jam setelah pengiriman, pesan tersebut menunjukkan bahwa permintaan penambahan untuk bucket tersebut belum selesai. Dalam kasus ini, hubungi Technical Support.
Hanya bucket objek yang dapat ditambahkan. Bucket tabel dan bucket vektor tidak didukung.
Bucket yang akan ditambahkan harus berada di wilayah yang sama dengan kolam sumber daya dan menggunakan jenis redundansi yang sama. Misalnya, jika semua bucket dalam kolam sumber daya adalah LRS (locally redundant storage), Anda hanya dapat menambahkan bucket LRS di wilayah yang sama.
Anda dapat menambahkan hingga 20 bucket dalam satu batch, dan mengirimkan hingga 2 permintaan penambahan per hari.
Menghapus bucket dari kolam sumber daya tidak didukung.
Threshold-based throttling
Gunakan fitur ini untuk membatasi bandwidth maksimum dan mencegah entitas tertentu mengonsumsi sumber daya berlebihan.
Batas bandwidth bucket
Ini mencegah trafik berlebihan ke satu bucket memengaruhi kinerja bucket lain.
Konsol
Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Kemudian, di sebelah kanan bucket target, klik Modify Throttling Configurations dan atur bandwidth bucket sesuai kebutuhan.
ossutil
Sebelum memulai, Install ossutil.
Konfigurasikan batas bandwidth untuk bucket dengan file XML lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth> </QoSConfiguration>Terapkan konfigurasi bandwidth ke bucket tertentu. Perintah berikut menerapkan konfigurasi ke bucket bernama examplebucket.
ossutil api invoke-operation --op-name put-bucket-qos-info --method PUT --bucket examplebucket --parameters qosInfo --body=file://qos.xmlLihat konfigurasi bandwidth bucket.
ossutil api invoke-operation --op-name get-bucket-qos-info --method GET --bucket examplebucket --parameters qosInfo
SDK
Anda hanya dapat menetapkan batas bandwidth untuk bucket menggunakan Python SDK V2 dan Go SDK V2.
Konfigurasikan batas bandwidth untuk bucket dengan file lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth> </QoSConfiguration>Terapkan konfigurasi bandwidth ke bucket tertentu.
import alibabacloud_oss_v2 as oss def PutBucketQoSInfo(): # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() # Muat konfigurasi default dan dapatkan file konfigurasi. cfg = oss.config.load_default() # Tentukan penyedia kredensial. cfg.credentials_provider = credentials_provider # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. cfg.region = "cn-hangzhou" # Inisialisasi instans OSSClient menggunakan file konfigurasi. client = oss.Client(cfg) # Atur qos_xml_body menjadi string kosong. qos_xml_body = "" # Buka file bernama qos.xml dan baca isinya ke dalam variabel qos_xml_body. with open('qos.xml', 'r') as qos_file: qos_xml_body = qos_file.read() # Tentukan parameter input untuk operasi PutBucketQoSInfo guna menentukan aturan QoS untuk bucket. req = oss.OperationInput( op_name = 'PutBucketQoSInfo', # Nama operasi, menentukan operasi untuk mengatur informasi QoS bucket method = 'PUT', # Jenis metode HTTP. Dalam contoh ini, PUT digunakan untuk memperbarui sumber daya. parameters = { 'qosInfo': '', # Parameter terkait QoS. }, headers = None, # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan bidang ini kosong. body = qos_xml_body, # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml. bucket = 'examplebucket', # Nama bucket. ) # Gunakan metode invoke_operation klien untuk menjalankan permintaan dan mendapatkan respons atau pesan kesalahan. resp = client.invoke_operation(req) # Tampilkan kode status HTTP yang dikembalikan. print(resp.status_code) # Tampilkan header respons. print(resp.headers) if __name__ == "__main__": PutBucketQoSInfo()
API
Panggil operasi PutBucketQoSInfo dengan badan permintaan berikut untuk membatasi bandwidth bucket.
<QoSConfiguration>
<TotalUploadBandwidth>100</TotalUploadBandwidth>
<IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
<ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
<TotalDownloadBandwidth>100</TotalDownloadBandwidth>
<IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
<ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
</QoSConfiguration>Batas bandwidth peminta bucket
Pengguna RAM
Jika beberapa layanan berbagi satu bucket, Anda dapat membatasi bandwidth untuk Pengguna RAM tertentu agar pengguna tersebut tidak mengonsumsi sumber daya berlebihan.
Konsol
Dapatkan ID Pengguna RAM.
Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Kemudian, di sebelah kanan bucket target, klik Configure Bandwidth Throttling Rules dan atur bandwidth yang diperlukan untuk Pengguna RAM mengakses bucket.
ossutil
Sebelum memulai, Install ossutil.
Contoh berikut menunjukkan cara membatasi bandwidth untuk Pengguna RAM yang mengakses bucket dalam kolam sumber daya.
Konfigurasikan batas bandwidth untuk Pengguna RAM yang mengakses bucket dalam kolam sumber daya dengan file XML lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth> </QoSConfiguration>Dapatkan ID Pengguna RAM.
Terapkan konfigurasi bandwidth ke Pengguna RAM. Perintah berikut menerapkan konfigurasi ke Pengguna RAM dengan UID
266xxxxyang mengakses bucketexamplebucket.ossutil api invoke-operation --op-name put-bucket-requester-qos-info --method PUT --bucket=examplebucket --parameters requesterQosInfo --parameters qosRequester=266xxxx --body file://qos.xml(Opsional) Lihat konfigurasi bandwidth untuk Pengguna RAM.
ossutil api invoke-operation --op-name get-bucket-requester-qos-info --method GET --bucket=examplebucket --parameters requesterQosInfo --parameters qosRequester=266xxxx
SDK
Anda hanya dapat membatasi bandwidth untuk Pengguna RAM yang mengakses bucket menggunakan Python SDK V2 dan Go SDK V2.
Konfigurasikan batas bandwidth untuk Pengguna RAM yang mengakses bucket dalam kolam sumber daya dengan file lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth> </QoSConfiguration>Dapatkan ID Pengguna RAM.
Terapkan konfigurasi bandwidth ke Pengguna RAM yang mengakses bucket.
import alibabacloud_oss_v2 as oss def PutBucketRequesterQoSInfo(): # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi. credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() # Muat konfigurasi default dan dapatkan file konfigurasi. cfg = oss.config.load_default() # Tentukan penyedia kredensial. cfg.credentials_provider = credentials_provider # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. cfg.region = "cn-hangzhou" # Inisialisasi instans OSSClient menggunakan file konfigurasi. client = oss.Client(cfg) # Atur qos_xml_body menjadi string kosong. qos_xml_body = "" # Buka file bernama qos.xml dan baca isinya ke dalam variabel qos_xml_body. with open('qos.xml', 'r') as qos_file: qos_xml_body = qos_file.read() # Tentukan parameter input untuk operasi PutBucketRequesterQoSInfo guna mengonfigurasi aturan pembatasan kecepatan untuk peminta yang mengakses bucket. req = oss.OperationInput( op_name = 'PutBucketRequesterQoSInfo', # Nama operasi. method = 'PUT', # Jenis metode HTTP. Dalam contoh ini, PUT digunakan. parameters = { 'requesterQosInfo': '', # Parameter terkait QoS. 'qosRequester': '2598732222222xxxx', # Pengidentifikasi unik untuk peminta, yang digunakan untuk membedakan peminta berbeda. }, headers = None, # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan bidang ini kosong. body = qos_xml_body, # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml. bucket = 'examplebucket', # Nama bucket. ) # Gunakan metode invoke_operation klien untuk menjalankan permintaan dan mendapatkan respons. resp = client.invoke_operation(req) # Tampilkan kode status HTTP yang dikembalikan. print(resp.status_code) # Tampilkan header respons. print(resp.headers) # Tampilkan badan respons, yang biasanya berisi data spesifik yang dikembalikan oleh permintaan. print(resp.http_response.content) if __name__ == "__main__": PutBucketRequesterQoSInfo()
API
Dapatkan ID Pengguna RAM.
Panggil operasi PutBucketRequesterQoSInfo dengan badan permintaan berikut untuk membatasi bandwidth Pengguna RAM yang mengakses bucket.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth> </QoSConfiguration>
Peran RAM
Anda dapat menggunakan bucket dengan Content Delivery Network (CDN) untuk menyimpan aset statis dan mempercepat pengiriman konten. Untuk mengizinkan CDN mengambil file dari bucket privat, Anda harus mengaktifkan origin fetch. CDN mengasumsikan peran RAM AliyunCDNAccessingPrivateOSSRole. Dalam skenario ini, Anda dapat membatasi bandwidth origin fetch.
Konsol
Dapatkan ID peran RAM.
Pada halaman QoS Kolam Sumber Daya, klik nama kolam sumber daya target. Lalu, di sebelah kanan bucket target, klik Configure Bandwidth Throttling Rules dan atur bandwidth pemohon sesuai kebutuhan.
ossutil
Sebelum memulai, Install ossutil.
Konfigurasikan batas bandwidth untuk peran RAM yang mengakses bucket tertentu dengan file XML lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth> </QoSConfiguration>Dapatkan ID peran RAM.
Terapkan konfigurasi bandwidth ke peran RAM. Perintah berikut menerapkan konfigurasi ke peran RAM dengan ID
362xxxxyang mengakses bucketexamplebucket.ossutil api invoke-operation --op-name put-bucket-requester-qos-info --method PUT --bucket=examplebucket --parameters requesterQosInfo --parameters qosRequester=362xxxx --body file://qos.xml(Opsional) Daftar konfigurasi bandwidth untuk semua peran RAM dalam kolam sumber daya.
ossutil api invoke-operation --op-name list-resource-pool-requester-qos-infos --method GET --parameters resourcePool=examplePool --parameters requesterQosInfo
SDK
Anda hanya dapat membatasi bandwidth untuk peran RAM yang mengakses bucket menggunakan Python SDK V2 dan Go SDK V2.
Konfigurasikan batas bandwidth untuk peran RAM yang mengakses bucket dalam kolam sumber daya dengan file lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth> </QoSConfiguration>Dapatkan ID peran RAM.
Terapkan konfigurasi bandwidth ke peran RAM.
import alibabacloud_oss_v2 as oss def PutBucketRequesterQoSInfo(): # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi. credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() # Muat konfigurasi default dan dapatkan file konfigurasi. cfg = oss.config.load_default() # Tentukan penyedia kredensial. cfg.credentials_provider = credentials_provider # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. cfg.region = "cn-hangzhou" # Inisialisasi instans OSSClient menggunakan file konfigurasi. client = oss.Client(cfg) # Atur qos_xml_body menjadi string kosong. qos_xml_body = "" # Buka file bernama qos.xml dan baca isinya ke dalam variabel qos_xml_body. with open('qos.xml', 'r') as qos_file: qos_xml_body = qos_file.read() # Tentukan parameter input untuk operasi PutBucketRequesterQoSInfo guna mengonfigurasi aturan pembatasan kecepatan untuk peminta yang mengakses bucket. req = oss.OperationInput( op_name = 'PutBucketRequesterQoSInfo', # Nama operasi. method = 'PUT', # Jenis metode HTTP. Dalam contoh ini, PUT digunakan. parameters = { 'requesterQosInfo': '', # Parameter terkait QoS. 'qosRequester': '2598732222222xxxx', # Pengidentifikasi unik untuk peminta, yang digunakan untuk membedakan peminta berbeda. }, headers = None, # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan bidang ini kosong. body = qos_xml_body, # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml. bucket = 'examplebucket', # Nama bucket. ) # Gunakan metode invoke_operation klien untuk menjalankan permintaan dan mendapatkan respons. resp = client.invoke_operation(req) # Tampilkan kode status HTTP yang dikembalikan. print(resp.status_code) # Tampilkan header respons. print(resp.headers) # Tampilkan badan respons, yang biasanya berisi data spesifik yang dikembalikan oleh permintaan. print(resp.http_response.content) if __name__ == "__main__": PutBucketRequesterQoSInfo()
API
Dapatkan ID peran RAM.
Panggil operasi PutBucketRequesterQoSInfo dengan badan permintaan berikut untuk membatasi bandwidth peran RAM yang mengakses bucket.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth> </QoSConfiguration>
Batas bandwidth BucketGroup
Anda dapat mengelompokkan bucket berprioritas rendah ke dalam BucketGroup untuk mengelola dan membatasi bandwidth total mereka.
Konsol
Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Kemudian, klik Create A Bucket Group, tentukan nama untuk BucketGroup, dan atur bandwidth yang diperlukan.
Pada halaman kolam sumber daya target, klik Create Bucket Group di sebelah kanan bucket target untuk menambahkan bucket berprioritas rendah ke BucketGroup.
ossutil
Sebelum memulai, Install ossutil.
Perintah berikut menambahkan bucket
scheduled-postsdanarchived-commentske BucketGroup.Tambahkan bucket
scheduled-postske BucketGroup.ossutil api invoke-operation --op-name put-bucket-resource-pool-bucket-group --method PUT --bucket scheduled-posts --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup=test-groupTambahkan bucket
archived-commentske BucketGroup.ossutil api invoke-operation --op-name put-bucket-resource-pool-bucket-group --method PUT --bucket archived-comments --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup=test-group(Opsional) Dapatkan daftar bucket dalam BucketGroup.
ossutil api invoke-operation --op-name list-resource-pool-bucket-groups --method GET --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup
Konfigurasikan batas bandwidth untuk BucketGroup tertentu dalam kolam sumber daya dengan file XML lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>20</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>10</ExtranetUploadBandwidth> <TotalDownloadBandwidth>30</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth> </QoSConfiguration>Terapkan konfigurasi bandwidth ke BucketGroup.
ossutil api invoke-operation --op-name put-resource-pool-bucket-group-qos-info --method PUT --parameters resourcePoolBucketGroupQosInfo --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup=offline-group --body=file://qos.xml(Opsional) Dapatkan konfigurasi bandwidth BucketGroup.
ossutil api invoke-operation --op-name get-resource-pool-bucket-group-qos-info --method GET --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup=offline-group --parameters resourcePoolBucketGroupQoSInfo
SDK
Anda hanya dapat membatasi bandwidth BucketGroup menggunakan Python SDK V2 dan Go SDK V2.
Tambahkan bucket dari kolam sumber daya ke BucketGroup.
import alibabacloud_oss_v2 as oss def PutBucketResourcePoolBucketGroup(): # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi. credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() # Muat konfigurasi default dan dapatkan file konfigurasi. cfg = oss.config.load_default() # Tentukan penyedia kredensial. cfg.credentials_provider = credentials_provider # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. cfg.region = "cn-hangzhou" # Inisialisasi instans OSSClient menggunakan file konfigurasi. client = oss.Client(cfg) # Tentukan parameter input untuk operasi PutBucketResourcePoolBucketGroup. req = oss.OperationInput( op_name = 'PutBucketResourcePoolBucketGroup', # Nama operasi. method = 'PUT', # Jenis metode HTTP. Dalam contoh ini, PUT digunakan. parameters = { 'resourcePoolBucketGroup': 'example-group', # Nama grup bucket dalam kolam sumber daya. 'resourcePool': 'example-resource-pool', # Nama kolam sumber daya. }, headers = None, # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan bidang ini kosong. body = None, # Badan permintaan, yang biasanya tidak diperlukan untuk permintaan PUT. bucket = 'examplebucket', # Nama bucket. ) # Gunakan metode invoke_operation klien untuk menjalankan permintaan dan mendapatkan respons. resp = client.invoke_operation(req) # Tampilkan kode status HTTP yang dikembalikan. print(resp.status_code) # Tampilkan header respons. print(resp.headers) # Tampilkan badan respons, yang biasanya berisi data spesifik yang dikembalikan oleh permintaan. print(resp.http_response.content) if __name__ == "__main__": PutBucketResourcePoolBucketGroup()Konfigurasikan batas bandwidth untuk BucketGroup tertentu dalam kolam sumber daya dengan file XML lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>20</TotalUploadBandwidth> <IntranetUploadBandwidth>-1</IntranetUploadBandwidth> <ExtranetUploadBandwidth>10</ExtranetUploadBandwidth> <TotalDownloadBandwidth>30</TotalDownloadBandwidth> <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth> </QoSConfiguration>Terapkan konfigurasi bandwidth ke BucketGroup.
import alibabacloud_oss_v2 as oss def PutResourcePoolBucketGroupQoSInfo(): # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi. credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() # Muat konfigurasi default dan dapatkan file konfigurasi. cfg = oss.config.load_default() # Tentukan penyedia kredensial. cfg.credentials_provider = credentials_provider # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. cfg.region = "cn-hangzhou" # Inisialisasi instans OSSClient menggunakan file konfigurasi. client = oss.Client(cfg) # Atur qos_xml_body menjadi string kosong. qos_xml_body = "" # Buka dan baca file qos.xml lalu tulis isinya ke dalam variabel qos_xml_body. with open('qos.xml', 'r') as qos_file: qos_xml_body = qos_file.read() # Tentukan parameter input untuk operasi PutResourcePoolBucketGroupQoSInfo. req = oss.OperationInput( op_name = 'PutResourcePoolBucketGroupQoSInfo', # Nama operasi. method = 'PUT', # Jenis metode HTTP. Dalam contoh ini, PUT digunakan. parameters = { 'resourcePoolBucketGroupQosInfo': '', # Parameter terkait QoS. 'resourcePool': 'example-resource-pool', # Nama kolam sumber daya 'resourcePoolBucketGroup': 'example-group', # Nama grup bucket. }, headers = None, # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan bidang ini kosong. body = qos_xml_body, # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml. bucket = None, # Nama bucket, yang tidak diperlukan untuk permintaan PUT. Operasi ini tidak dilakukan pada bucket tertentu. ) # Gunakan metode invoke_operation klien untuk menjalankan permintaan dan mendapatkan respons. resp = client.invoke_operation(req) # Tampilkan kode status HTTP yang dikembalikan. print(resp.status_code) # Tampilkan header respons. print(resp.headers) # Tampilkan badan respons, yang biasanya berisi data spesifik yang dikembalikan oleh permintaan. print(resp.http_response.content) if __name__ == "__main__": PutResourcePoolBucketGroupQoSInfo()
API
Panggil operasi PutResourcePoolBucketGroupQoSInfo dengan badan permintaan berikut untuk membatasi bandwidth BucketGroup.
<QoSConfiguration>
<TotalUploadBandwidth>20</TotalUploadBandwidth>
<IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
<ExtranetUploadBandwidth>10</ExtranetUploadBandwidth>
<TotalDownloadBandwidth>30</TotalDownloadBandwidth>
<IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
<ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
</QoSConfiguration>Batas bandwidth peminta kolam sumber daya
Ketika beberapa Pengguna RAM mengakses bucket berbeda dalam kolam sumber daya yang sama, Anda dapat menetapkan batas bandwidth individual untuk mencegah satu pengguna saja memonopoli bandwidth kolam.
Konsol
Dapatkan ID Pengguna RAM atau ID peran RAM.
Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Pada tab Requesters, klik Modify Throttling Configurations di sebelah kanan Pengguna RAM atau peran RAM target dan atur bandwidth peminta yang diperlukan.
ossutil
Sebelum memulai, Install ossutil.
Konfigurasikan batas bandwidth untuk Pengguna RAM atau peran RAM yang mengakses kolam sumber daya dengan file XML lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>50</IntranetUploadBandwidth> <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth> <TotalDownloadBandwidth>200</TotalDownloadBandwidth> <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth> </QoSConfiguration>Dapatkan ID Pengguna RAM atau ID peran RAM.
Terapkan konfigurasi bandwidth ke Pengguna RAM. Perintah berikut menerapkan konfigurasi ke Pengguna RAM dengan UID
266xxxx.ossutil api invoke-operation --op-name put-resource-pool-requester-qos-info --method PUT --parameters resourcePool=examplepool --parameters qosRequester=266xxxx --parameters requesterQosInfo --body=file://qos.xml(Opsional) Daftar konfigurasi bandwidth untuk semua Pengguna RAM dalam kolam sumber daya.
ossutil api invoke-operation --op-name list-resource-pool-requester-qos-infos --method GET --parameters resourcePool=examplePool --parameters requesterQosInfo
SDK
Anda hanya dapat membatasi bandwidth untuk Pengguna RAM atau peran RAM yang mengakses kolam sumber daya menggunakan Python SDK V2 dan Go SDK V2.
Konfigurasikan batas bandwidth untuk Pengguna RAM atau peran RAM tertentu yang mengakses kolam sumber daya dengan file lokal bernama qos.xml.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>50</IntranetUploadBandwidth> <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth> <TotalDownloadBandwidth>200</TotalDownloadBandwidth> <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth> </QoSConfiguration>Dapatkan ID Pengguna RAM atau ID peran RAM.
Terapkan konfigurasi bandwidth ke Pengguna RAM atau peran RAM.
import alibabacloud_oss_v2 as oss def PutResourcePoolRequesterQoSInfo(): # Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi. credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider() # Muat konfigurasi default dan dapatkan file konfigurasi. cfg = oss.config.load_default() # Tentukan penyedia kredensial. cfg.credentials_provider = credentials_provider # Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. cfg.region = "cn-hangzhou" # Inisialisasi instans OSSClient menggunakan file konfigurasi. client = oss.Client(cfg) # Inisialisasi qos_xml_body sebagai string kosong qos_xml_body = "" # Buka file bernama qos.xml dan baca isinya ke dalam variabel qos_xml_body. with open('qos.xml', 'r') as qos_file: qos_xml_body = qos_file.read() # Tentukan parameter input untuk operasi PutResourcePoolRequesterQoSInfo. req = oss.OperationInput( op_name = 'PutResourcePoolRequesterQoSInfo', # Nama operasi. method = 'PUT', # Jenis metode HTTP. Dalam contoh ini, PUT digunakan. parameters = { 'requesterQosInfo': '', # Parameter terkait QoS. 'resourcePool': 'example-resource-pool', # Nama kolam sumber daya. 'qosRequester': '2598732222222xxxx', # ID peminta. }, headers = None, # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan bidang ini kosong. body = qos_xml_body, # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml. bucket = None, # Nama bucket, yang tidak diperlukan untuk permintaan PUT. Operasi ini tidak dilakukan pada bucket tertentu. ) # Gunakan metode invoke_operation klien untuk menjalankan permintaan dan mendapatkan respons. resp = client.invoke_operation(req) # Tampilkan kode status HTTP yang dikembalikan. print(resp.status_code) # Tampilkan header respons. print(resp.headers) # Tampilkan badan respons, yang biasanya berisi data spesifik yang dikembalikan oleh permintaan. print(resp.http_response.content) if __name__ == "__main__": PutResourcePoolRequesterQoSInfo()
API
Dapatkan ID Pengguna RAM atau ID peran RAM.
Panggil operasi PutResourcePoolRequesterQoSInfo dengan badan permintaan berikut untuk membatasi bandwidth Pengguna RAM atau peran RAM yang mengakses kolam sumber daya.
<QoSConfiguration> <TotalUploadBandwidth>100</TotalUploadBandwidth> <IntranetUploadBandwidth>50</IntranetUploadBandwidth> <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth> <TotalDownloadBandwidth>200</TotalDownloadBandwidth> <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth> </QoSConfiguration>
Konfigurasi priority-based throttling
Gunakan metode ini untuk menjamin bandwidth minimum bagi layanan inti dan memprioritaskan objek berprioritas tinggi saat terjadi konflik sumber daya.
Konfigurasi prioritas kolam sumber daya
Jika kolam sumber daya berisi beberapa bucket, Anda dapat mengonfigurasi prioritas untuk memastikan bucket untuk layanan inti menerima bandwidth yang cukup, terutama saat terjadi konflik sumber daya.
ossutil
Buat file konfigurasi QoS prioritas bernama
priority-qos.xml.<PriorityQosConfiguration> <PriorityCount>3</PriorityCount> <DefaultPriorityLevel>1</DefaultPriorityLevel> <DefaultGuaranteedQosConfiguration> <TotalUploadBandwidth>10</TotalUploadBandwidth> <IntranetUploadBandwidth>5</IntranetUploadBandwidth> <ExtranetUploadBandwidth>5</ExtranetUploadBandwidth> <TotalDownloadBandwidth>20</TotalDownloadBandwidth> <IntranetDownloadBandwidth>10</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>10</ExtranetDownloadBandwidth> </DefaultGuaranteedQosConfiguration> <QosPriorityLevelConfiguration> <PriorityLevel>3</PriorityLevel> <GuaranteedQosConfiguration> <TotalUploadBandwidth>50</TotalUploadBandwidth> <TotalDownloadBandwidth>80</TotalDownloadBandwidth> <ExtranetUploadBandwidth>30</ExtranetUploadBandwidth> <IntranetUploadBandwidth>20</IntranetUploadBandwidth> <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth> <IntranetDownloadBandwidth>30</IntranetDownloadBandwidth> </GuaranteedQosConfiguration> <Subjects> <Bucket>critical-bucket</Bucket> <BucketGroup>core-group</BucketGroup> </Subjects> </QosPriorityLevelConfiguration> <QosPriorityLevelConfiguration> <PriorityLevel>2</PriorityLevel> <GuaranteedQosConfiguration> <TotalUploadBandwidth>30</TotalUploadBandwidth> <TotalDownloadBandwidth>50</TotalDownloadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <IntranetUploadBandwidth>10</IntranetUploadBandwidth> <ExtranetDownloadBandwidth>30</ExtranetDownloadBandwidth> <IntranetDownloadBandwidth>20</IntranetDownloadBandwidth> </GuaranteedQosConfiguration> <Subjects> <Bucket>important-bucket</Bucket> </Subjects> </QosPriorityLevelConfiguration> </PriorityQosConfiguration>Terapkan konfigurasi.
ossutil api invoke-operation --op-name put-resource-pool-priority-qos-configuration --method PUT --parameters resourcePool=hz-rp-03 --parameters priorityQos --body=file://priority-qos.xmlDapatkan dan verifikasi konfigurasi.
ossutil api invoke-operation --op-name get-resource-pool-priority-qos-configuration --method GET --parameters resourcePool=hz-rp-03 --parameters priorityQos
SDK
package main
import (
"bytes"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah ke cn-hangzhou untuk China (Hangzhou).
var region = "cn-hangzhou"
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Tentukan nama kolam sumber daya.
resourcePool := "hz-rp-01"
// Baca konten file konfigurasi QoS prioritas.
qosConf, err := os.ReadFile("priority-qos.xml")
if err != nil {
// Jika terjadi kesalahan saat membaca file konfigurasi QoS, cetak pesan kesalahan dan keluar dari program.
fmt.Printf("gagal membaca qos.xml: %v\n", err)
os.Exit(1)
}
// Hitung hash MD5 dari data input dan ubah menjadi string yang dikodekan Base64.
calcMd5 := func(input []byte) string {
if len(input) == 0 {
return "1B2M2Y8AsgTpgAmY7PhCfg=="
}
h := md5.New()
h.Write(input)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// Buat parameter input untuk operasi, termasuk aksi, jenis metode, dan parameter lainnya.
input := &oss.OperationInput{
OpName: "PutResourcePoolPriorityQoSConfiguration", // Aksi.
Method: "PUT", // Metode HTTP.
Parameters: map[string]string{
"priorityQos": "", // Parameter terkait QoS prioritas.
"resourcePool": resourcePool, // Nama kolam sumber daya.
},
Headers: map[string]string{
"Content-MD5": calcMd5(qosConf), // Atur hash MD5 dari badan permintaan untuk validasi integritas data.
},
Body: bytes.NewReader(qosConf), // Badan permintaan, yang berisi konten konfigurasi QoS.
Bucket: nil, // Operasi ini tidak berlaku untuk bucket tertentu.
}
// Jalankan operasi dan terima respons atau kesalahan.
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// Jika terjadi kesalahan, cetak pesan kesalahan dan keluar dari program.
fmt.Printf("jalankan operasi mendapat kesalahan: %v\n", err)
os.Exit(1)
}
// Cetak hasil operasi.
fmt.Println("Hasil PutResourcePoolPriorityQoSConfiguration:", res.Status)
}API
Konfigurasi prioritas peminta kolam sumber daya
Dalam platform SaaS multi-tenant, Anda dapat menetapkan prioritas kepada peminta dari tier berbeda yang mengakses kolam sumber daya yang sama. Ini menjamin bandwidth bagi pelanggan VIP, sementara pelanggan lain berbagi sumber daya yang tersisa.
ossutil
Buat file konfigurasi QoS prioritas peminta bernama
requester-priority-qos.xml.<PriorityQosConfiguration> <PriorityCount>3</PriorityCount> <DefaultPriorityLevel>1</DefaultPriorityLevel> <DefaultGuaranteedQosConfiguration> <TotalUploadBandwidth>10</TotalUploadBandwidth> <IntranetUploadBandwidth>5</IntranetUploadBandwidth> <ExtranetUploadBandwidth>5</ExtranetUploadBandwidth> <TotalDownloadBandwidth>20</TotalDownloadBandwidth> <IntranetDownloadBandwidth>10</IntranetDownloadBandwidth> <ExtranetDownloadBandwidth>10</ExtranetDownloadBandwidth> </DefaultGuaranteedQosConfiguration> <QosPriorityLevelConfiguration> <PriorityLevel>3</PriorityLevel> <GuaranteedQosConfiguration> <TotalUploadBandwidth>60</TotalUploadBandwidth> <TotalDownloadBandwidth>100</TotalDownloadBandwidth> <ExtranetUploadBandwidth>40</ExtranetUploadBandwidth> <IntranetUploadBandwidth>20</IntranetUploadBandwidth> <ExtranetDownloadBandwidth>60</ExtranetDownloadBandwidth> <IntranetDownloadBandwidth>40</IntranetDownloadBandwidth> </GuaranteedQosConfiguration> <Subjects> <Requester>123456789012****</Requester> <Requester>234567890123****</Requester> </Subjects> </QosPriorityLevelConfiguration> <QosPriorityLevelConfiguration> <PriorityLevel>2</PriorityLevel> <GuaranteedQosConfiguration> <TotalUploadBandwidth>30</TotalUploadBandwidth> <TotalDownloadBandwidth>50</TotalDownloadBandwidth> <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth> <IntranetUploadBandwidth>10</IntranetUploadBandwidth> <ExtranetDownloadBandwidth>30</ExtranetDownloadBandwidth> <IntranetDownloadBandwidth>20</IntranetDownloadBandwidth> </GuaranteedQosConfiguration> <Subjects> <Requester>345678901234****</Requester> </Subjects> </QosPriorityLevelConfiguration> </PriorityQosConfiguration>Terapkan konfigurasi.
ossutil api invoke-operation --op-name put-resource-pool-requester-priority-qos-configuration --method PUT --parameters resourcePool=hz-rp-03 --parameters requesterPriorityQos --body=file://requester-priority-qos.xml(Opsional) Dapatkan dan verifikasi konfigurasi.
ossutil api invoke-operation --op-name get-resource-pool-requester-priority-qos-configuration --method GET --parameters resourcePool=hz-rp-03 --parameters requesterPriorityQos
SDK
package main
import (
"bytes"
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"os"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
func main() {
// Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah ke cn-hangzhou untuk China (Hangzhou).
var region = "cn-hangzhou"
// Muat konfigurasi default dan atur penyedia kredensial serta wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Tentukan nama kolam sumber daya.
resourcePool := "hz-rp-01"
// Baca konten file konfigurasi QoS prioritas peminta.
qosConf, err := os.ReadFile("requester-priority-qos.xml")
if err != nil {
// Jika terjadi kesalahan saat membaca file konfigurasi QoS, cetak pesan kesalahan dan keluar dari program.
fmt.Printf("gagal membaca qos.xml: %v\n", err)
os.Exit(1)
}
// Hitung hash MD5 dari data input dan ubah menjadi string yang dikodekan Base64.
calcMd5 := func(input []byte) string {
if len(input) == 0 {
return "1B2M2Y8AsgTpgAmY7PhCfg=="
}
h := md5.New()
h.Write(input)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// Buat parameter input untuk operasi, termasuk aksi, jenis metode, dan parameter lainnya.
input := &oss.OperationInput{
OpName: "PutResourcePoolRequesterPriorityQoSConfiguration", // Aksi.
Method: "PUT", // Metode HTTP.
Parameters: map[string]string{
"requesterPriorityQos": "", // Parameter terkait QoS prioritas peminta.
"resourcePool": resourcePool, // Nama kolam sumber daya.
},
Headers: map[string]string{
"Content-MD5": calcMd5(qosConf), // Atur hash MD5 dari badan permintaan untuk validasi integritas data.
},
Body: bytes.NewReader(qosConf), // Badan permintaan, yang berisi konten konfigurasi QoS.
Bucket: nil, // Operasi ini tidak berlaku untuk bucket tertentu.
}
// Jalankan operasi dan terima respons atau kesalahan.
res, err := client.InvokeOperation(context.TODO(), input)
if err != nil {
// Jika terjadi kesalahan, cetak pesan kesalahan dan keluar dari program.
fmt.Printf("jalankan operasi mendapat kesalahan: %v\n", err)
os.Exit(1)
}
// Cetak hasil operasi.
fmt.Println("Hasil PutResourcePoolRequesterPriorityQoSConfiguration:", res.Status)
}API
Monitoring dan Peringatan
Monitor penggunaan bandwidth
Buka halaman Cloud Monitor-Object Storage Service (OSS) Resource Pool untuk memantau penggunaan bandwidth real-time layanan kritis dalam kolam sumber daya Anda. Hal ini memastikan alokasi sumber daya yang efektif dan stabilitas layanan.
Atur peringatan bandwidth
Untuk menjaga stabilitas layanan kritis, Anda dapat membuat aturan peringatan di layanan Cloud Monitor. Cloud Monitor secara otomatis memicu peringatan ketika penggunaan bandwidth melebihi 80%, memungkinkan Anda segera menyesuaikan konfigurasi bandwidth untuk trafik puncak.
Penerapan produksi
Perencanaan kapasitas
1. Jaga jumlah komitmen bandwidth minimum di bawah 50% dari total bandwidth kolam sumber daya.
Menyisakan setidaknya 50% bandwidth Anda sebagai ruang fleksibel untuk penjadwalan dinamis meningkatkan pemanfaatan keseluruhan kolam sumber daya.
Konfigurasi yang direkomendasikan:
Total bandwidth kolam sumber daya: 100 Gbps
Komitmen bandwidth minimum Priority 3: 20 Gbps
Komitmen bandwidth minimum Priority 2: 20 Gbps
Komitmen bandwidth minimum Priority 1: 10 Gbps
Total: 50 Gbps (50 Gbps disisakan sebagai ruang fleksibel)2. Gunakan 3 hingga 5 level prioritas.
Terlalu banyak level prioritas meningkatkan kompleksitas manajemen. Kami merekomendasikan mengklasifikasikan layanan ke dalam 3–5 level berdasarkan tingkat kepentingan bisnis:
Layanan inti (prioritas 4–5)
Layanan penting (prioritas 3)
Layanan standar (prioritas 1–2)
3. Atur batas pembatasan kecepatan berbasis ambang batas lebih tinggi daripada komitmen bandwidth minimum.
Hal ini memungkinkan objek berprioritas tinggi menggunakan lebih banyak bandwidth saat kapasitas tersedia:
Konfigurasi yang direkomendasikan:
Komitmen bandwidth minimum: 50 Gbps untuk Bucket A
Batas pembatasan kecepatan berbasis ambang batas: 80 Gbps untuk Bucket A
Bandwidth efektif: 50–80 Gbps (dijamin 50 Gbps, dibatasi maksimum 80 Gbps)Praktik terbaik
Kasus penggunaan 1: Platform video on demand
Streaming langsung: Tetapkan prioritas 3 dengan komitmen bandwidth minimum 50 Gbps.
Konten on-demand: Tetapkan prioritas 1 dengan komitmen bandwidth minimum 20 Gbps.
Origin fetch CDN: Terapkan batas pembatasan kecepatan berbasis ambang batas 100 Gbps.
Kasus penggunaan 2: Platform SaaS multi-tenant
Pelanggan enterprise: Tetapkan prioritas 3 dengan komitmen bandwidth minimum khusus.
Pelanggan tier gratis: Tetapkan prioritas 1 untuk berbagi sumber daya yang tersisa.
Batas per tenant: Gunakan pembatasan kecepatan berbasis ambang batas untuk mencegah satu tenant saja mengonsumsi bandwidth berlebihan.
Kasus penggunaan 3: Analitik data lake
Analytik real-time: Tetapkan prioritas 2 dengan komitmen bandwidth minimum 30 Gbps.
Analytik batch: Tetapkan prioritas 1 dengan komitmen bandwidth minimum 20 Gbps.
Pengarsipan data: Terapkan batas pembatasan kecepatan berbasis ambang batas 10 Gbps.
Mitigasi risiko
1. Tinjau penggunaan kuota secara berkala
Gunakan Cloud Monitor untuk melacak tren penggunaan bandwidth semua objek dan sesuaikan kuota sesuai kebutuhan:
Jika objek berprioritas tinggi secara konsisten gagal menerima komitmen bandwidth minimumnya (misalnya, jika tingkat pemenuhan di bawah 95%), pertimbangkan untuk meningkatkan komitmennya atau mengurangi komitmen untuk objek berprioritas rendah.
Jika objek berprioritas rendah sering kekurangan bandwidth, pertimbangkan untuk mengurangi komitmen bandwidth minimum objek berprioritas tinggi atau memperluas kapasitas kolam sumber daya.
2. Atur peringatan multi-level
Level peringatan (80%): Gunakan untuk peringatan dini, memberikan waktu untuk menyiapkan rencana perluasan kapasitas.
Level kritis (90%): Gunakan untuk memicu tindakan segera, seperti mengaktifkan rencana darurat.
3. Hindari konflik konfigurasi
Jumlah semua komitmen bandwidth minimum tidak boleh melebihi total bandwidth kolam sumber daya.
Batas pembatasan kecepatan berbasis ambang batas untuk objek harus lebih tinggi daripada komitmen bandwidth minimumnya.
Jika bucket merupakan bagian dari BucketGroup, prioritas BucketGroup didahulukan daripada pengaturan prioritas individu bucket.
4. Kelola perubahan dan rollback
Sebelum melakukan perubahan signifikan, validasi konfigurasi Anda di lingkungan staging.
Backup konfigurasi saat ini untuk rollback cepat jika diperlukan.
Jadwalkan semua perubahan selama jam sepi untuk meminimalkan dampak pada layanan Anda.
Kuota dan batas
Item | Kuota/batas |
Kolam sumber daya | Hingga 100 kolam sumber daya per wilayah. |
Hingga 100 bucket per kolam sumber daya. | |
Hingga 100 grup bucket per kolam sumber daya. | |
Kolam sumber daya mendukung pembatasan kecepatan hingga 300 peminta. | |
Saat menambahkan bucket ke kolam sumber daya di konsol, Anda dapat menambahkan hingga 20 bucket dalam satu batch. | |
Bucket group | Nama harus terdiri dari 3 hingga 30 karakter. |
Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung (-). | |
Priority-based throttling | Jumlah level prioritas: 3 hingga 10. |
Level prioritas: Bilangan bulat dari 1 hingga jumlah total level prioritas. | |
Jumlah semua komitmen bandwidth minimum tidak boleh melebihi total bandwidth kolam sumber daya. | |
Komitmen bandwidth minimum diperlukan untuk setiap level prioritas kecuali jika konfigurasi default telah ditetapkan. | |
Nilai minimum untuk komitmen bandwidth minimum adalah MIN[5, (ambang batas item terkait dalam kolam sumber daya induk) / (2 * jumlah level prioritas)] Gbps. | |
Parameter bandwidth | Bilangan bulat positif: Batas spesifik dalam Gbps. |
-1: Tanpa Batas (berbagi bandwidth kolam sumber daya). | |
0: Melarang jenis trafik ini (gunakan dengan hati-hati). | |
Waktu berlaku | Dalam waktu 5 menit. |