全部产品
Search
文档中心

Object Storage Service:Gunakan QoS kolam sumber daya untuk menjamin bandwidth bagi layanan kritis

更新时间:Dec 17, 2025

Secara default, semua bucket yang dimiliki oleh Akun Alibaba Cloud dalam wilayah yang sama berbagi bandwidth. Ketika beberapa bucket secara bersamaan mentransfer data dalam jumlah besar, persaingan bandwidth dapat menyebabkan penundaan transmisi pada layanan kritis. Anda dapat mengatasi masalah ini dengan mengonfigurasi pembatasan kecepatan Quality of Service (QoS) kolam sumber daya. Threshold-based throttling mencegah suatu bucket menggunakan terlalu banyak bandwidth, sedangkan Priority-based throttling menjamin bandwidth minimum untuk layanan inti. Kedua metode ini saling melengkapi guna memastikan operasi stabil layanan penting.

Cara kerja

Threshold-based throttling

Anda dapat menetapkan batas bandwidth untuk objek pada berbagai level, seperti bucket dan BucketGroups, guna mencegah penggunaan sumber daya yang berlebihan.

Hierarki hubungan

Hierarki kolam sumber daya: Kolam sumber daya dapat memiliki struktur multi-level. Berikut adalah struktur hierarkis umum.

Skenario 1: Struktur bucket datar

image

Skenario 2: BucketGroups bersarang

image

Skenario 3: Campuran BucketGroups dan bucket

image

Dimensi pembatasan peminta (dimensi independen): Peminta bukan anggota hierarki kolam sumber daya dan merupakan dimensi pembatasan yang independen.

Skenario 4: Pembatasan peminta dan pembatasan hierarki kolam sumber daya berlaku secara bersamaan

image

Prinsip pembatasan

Prinsip dasar

Resource pool: Max 100 Gbps
├─ Bucket A: Max 40 Gbps ← Tidak dapat melebihi 40 Gbps meskipun idle
├─ Bucket B: Max 30 Gbps
└─ Bucket C: Unlimited ← Dapat menggunakan seluruh bandwidth tersisa

Aturan kendala

  1. Batasan pada beberapa level berlaku secara bersamaan: Bandwidth aktual adalah nilai minimum dari semua aturan aktif.

  2. Jumlah bandwidth objek di level bawah tidak boleh melebihi total bandwidth objek di level atas.

  3. Dimensi peminta merupakan kendala independen: Berlaku bersamaan dengan kendala hierarki kolam sumber daya. Nilai minimum yang digunakan.

Contoh

Ketika Pengguna RAM mengakses sebuah bucket, akses tersebut tunduk pada batasan berikut:

  • Batasan peminta (20 Gbps) ← Dimensi independen

  • Batasan bucket (30 Gbps) ← Level kolam sumber daya

Bandwidth maksimum aktual = min(20 Gbps, 30 Gbps) = 20 Gbps

Priority-based throttling

Anda dapat mengonfigurasi 3 hingga 10 level prioritas untuk kolam sumber daya. Angka yang lebih besar menunjukkan prioritas yang lebih tinggi. Anda dapat menetapkan komitmen bandwidth minimum untuk objek dengan prioritas berbeda guna memastikan layanan berprioritas tinggi menerima bandwidth terlebih dahulu saat terjadi persaingan sumber daya. Jika Anda tidak mengonfigurasi level prioritas untuk suatu objek, maka level prioritas default akan digunakan. Jika Anda tidak mengonfigurasi komitmen bandwidth minimum untuk suatu level prioritas, maka komitmen bandwidth minimum default akan digunakan.

Mekanisme inti

  1. Jaminan komitmen minimum: Setiap level prioritas memiliki komitmen bandwidth minimum. Bandwidth ini dijamin secara ketat.

  2. Mekanisme preemption: Objek berprioritas tinggi dapat merebut bandwidth yang digunakan oleh objek berprioritas rendah di luar komitmen minimum mereka. Objek dengan prioritas lebih tinggi memiliki hak utama dalam preemption.

  3. Pemanfaatan sumber daya idle: Objek berprioritas rendah dapat menggunakan komitmen bandwidth minimum idle dari objek berprioritas tinggi. Namun, objek berprioritas lebih tinggi memiliki hak utama dalam menggunakan sumber daya idle tersebut.

  4. Kendala konfigurasi: Jumlah seluruh komitmen bandwidth minimum ≤ Total bandwidth kolam sumber daya.

Skenario khas

Pada skenario berikut, batas bandwidth total kolam sumber daya adalah 100 Gbps, dan terdapat tiga level prioritas: Prioritas 1 hingga Prioritas 3.

Skenario 1: Objek berprioritas tinggi merebut bandwidth yang digunakan objek berprioritas rendah di luar komitmen minimumnya

Setiap level prioritas memiliki komitmen minimum 20 Gbps. Prioritas 1 memerlukan 10 Gbps, Prioritas 2 memerlukan 30 Gbps, dan Prioritas 3 memerlukan 80 Gbps.

Prioritas

Komitmen minimum

Diperlukan

Alokasi aktual

Deskripsi

Prioritas 3

20 Gbps

80 Gbps

70 Gbps

Mendapatkan komitmen minimum 20 Gbps + merebut 10 Gbps bandwidth idle dari Prioritas 1 + mendapatkan sisa 40 Gbps dari kolam sumber daya.

Prioritas 2

20 Gbps

30 Gbps

20 Gbps

Mendapatkan komitmen minimum 20 Gbps. Bandwidth tambahan yang diperlukan direbut oleh Prioritas 3.

Prioritas 1

20 Gbps

10 Gbps

10 Gbps

Dialokasikan 10 Gbps sesuai kebutuhan. Komitmen minimum idle sebesar 10 Gbps direbut oleh Prioritas 3.

Alokasi akhir: 10 + 20 + 70 = 100 Gbps

Skenario 2: Objek berprioritas lebih tinggi memiliki hak utama dalam preemption

Setiap level prioritas memiliki komitmen minimum 25 Gbps. Prioritas 1 memerlukan 0 Gbps, Prioritas 2 memerlukan 5 Gbps, Prioritas 3 memerlukan 40 Gbps, dan Prioritas 4 memerlukan 60 Gbps.

Prioritas

Komitmen minimum

Kebutuhan

Alokasi aktual

Deskripsi

Prioritas 4

25 Gbps

60 Gbps

60 Gbps

Mendapatkan komitmen minimum 25 Gbps + merebut 35 Gbps karena prioritas tinggi.

Prioritas 3

25 Gbps

40 Gbps

35 Gbps

Mendapatkan komitmen minimum 25 Gbps + merebut sisa 10 Gbps dengan prioritas tertinggi berikutnya.

Prioritas 2

25 Gbps

5 Gbps

5 Gbps

Bandwidth yang diperlukan kurang dari komitmen minimum. Dialokasikan 5 Gbps sesuai kebutuhan.

Prioritas 1

25 Gbps

0 Gbps

0 Gbps

Bandwidth yang diperlukan kurang dari komitmen minimum. Dialokasikan 0 Gbps sesuai kebutuhan.

Alokasi akhir: 0 + 5 + 35 + 60 = 100 Gbps

Skenario 3: Jumlah komitmen minimum lebih kecil daripada total bandwidth

Setiap level prioritas memiliki komitmen minimum 10 Gbps (total 40 Gbps). Prioritas 1 memerlukan 50 Gbps, Prioritas 2 memerlukan 50 Gbps, Prioritas 3 memerlukan 30 Gbps, dan Prioritas 4 memerlukan 20 Gbps.

Prioritas

Komitmen minimum

Kebutuhan

Alokasi aktual

Deskripsi

Prioritas 4

10 Gbps

20 Gbps

20 Gbps

Prioritas tertinggi. Bandwidth yang diperlukan dipenuhi sepenuhnya.

Prioritas 3

10 Gbps

30 Gbps

30 Gbps

Prioritas tertinggi berikutnya. Bandwidth yang diperlukan dipenuhi sepenuhnya.

Prioritas 2

10 Gbps

50 Gbps

40 Gbps

Mendapatkan komitmen minimum 10 Gbps + sisa 30 Gbps.

Prioritas 1

10 Gbps

50 Gbps

10 Gbps

Hanya mendapatkan komitmen minimum. Bandwidth tambahan yang diperlukan direbut.

Alokasi akhir: 10 + 40 + 30 + 20 = 100 Gbps

Menggunakan kedua metode pembatasan secara bersamaan

Untuk setiap resource yang dibatasi, Anda harus mempertimbangkan efek gabungan dari batas pembatasan berbasis ambang batas, komitmen bandwidth minimum berbasis prioritas, dan kebutuhan bandwidth aktual.

Prinsip

  • Batas pembatasan berbasis ambang batas merupakan batas keras. Bandwidth akhir tidak boleh melebihi batas ini, terlepas dari komitmen bandwidth minimum.

  • Komitmen minimum berbasis prioritas merupakan jaminan lunak. Sistem berusaha memenuhi komitmen minimum dalam batas pembatasan berbasis ambang batas.

Contoh konfigurasi

Konfigurasi normal

Bucket A memiliki konfigurasi berikut:

  • Pembatasan berbasis prioritas: Komitmen minimum 50 Gbps ← Dimensi prioritas

  • Pembatasan berbasis ambang batas: Maksimum 80 Gbps ← Level kolam sumber daya

Hasil: Bandwidth yang tersedia untuk Bucket A adalah 50 Gbps hingga 80 Gbps (minimal 50 Gbps, maksimal 80 Gbps).

Konflik konfigurasi

Bucket A memiliki konfigurasi berikut:

  • Pembatasan berbasis prioritas: Komitmen minimum 80 Gbps ← Dimensi prioritas

  • Pembatasan berbasis ambang batas: Maksimum 50 Gbps ← Level kolam sumber daya

Hasil: Bandwidth aktual yang tersedia untuk Bucket A adalah 50 Gbps (batas pembatasan berbasis ambang batas didahulukan, bukan 80 Gbps).

Mengajukan permohonan kolam sumber daya

Jika bandwidth Akun Alibaba Cloud Anda di suatu wilayah mencapai 400 Gbps atau lebih, Anda dapat menghubungi Technical Support untuk mengajukan pembuatan kolam sumber daya serta mengaktifkan fitur kolam sumber daya dan pembatasan berbasis prioritas di Konsol.

Berikan informasi berikut saat mengirimkan tiket:

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
Enable resource pool in console: Yes
Enable priority-based throttling: Yes

Konfigurasi threshold-based throttling

Metode ini cocok untuk skenario di mana Anda perlu membatasi bandwidth maksimum guna mencegah suatu objek menggunakan terlalu banyak sumber daya.

Konfigurasikan batas bandwidth untuk bucket

Anda dapat mencegah traffic berlebihan dari satu bucket memengaruhi bucket lainnya.

Konsol

Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Untuk bucket target, klik Modify Throttling Configuration di sebelah kanan dan tetapkan bandwidth sesuai kebutuhan.

ossutil

Sebelum memulai, instal ossutil.

  1. Anda dapat mengonfigurasi batas bandwidth untuk bucket tertentu menggunakan file konfigurasi 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>
  2. Untuk menambahkan konfigurasi bandwidth di atas ke bucket tertentu, jalankan perintah berikut. Dalam contoh ini, bucket bernama examplebucket.

    ossutil api invoke-operation --op-name put-bucket-qos-info --method PUT --bucket examplebucket --parameters qosInfo --body=file://qos.xml
  3. Untuk melihat konfigurasi bandwidth bucket tersebut, jalankan perintah berikut.

    ossutil api invoke-operation --op-name get-bucket-qos-info --method GET --bucket examplebucket --parameters qosInfo

SDK

Saat ini, Anda hanya dapat menetapkan batas bandwidth untuk bucket menggunakan Python SDK V2 dan Go SDK V2.

  1. Anda dapat mengonfigurasi batas bandwidth untuk bucket menggunakan file lokal qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Untuk menetapkan konfigurasi bandwidth di atas ke bucket tertentu, gunakan kode berikut.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketQoSInfo():
       # Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi
        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 menjadi 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 resource.
            parameters = {
                'qosInfo': '',  # Parameter terkait QoS.
            },
            headers = None,  # Header permintaan. Jika Anda tidak perlu menentukan header tambahan, biarkan field kosong.
            body = qos_xml_body,  # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml.
            bucket = 'examplebucket',  # Nama bucket.
        )
    
        # Gunakan metode invoke_operation dari client untuk menjalankan permintaan dan mendapatkan respons atau pesan error.
        resp = client.invoke_operation(req)
    
        # Tampilkan kode status HTTP yang dikembalikan.
        print(resp.status_code)
    
        # Tampilkan header respons.
        print(resp.headers)
    
    if __name__ == "__main__":
        GetBucketQoSInfo()

API

Anda dapat memanggil operasi PutBucketQoSInfo untuk membatasi bandwidth bucket, seperti ditunjukkan pada contoh berikut.

<QoSConfiguration>
  <TotalUploadBandwidth>100</TotalUploadBandwidth>
  <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
  <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
  <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
  <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
  <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
</QoSConfiguration>

Konfigurasikan batas bandwidth untuk peminta bucket

RAM user

Jika beberapa layanan berbagi bucket yang sama, Anda mungkin perlu membatasi bandwidth Pengguna RAM tertentu agar tidak menggunakan terlalu banyak bandwidth.

Konsol

  1. Pertama, lihat RAM user ID.

  2. Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Lalu, klik Configure Requester Throttling di sebelah kanan bucket target. Tetapkan bandwidth yang diperlukan untuk Pengguna RAM mengakses bucket tersebut.

ossutil

Sebelum memulai, instal ossutil.

Contoh berikut menunjukkan cara membatasi bandwidth untuk Pengguna RAM mengakses bucket dalam kolam sumber daya:

  1. Anda dapat mengonfigurasi batas bandwidth untuk Pengguna RAM tertentu mengakses bucket dalam kolam sumber daya menggunakan file konfigurasi 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>
  2. Lihat RAM user ID.

  3. Untuk menambahkan konfigurasi bandwidth di atas untuk Pengguna RAM (UID 266xxxx) yang mengakses bucket tersebut, jalankan perintah berikut. Dalam contoh ini, bucket bernama examplebucket.

    ossutil api invoke-operation --op-name put-bucket-requester-qos-info --method PUT --bucket=examplebucket --parameters requesterQosInfo --parameters qosRequester=266xxxx --body file://qos.xml
  4. (Opsional) Untuk mengambil konfigurasi bandwidth untuk Pengguna RAM mengakses bucket dalam kolam sumber daya, jalankan perintah berikut.

    ossutil api invoke-operation --op-name get-bucket-requester-qos-info --method GET --bucket=examplebucket --parameters requesterQosInfo --parameters qosRequester=266xxxx

SDK

Saat ini, Anda hanya dapat membatasi bandwidth untuk Pengguna RAM mengakses bucket menggunakan Python SDK V2 dan Go SDK V2.

  1. Anda dapat mengonfigurasi batas bandwidth untuk Pengguna RAM tertentu mengakses bucket dalam kolam sumber daya menggunakan file lokal qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Lihat RAM user ID.

  3. Tetapkan konfigurasi bandwidth di atas untuk Pengguna RAM yang mengakses bucket tersebut.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketRequesterQoSInfo():
        # Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi.
        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 menjadi 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 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 field kosong.
            body = qos_xml_body,  # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml.
            bucket = 'examplebucket',  # Nama bucket.
        )
    
        # Gunakan metode invoke_operation dari client untuk mengeksekusi 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

  1. Lihat RAM user ID.

  2. Panggil operasi PutBucketRequesterQoSInfo untuk membatasi bandwidth Pengguna RAM mengakses bucket, seperti ditunjukkan pada contoh berikut.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth>
    </QoSConfiguration>

RAM role

Anda dapat menggunakan bucket untuk menyimpan resource statis dan mengaktifkan akselerasi CDN. Untuk memungkinkan CDN mengambil file dari bucket privat, Anda harus mengaktifkan back-to-origin untuk bucket privat tersebut. CDN mengakses bucket melalui peran RAM AliyunCDNAccessingPrivateOSSRole. Anda mungkin perlu membatasi bandwidth origin-nya.

Konsol

  1. Lihat RAM role ID.

  2. Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Lalu, klik Configure Requester Throttling untuk bucket target dan tetapkan bandwidth yang diperlukan.

ossutil

Sebelum memulai, instal ossutil.

  1. Anda dapat mengonfigurasi batas bandwidth untuk peran ini mengakses bucket tertentu menggunakan file konfigurasi 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>
  2. Lihat RAM role ID.

  3. Untuk menambahkan konfigurasi bandwidth untuk peran ini (ID peran 362xxxx) mengakses bucket tertentu, jalankan perintah berikut. Dalam contoh ini, bucket bernama examplebucket.

    ossutil api invoke-operation --op-name put-bucket-requester-qos-info --method PUT --bucket=examplebucket --parameters requesterQosInfo --parameters qosRequester=362xxxx --body file://qos.xml
  4. (Opsional) Untuk menampilkan daftar konfigurasi bandwidth semua peran RAM dalam kolam sumber daya, jalankan perintah berikut.

    ossutil api invoke-operation --op-name list-resource-pool-requester-qos-infos --method GET --parameters resourcePool=examplePool  --parameters requesterQosInfo

SDK

Saat ini, Anda hanya dapat membatasi bandwidth untuk peran RAM mengakses bucket menggunakan Python SDK V2 dan Go SDK V2.

  1. Anda dapat mengonfigurasi batas bandwidth untuk Pengguna RAM tertentu mengakses bucket dalam kolam sumber daya menggunakan file lokal qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Lihat RAM role ID.

  3. Tetapkan konfigurasi bandwidth di atas untuk peran RAM tersebut.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketRequesterQoSInfo():
        # Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi.
        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 menjadi 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 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 field kosong.
            body = qos_xml_body,  # Badan permintaan, yang berisi konten yang dibaca dari file qos.xml.
            bucket = 'examplebucket',  # Nama bucket.
        )
    
        # Gunakan metode invoke_operation dari client untuk mengeksekusi 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

  1. Lihat RAM role ID.

  2. Panggil operasi PutBucketRequesterQoSInfo untuk membatasi bandwidth peran RAM mengakses bucket, seperti ditunjukkan pada contoh berikut.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth>
    </QoSConfiguration>

Konfigurasikan batas bandwidth untuk BucketGroup

Anda dapat menambahkan bucket berprioritas rendah ke BucketGroup untuk manajemen terpadu dan membatasi bandwidth totalnya.

Konsol

  1. Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Lalu, klik Create BucketGroup, masukkan nama untuk BucketGroup tersebut, dan tetapkan bandwidth yang diperlukan.

  2. Pada halaman kolam sumber daya target, klik Configure BucketGroup di sebelah kanan bucket target untuk menambahkan bucket berprioritas rendah ke grup tersebut.

ossutil

Sebelum memulai, instal ossutil.

  1. Untuk menambahkan bucket scheduled-posts dan archived-comments ke BucketGroup:

    1. Untuk menambahkan bucket scheduled-posts ke BucketGroup, jalankan perintah berikut.

      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-group
    2. Untuk menambahkan bucket archived-comments ke BucketGroup, jalankan perintah berikut.

      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
    3. (Opsional) Untuk mengambil daftar bucket yang ditambahkan ke BucketGroup, jalankan perintah berikut.

      ossutil api invoke-operation --op-name list-resource-pool-bucket-groups --method GET --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup
  2. Anda dapat mengonfigurasi batas bandwidth untuk BucketGroup tertentu dalam kolam sumber daya menggunakan file konfigurasi 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>
  3. Untuk mengonfigurasi bandwidth untuk BucketGroup tersebut, jalankan perintah berikut.

    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
  4. (Opsional) Untuk mengambil konfigurasi bandwidth BucketGroup tersebut, jalankan perintah berikut.

    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

Saat ini, Anda hanya dapat membatasi bandwidth BucketGroup menggunakan Python SDK V2 dan Go SDK V2.

  1. Tambahkan dua bucket dari kolam sumber daya ke BucketGroup.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketResourcePoolBucketGroup():
        # Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi.
        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 menjadi 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 field kosong.
            body = None,  # Badan permintaan, yang biasanya tidak diperlukan untuk permintaan PUT.
            bucket = 'examplebucket',  # Nama bucket.
        )
    
        # Gunakan metode invoke_operation dari client untuk mengeksekusi 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()
  2. Anda dapat mengonfigurasi batas bandwidth untuk BucketGroup tertentu dalam kolam sumber daya menggunakan file konfigurasi 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>
  3. Konfigurasikan bandwidth untuk BucketGroup tersebut.

    import alibabacloud_oss_v2 as oss
    
    def PutResourcePoolBucketGroupQoSInfo():
        # Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi.
        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 menjadi 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 field 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 dari client untuk mengeksekusi 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 untuk membatasi bandwidth BucketGroup, seperti ditunjukkan pada contoh berikut.

<QoSConfiguration>
  <TotalUploadBandwidth>20</TotalUploadBandwidth>
  <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
  <ExtranetUploadBandwidth>10</ExtranetUploadBandwidth>
  <TotalDownloadBandwidth>30</TotalDownloadBandwidth>
  <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
  <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
</QoSConfiguration>

Konfigurasikan batas bandwidth untuk peminta kolam sumber daya

Jika beberapa Pengguna RAM mengakses bucket berbeda dalam kolam sumber daya yang sama, Anda mungkin perlu membatasi bandwidth maksimum untuk setiap pengguna guna mencegah satu pengguna mendominasi bandwidth kolam sumber daya.

Konsol

  1. Lihat RAM user ID atau RAM role ID.

  2. Pada halaman Resource Pool QoS, klik nama kolam sumber daya target. Pada tab Resource Pool Requester List, klik Modify Throttling Configuration untuk Pengguna RAM atau Peran RAM target guna menetapkan bandwidth untuk peminta kolam sumber daya tersebut.

ossutil

Sebelum memulai, instal ossutil.

  1. Anda dapat mengonfigurasi batas bandwidth untuk Pengguna RAM atau Peran RAM mengakses kolam sumber daya menggunakan file konfigurasi 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>
  2. Lihat RAM user ID atau RAM role ID.

  3. Untuk menambahkan konfigurasi bandwidth di atas untuk Pengguna RAM (UID 266xxxx), jalankan perintah berikut.

    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
  4. (Opsional) Untuk menampilkan daftar konfigurasi bandwidth semua Pengguna RAM dalam kolam sumber daya, jalankan perintah berikut.

    ossutil api invoke-operation --op-name list-resource-pool-requester-qos-infos --method GET --parameters resourcePool=examplePool  --parameters requesterQosInfo

SDK

Saat ini, Anda hanya dapat membatasi bandwidth untuk Pengguna RAM atau Peran RAM mengakses kolam sumber daya menggunakan Python SDK V2 dan Go SDK V2.

  1. Anda dapat mengonfigurasi batas bandwidth untuk Pengguna RAM atau Peran RAM tertentu mengakses kolam sumber daya menggunakan file lokal qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>50</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>200</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Lihat RAM user ID atau RAM role ID.

  3. Tetapkan konfigurasi bandwidth di atas untuk Pengguna RAM atau Peran RAM tersebut.

    import alibabacloud_oss_v2 as oss
    
    def PutResourcePoolRequesterQoSInfo():
        # Dapatkan kredensial akses dari variabel lingkungan untuk autentikasi.
        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 menjadi 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 field 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 dari client untuk mengeksekusi 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

  1. Lihat RAM user ID atau RAM role ID.

  2. Panggil operasi PutResourcePoolRequesterQoSInfo untuk membatasi bandwidth Pengguna RAM atau Peran RAM mengakses kolam sumber daya, seperti ditunjukkan pada contoh berikut.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>50</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>200</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth>
    </QoSConfiguration>

Konfigurasi priority-based throttling

Metode ini cocok untuk skenario di mana Anda perlu menjamin bandwidth minimum untuk layanan inti dan memprioritaskan objek berprioritas tinggi saat terjadi persaingan sumber daya.

Konfigurasikan prioritas kolam sumber daya

Jika kolam sumber daya berisi beberapa bucket, Anda mungkin perlu memastikan bahwa bucket layanan inti tetap mendapatkan bandwidth yang cukup saat bandwidth terbatas.

ossutil

  1. Pertama, buat file konfigurasi 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>
  2. Konfigurasi Aplikasi

    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.xml
  3. Anda dapat mengambil dan memverifikasi konfigurasi tersebut.

    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 PutResourcePoolPriorityQosConfiguration() {
	// Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah menjadi 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 client OSS.
	client := oss.NewClient(cfg)

	// Definisikan 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 error saat membaca file konfigurasi QoS, cetak pesan error dan keluar dari program.
		fmt.Printf("failed to read qos.xml: %v\n", err)
		os.Exit(1)
	}

	// Hitung hash MD5 dari data input dan ubah menjadi string yang dienkripsi 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.
	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 header Content-MD5 untuk badan permintaan guna memastikan integritas data.
		},
		Body:   bytes.NewReader(qosConf), // Badan permintaan yang berisi konfigurasi QoS.
		Bucket: nil,                      // Operasi ini tidak menargetkan bucket tertentu.
	}

	// Eksekusi operasi dan terima respons atau error.
	res, err := client.InvokeOperation(context.TODO(), input)
	if err != nil {
		// Jika terjadi error, cetak pesan error dan keluar dari program.
		fmt.Printf("invoke operation got error: %v\n", err)
		os.Exit(1)
	}

	// Cetak hasil operasi.
	fmt.Println("The result of PutResourcePoolPriorityQoSConfiguration:", res.Status)
}

API

PutResourcePoolPriorityQosConfiguration

Konfigurasikan prioritas peminta kolam sumber daya

Pada platform Software as a Service (SaaS) multi-penyewa, pelanggan dengan level berbeda mungkin mengakses kolam sumber daya yang sama. Anda mungkin perlu menjamin bandwidth untuk pelanggan VIP, sementara pelanggan reguler berbagi sisa sumber daya.

ossutil

  1. Pertama, buat file konfigurasi 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>
  2. Konfigurasi Aplikasi

    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
  3. (Opsional) Untuk mengambil dan memverifikasi konfigurasi, jalankan perintah berikut.

    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 PutResourcePoolRequesterPriorityQosConfiguration() {
	// Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah menjadi 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 client OSS.
	client := oss.NewClient(cfg)

	// Definisikan 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 error saat membaca file konfigurasi QoS, cetak pesan error dan keluar dari program.
		fmt.Printf("failed to read qos.xml: %v\n", err)
		os.Exit(1)
	}

	// Hitung hash MD5 dari data input dan ubah menjadi string yang dienkripsi 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.
	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 header Content-MD5 untuk badan permintaan guna memastikan integritas data.
		},
		Body:   bytes.NewReader(qosConf), // Badan permintaan yang berisi konfigurasi QoS.
		Bucket: nil,                      // Operasi ini tidak menargetkan bucket tertentu.
	}

	// Eksekusi operasi dan terima respons atau error.
	res, err := client.InvokeOperation(context.TODO(), input)
	if err != nil {
		// Jika terjadi error, cetak pesan error dan keluar dari program.
		fmt.Printf("invoke operation got error: %v\n", err)
		os.Exit(1)
	}

	// Cetak hasil operasi.
	fmt.Println("The result of PutResourcePoolRequesterPriorityQoSConfiguration:", res.Status)
}

API

PutResourcePoolRequesterPriorityQosConfiguration

Monitoring dan Peringatan

Monitor penggunaan bandwidth

Selama operasi bisnis, Anda dapat menuju halaman CloudMonitor - Object Storage Service Resource Pool untuk melihat penggunaan bandwidth real-time layanan kritis dalam kolam sumber daya. Hal ini membantu memastikan alokasi sumber daya yang wajar dan operasi layanan yang stabil.

Atur peringatan bandwidth

Untuk memastikan operasi stabil layanan kritis, Anda dapat membuat aturan peringatan di layanan CloudMonitor. Misalnya, Anda dapat mengonfigurasi aturan untuk secara otomatis memicu peringatan ketika penggunaan bandwidth melebihi 80%. Hal ini memungkinkan Anda segera menyesuaikan konfigurasi bandwidth guna menangani traffic puncak bisnis.

Going live

Rekomendasi perencanaan kapasitas

1. Jumlah komitmen bandwidth minimum harus kurang dari 50% dari total bandwidth kolam sumber daya.

Sisihkan lebih dari 50% bandwidth sebagai ruang elastis untuk penjadwalan dinamis. Hal ini secara efektif dapat meningkatkan pemanfaatan bandwidth keseluruhan kolam sumber daya.

Konfigurasi yang direkomendasikan:
Total bandwidth kolam sumber daya: 100 Gbps
Komitmen minimum Prioritas 3: 20 Gbps
Komitmen minimum Prioritas 2: 20 Gbps
Komitmen minimum Prioritas 1: 10 Gbps
Total: 50 Gbps (50 Gbps ruang elastis disediakan)

2. Kami merekomendasikan 3 hingga 5 level prioritas.

Terlalu banyak level prioritas meningkatkan kompleksitas manajemen. Kami merekomendasikan membagi layanan menjadi 3 hingga 5 level berdasarkan tingkat kepentingannya:

  • Layanan inti (Prioritas 4–5)

  • Layanan penting (Prioritas 3)

  • Layanan reguler (Prioritas 1–2)

3. Batas pembatasan berbasis ambang batas harus lebih tinggi daripada komitmen minimum berbasis prioritas.

Pastikan objek berprioritas tinggi dapat menggunakan lebih banyak bandwidth saat sumber daya mencukupi:

Konfigurasi yang direkomendasikan:
Pembatasan berbasis prioritas: Komitmen minimum Bucket A sebesar 50 Gbps
Pembatasan berbasis ambang batas: Maksimum Bucket A sebesar 80 Gbps
Bandwidth aktual yang tersedia: 50-80 Gbps (minimal 50, maksimal 80)

Praktik terbaik

Skenario 1: Platform video-on-demand

  • Streaming langsung: Prioritas 3, komitmen minimum 50 Gbps.

  • Konten on-demand: Prioritas 1, komitmen minimum 20 Gbps.

  • CDN kembali-ke-asal: Batas pembatasan kecepatan berbasis ambang batas sebesar 100 Gbps.

Skenario 2: Platform SaaS multi-penyewa

  • Pelanggan Edisi Perusahaan: Prioritas 3, dengan komitmen bandwidth minimum yang dialokasikan.

  • Pelanggan Edisi Gratis: Prioritas 1, berbagi sisa sumber daya.

  • Batas per penyewa: Gunakan pembatasan berbasis ambang batas untuk mencegah satu penyewa menggunakan terlalu banyak sumber daya.

Skenario 3: Analitik data lake

  • Analitik real-time: Prioritas 2, komitmen minimum 30 Gbps.

  • Analitik offline: Prioritas 1, komitmen minimum 20 Gbps.

  • Data arsip: Batas pembatasan berbasis ambang batas 10 Gbps.

Pencegahan risiko

1. Tinjau penggunaan kuota secara berkala

Anda dapat menggunakan CloudMonitor untuk melihat tren penggunaan bandwidth setiap objek dan segera menyesuaikan kuota:

  • Jika komitmen bandwidth minimum untuk objek berprioritas tinggi secara konsisten terpenuhi kurang dari 95% waktu, pertimbangkan untuk menambah komitmen minimum atau mengurangi komitmen minimum untuk objek berprioritas rendah.

  • Jika objek berprioritas rendah tidak dapat menggunakan bandwidth dalam waktu lama, pertimbangkan untuk mengurangi komitmen minimum untuk objek berprioritas tinggi atau memperluas kapasitas kolam sumber daya.

2. Atur peringatan multi-level

  • Tingkat peringatan (80%): Memberikan peringatan dini untuk menyiapkan rencana perluasan kapasitas.

  • Tingkat kritis (90%): Memerlukan tindakan segera untuk menjalankan rencana darurat.

3. Hindari konflik konfigurasi

  • Jumlah komitmen bandwidth minimum tidak boleh melebihi total bandwidth kolam sumber daya.

  • Batas pembatasan berbasis ambang batas harus lebih tinggi daripada komitmen minimum berbasis prioritas.

  • Jika bucket termasuk dalam BucketGroup, prioritas BucketGroup yang berlaku.

4. Perubahan dan rollback

  • Sebelum melakukan perubahan penting, verifikasi konfigurasi di lingkungan staging.

  • Simpan konfigurasi saat ini untuk rollback cepat.

  • Lakukan perubahan selama jam sepi.

Kuota dan batasan

Batasan

Kuota/Batasan

Kolam sumber daya

Setiap wilayah dibatasi hingga 100 kolam sumber daya.

Anda dapat membuat maksimal 100 bucket di setiap kolam sumber daya.

Setiap kolam sumber daya dapat berisi maksimal 100 BucketGroups.

Anda dapat mengonfigurasi pembatasan untuk maksimal 300 peminta per kolam sumber daya.

BucketGroup

Nama harus terdiri dari 3 hingga 30 karakter.

Hanya huruf kecil, angka, dan tanda hubung (-) yang diperbolehkan.

Pembatasan berbasis prioritas

Jumlah level prioritas dapat berupa bilangan bulat dari 3 hingga 10.

Level prioritas: Bilangan bulat dari 1 hingga jumlah total level prioritas.

Jumlah komitmen bandwidth minimum tidak boleh melebihi total bandwidth kolam sumber daya.

Jika komitmen bandwidth minimum default tidak ditetapkan, Anda harus mengonfigurasi satu untuk setiap level prioritas.

Komitmen bandwidth minimum harus minimal MIN[5, (Ambang batas resource yang sesuai di kolam sumber daya level atas) / (2 × Jumlah level prioritas)] Gbps.

Parameter bandwidth

Bilangan bulat positif: Menentukan batas dalam Gbps.

-1: Tanpa Batas (menggunakan bandwidth kolam sumber daya bersama).

0: Melarang jenis traffic ini. Gunakan dengan hati-hati.

Waktu tunda hingga konfigurasi berlaku

Dalam waktu 5 menit.