Todos os produtos
Search
Central de documentação

Object Storage Service:Use resource pool QoS to guarantee bandwidth for critical services

Última atualização: Jul 06, 2026

Por padrão, todos os buckets na mesma região sob uma conta Alibaba Cloud compartilham a largura de banda. Quando vários buckets transferem grandes volumes de dados simultaneamente, a contenção de largura de banda pode atrasar as transferências de serviços críticos. Para resolver isso, configure o limitador de QoS do pool de recursos: o limitador baseado em limiar impede que um bucket consuma largura de banda excessiva, enquanto o limitador baseado em prioridade garante uma largura de banda mínima para serviços essenciais. Esses métodos complementares asseguram a estabilidade das suas cargas de trabalho críticas.

Como funciona

Limitador baseado em limiar

Defina limites de largura de banda para objetos em cada nível, como buckets e BucketGroups, para evitar o consumo excessivo de recursos.

Relacionamentos hierárquicos

Hierarquia do pool de recursos: Um pool de recursos pode conter uma hierarquia de objetos com vários níveis. Os diagramas a seguir mostram algumas estruturas comuns.

Cenário 1: Estrutura plana de buckets

image

Cenário 2: BucketGroups aninhados

image

Cenário 3: BucketGroups e buckets mistos

image

Dimensão do solicitante (independente): O solicitante não faz parte da hierarquia do pool de recursos. Trata-se de uma dimensão independente para limitação.

Cenário 4: Limitação do solicitante e do pool de recursos aplicadas simultaneamente

image

Princípios de limitação

Princípio básico

resource pool: Max 100Gbps
├─ bucket A: Max 40Gbps ← Cannot exceed 40 Gbps, even if other resources are idle
├─ bucket B: Max 30Gbps
└─ bucket C: Unlimited ← Can use all remaining bandwidth

Regras de restrição

  1. Múltiplos limites aplicados simultaneamente: A largura de banda efetiva corresponde ao menor valor entre todos os limites aplicáveis.

  2. A soma das larguras de banda dos objetos filhos não pode exceder a largura de banda total do objeto pai.

  3. O solicitante é uma restrição independente: Esta restrição se aplica além das restrições hierárquicas do pool de recursos, e o limite mais baixo tem precedência.

Exemplo

Quando um usuário RAM acessa um bucket, o tráfego está sujeito a ambos:

  • Limite do solicitante (20 Gbps) ← Dimensão independente

  • Limite do bucket (30 Gbps) ← Hierarquia do pool de recursos

Largura de banda máxima efetiva = min(20 Gbps, 30 Gbps) = 20 Gbps

Limitador baseado em prioridade

Configure de 3 a 10 níveis de prioridade dentro de um pool de recursos. Um número maior indica maior prioridade. Ao atribuir um compromisso mínimo de largura de banda a objetos em diferentes níveis de prioridade, você garante que os serviços de alta prioridade recebam largura de banda primeiro durante a contenção de recursos. Objetos sem um nível de prioridade especificado usam a prioridade padrão. Níveis de prioridade sem um compromisso mínimo de largura de banda configurado usam o compromisso padrão.

Mecanismos principais

  1. Largura de banda garantida: Cada nível de prioridade possui um compromisso mínimo de largura de banda, o que assegura a disponibilidade da largura de banda especificada.

  2. Mecanismo de preempção: O tráfego de alta prioridade pode preemptar a largura de banda do tráfego de baixa prioridade que estiver usando largura de banda além do seu compromisso mínimo. As prioridades mais altas preemptam primeiro.

  3. Utilização de largura de banda ociosa: O tráfego de baixa prioridade pode usar a porção ociosa do compromisso mínimo de largura de banda de uma prioridade mais alta. No entanto, o tráfego de alta prioridade sempre tem precedência para usar qualquer largura de banda disponível.

  4. Restrição de configuração: A soma de todos os compromissos mínimos de largura de banda em todos os níveis de prioridade não pode exceder a largura de banda total do pool de recursos.

Cenários típicos

Nos cenários a seguir, o pool de recursos tem um limite total de largura de banda de 100 Gbps e está configurado com vários níveis de prioridade. Um número maior indica maior prioridade.

Cenário 1: Um nível de alta prioridade preempta largura de banda de um nível de baixa prioridade que excede seu compromisso mínimo

Cada nível de prioridade tem um compromisso mínimo de largura de banda de 20 Gbps. A demanda é de 10 Gbps para a Prioridade 1, 30 Gbps para a Prioridade 2 e 80 Gbps para a Prioridade 3.

Prioridade

Compromisso mínimo

Demanda

Alocação real

Descrição

Prioridade 3

20 Gbps

80 Gbps

70 Gbps

Recebe seu compromisso de 20 Gbps, preempta os 10 Gbps de largura de banda ociosa da Prioridade 1 e reivindica os 40 Gbps restantes do pool.

Prioridade 2

20 Gbps

30 Gbps

20 Gbps

Recebe seu compromisso de 20 Gbps. A demanda adicional de 10 Gbps é preemptada pela Prioridade 3.

Prioridade 1

20 Gbps

10 Gbps

10 Gbps

Recebe 10 Gbps conforme demandado. Seus 10 Gbps restantes de largura de banda garantida ficam ociosos e são preemptados pela Prioridade 3.

Alocação final: 10 + 20 + 70 = 100 Gbps

Cenário 2: Prioridades mais altas preemptam primeiro

Cada nível de prioridade tem um compromisso mínimo de largura de banda de 25 Gbps. A demanda é de 0 Gbps para a Prioridade 1, 5 Gbps para a Prioridade 2, 40 Gbps para a Prioridade 3 e 60 Gbps para a Prioridade 4.

Prioridade

Compromisso mínimo

Demanda

Alocação real

Descrição

Prioridade 4

25 Gbps

60 Gbps

60 Gbps

Recebe seu compromisso de 25 Gbps e preempta 35 Gbps adicionais devido à sua alta prioridade.

Prioridade 3

25 Gbps

40 Gbps

35 Gbps

Recebe seu compromisso de 25 Gbps e preempta os 10 Gbps restantes como a próxima prioridade mais alta.

Prioridade 2

25 Gbps

5 Gbps

5 Gbps

A demanda é menor que o compromisso. Recebe 5 Gbps conforme demandado.

Prioridade 1

25 Gbps

0 Gbps

0 Gbps

A demanda é menor que o compromisso. Recebe 0 Gbps conforme demandado.

Alocação final: 0 + 5 + 35 + 60 = 100 Gbps

Cenário 3: A soma dos compromissos mínimos é menor que a largura de banda total

Cada nível de prioridade tem um compromisso mínimo de largura de banda de 10 Gbps (totalizando 40 Gbps). A demanda é de 50 Gbps para a Prioridade 1, 50 Gbps para a Prioridade 2, 30 Gbps para a Prioridade 3 e 20 Gbps para a Prioridade 4.

Prioridade

Compromisso mínimo

Demanda

Alocação real

Descrição

Prioridade 4

10 Gbps

20 Gbps

20 Gbps

Maior prioridade; demanda totalmente atendida.

Prioridade 3

10 Gbps

30 Gbps

30 Gbps

Segunda maior prioridade; demanda totalmente atendida.

Prioridade 2

10 Gbps

50 Gbps

40 Gbps

Recebe seu compromisso de 10 Gbps mais os 30 Gbps restantes de largura de banda disponível.

Prioridade 1

10 Gbps

50 Gbps

10 Gbps

Recebe apenas seu compromisso de 10 Gbps. A demanda adicional é preemptada pelo tráfego de prioridade mais alta.

Alocação final: 10 + 40 + 30 + 20 = 100 Gbps

Combinação de métodos de limitação

Quando ambos os métodos são usados, a largura de banda efetiva para um recurso é determinada pela interação entre o limite baseado em limiar, o compromisso mínimo baseado em prioridade e a demanda real.

Regras de precedência

  • O limite baseado em limiar é um limite rígido: A largura de banda alocada final não pode exceder este limite, independentemente do compromisso mínimo de largura de banda.

  • O compromisso baseado em prioridade é uma garantia flexível: O sistema tenta cumprir este compromisso, mas a alocação não pode exceder o limite rígido.

Exemplos de configuração

Configuração padrão

O bucket A está configurado com:

  • Limitador baseado em prioridade: compromisso mínimo de largura de banda de 50 Gbps ← Dimensão de prioridade

  • Limitador baseado em limiar: limite máximo de 80 Gbps ← Hierarquia do pool de recursos

Resultado: A largura de banda disponível para o bucket A varia de um mínimo garantido de 50 Gbps até um máximo de 80 Gbps.

Configuração conflitante

Se o bucket A tiver uma configuração conflitante:

  • Limitador baseado em prioridade: compromisso mínimo de largura de banda de 80 Gbps ← Dimensão de prioridade

  • Limitador baseado em limiar: limite máximo de 50 Gbps ← Hierarquia do pool de recursos

Resultado: A largura de banda realmente disponível para o bucket A é de 50 Gbps. O limite baseado em limiar é um limite rígido e tem precedência, substituindo o compromisso mínimo mais alto.

Solicitar um pool de recursos

Quando a largura de banda da sua conta em uma região atingir ou exceder 400 Gbps, entre em contato com o Suporte Técnico para solicitar um pool de recursos, acesso ao console e limitador baseado em prioridade.

Forneça as seguintes informações ao enviar um ticket:

Importante

Os buckets dentro de um único pool de recursos devem pertencer ao mesmo usuário, estar na mesma região e ter o mesmo tipo de redundância. O processo de criação do pool de recursos pode envolver migração de dados e realocação de recursos.

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: Required

Adicionar buckets no console

Se você já criou um pool de recursos, poderá adicionar buckets de objetos a ele no console OSS.

  1. Na página Resource Pool QoS, acesse a página de detalhes do pool de recursos desejado e clique em Buckets .

  2. Clique em Add Bucket. Na caixa de diálogo Add Bucket, a lista Buckets à esquerda exibe os buckets que estão na mesma região do pool de recursos, usam o mesmo tipo de redundância e ainda não foram adicionados ao pool. Buckets que não atendem a esses requisitos aparecem esmaecidos e não podem ser selecionados; também não é possível inserir nomes de buckets manualmente. Selecione os buckets que deseja adicionar e clique em > para movê-los para Buckets Selected à direita. É possível adicionar até 20 buckets em lote. Filtre os buckets por nome usando a caixa de pesquisa em qualquer um dos lados.

  3. Clique em OK. Na caixa de diálogo Confirm adding the following Buckets to the resource pool , verifique a lista de buckets a serem adicionados e clique em OK para enviar. O envio não pode ser cancelado. Para cancelar, entre em contato com o Suporte Técnico.

  4. Após enviar a solicitação, o status do processamento será exibido acima da lista de buckets. Clique em Refresh na mensagem para atualizar o status. (A lista de solicitações pode apresentar atraso após o envio.)

Após o envio, o backend geralmente conclui o processamento em até 24 horas. Quando alguns buckets forem adicionados com sucesso, eles serão removidos da mensagem de processamento, restando apenas os buckets que ainda não foram adicionados. Depois que todos os buckets forem adicionados, a mensagem de processamento desaparecerá. Se alguns buckets ainda não tiverem sido adicionados 24 horas após o envio, a mensagem indicará que as solicitações de adição desses buckets não foram concluídas. Nesse caso, entre em contato com o Suporte Técnico.

Importante
  • Apenas buckets de objetos podem ser adicionados. Table buckets e vector buckets não são suportados.

  • Os buckets a serem adicionados devem estar na mesma região do pool de recursos e usar o mesmo tipo de redundância. Por exemplo, se todos os buckets no pool de recursos forem LRS (armazenamento localmente redundante), você só poderá adicionar buckets LRS na mesma região.

  • Adicione até 20 buckets em lote e envie no máximo 2 solicitações de adição por dia.

  • Não é possível remover buckets de um pool de recursos.

Limitador baseado em limiar

Use este recurso para limitar a largura de banda máxima e evitar que uma entidade específica consuma recursos excessivos.

Limite de largura de banda do bucket

Isso evita que o tráfego excessivo para um único bucket afete o desempenho de outros buckets.

Console

Na página Resource Pool QoS, clique em Modify Throttling Configurations à direita do bucket alvo e defina a largura de banda do bucket conforme necessário.

ossutil

Antes de começar, Instale o ossutil.

  1. Configure o limite de largura de banda para o bucket com um arquivo XML local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Aplique a configuração de largura de banda a um bucket específico. O comando a seguir aplica a configuração a um bucket chamado examplebucket.

    ossutil api invoke-operation --op-name put-bucket-qos-info --method PUT --bucket examplebucket --parameters qosInfo --body=file://qos.xml
  3. Visualize a configuração de largura de banda do bucket.

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

SDK

Defina o limite de largura de banda para um bucket usando apenas o Python SDK V2 e o Go SDK V2.

  1. Configure o limite de largura de banda para o bucket com um arquivo local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Aplique a configuração de largura de banda a um bucket específico.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketQoSInfo():
       # Obtain access credentials from environment variables for authentication
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Load default configurations and obtain the configuration file.
        cfg = oss.config.load_default()
    
        # Specify the credential provider.
        cfg.credentials_provider = credentials_provider
    
        # Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        cfg.region = "cn-hangzhou"
    
        # Initialize the OSSClient instance by using the configuration file.
        client = oss.Client(cfg)
    
        # Set qos_xml_body to an empty string.
        qos_xml_body = ""
    
        # Open the file named qos.xml and read its content into the qos_xml_body variable.
        with open('qos.xml', 'r') as qos_file:
            qos_xml_body = qos_file.read()
    
        # Specify input parameters for the PutBucketQoSInfo operation to specify the QoS rules for the bucket.
        req = oss.OperationInput(
            op_name = 'PutBucketQoSInfo',  # Operation name, specifying the operation to set bucket QoS information
            method = 'PUT',  # The type of the HTTP method. In this example, PUT is used to update resources.
            parameters = {
                'qosInfo': '',  # The QoS-related parameters.
            },
            headers = None,  # The request headers. If you do not need to specify additional headers, leave the field empty.
            body = qos_xml_body,  # The request body, which contains the content read from the qos.xml file.
            bucket = 'examplebucket',  # The name of the bucket.
        )
    
        # Use the invoke_operation method of the client to run the request and obtain the response or error message.
        resp = client.invoke_operation(req)
    
        # Display the returned HTTP status code.
        print(resp.status_code)
    
        # Display the response headers.
        print(resp.headers)
    
    if __name__ == "__main__":
        PutBucketQoSInfo()

API

Chame a operação PutBucketQoSInfo com o seguinte corpo de solicitação para limitar a largura de banda de um bucket.

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

Limite de largura de banda do solicitante do bucket

Usuário RAM

Se vários serviços compartilharem um único bucket, limite a largura de banda para um usuário RAM específico para evitar que ele consuma recursos excessivos.

Console

  1. Obtenha o ID do usuário RAM.

  2. Na página Resource Pool QoS, clique em Configure Bandwidth Throttling Rules à direita do bucket alvo e defina a largura de banda necessária para o usuário RAM acessar o bucket.

ossutil

Antes de começar, Instale o ossutil.

O exemplo a seguir mostra como limitar a largura de banda para um usuário RAM que acessa um bucket em um pool de recursos.

  1. Configure o limite de largura de banda para um usuário RAM que acessa um bucket no pool de recursos com um arquivo XML local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Obtenha o ID do usuário RAM.

  3. Aplique a configuração de largura de banda a um usuário RAM. O comando a seguir aplica a configuração ao usuário RAM com o UID 266xxxx que acessa o bucket 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. (Opcional) Visualize a configuração de largura de banda para o usuário RAM.

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

SDK

Limite a largura de banda para um usuário RAM que acessa um bucket usando apenas o Python SDK V2 e o Go SDK V2.

  1. Configure o limite de largura de banda para um usuário RAM que acessa um bucket no pool de recursos com um arquivo local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>-1</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>-1</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Obtenha o ID do usuário RAM.

  3. Aplique a configuração de largura de banda ao usuário RAM que acessa o bucket.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketRequesterQoSInfo():
        # Obtain access credentials from environment variables for authentication.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Load default configurations and obtain the configuration file.
        cfg = oss.config.load_default()
    
        # Specify the credential provider.
        cfg.credentials_provider = credentials_provider
    
        # Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        cfg.region = "cn-hangzhou"
    
        # Initialize the OSSClient instance by using the configuration file.
        client = oss.Client(cfg)
    
        # Set qos_xml_body to an empty string.
        qos_xml_body = ""
    
        # Open a file named qos.xml and read its content into the qos_xml_body variable.
        with open('qos.xml', 'r') as qos_file:
            qos_xml_body = qos_file.read()
    
        # Specify input parameters for the PutBucketRequesterQoSInfo operation to configure throttling rules for a requester accessing a bucket.
        req = oss.OperationInput(
            op_name = 'PutBucketRequesterQoSInfo',  # The name of the operation.
            method = 'PUT',  # The type of the HTTP method. In this example, PUT is used.
            parameters = {
                'requesterQosInfo': '',  # The QoS-related parameters.
                'qosRequester': '2598732222222xxxx',  # The unique identifier for the requester, which is used to distinguish different requesters.
            },
            headers = None,  # The request headers. If you do not need to specify additional headers, leave the field empty.
            body = qos_xml_body,  # The request body, which contains the content read from the qos.xml file.
            bucket = 'examplebucket',  # The name of the bucket.
        )
    
        # Use the invoke_operation method of the client to execute the request and obtain the response.
        resp = client.invoke_operation(req)
    
        # Display the returned HTTP status code.
        print(resp.status_code)
    
        # Display the response headers.
        print(resp.headers)
    
        # Display the response body, which typically contains the specific data returned by the request.
        print(resp.http_response.content)
    
    if __name__ == "__main__":
        PutBucketRequesterQoSInfo()

API

  1. Obtenha o ID do usuário RAM.

  2. Chame a operação PutBucketRequesterQoSInfo com o seguinte corpo de solicitação para limitar a largura de banda de um usuário RAM que acessa um bucket.

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

Função RAM

Use um bucket com uma Content Delivery Network (CDN) para armazenar ativos estáticos e acelerar a entrega de conteúdo. Para permitir que a CDN recupere arquivos de um bucket privado, ative a busca na origem. A CDN assume a função RAM AliyunCDNAccessingPrivateOSSRole. Neste cenário, limite a largura de banda de busca na origem.

Console

  1. Obtenha o ID da função RAM.

  2. Na página Resource Pool QoS, clique em Configure Bandwidth Throttling Rules à direita do bucket alvo e defina a largura de banda do solicitante conforme necessário.

ossutil

Antes de começar, Instale o ossutil.

  1. Configure o limite de largura de banda para a função RAM que acessa um bucket específico com um arquivo XML local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Obtenha o ID da função RAM.

  3. Aplique a configuração de largura de banda a uma função RAM. O comando a seguir aplica a configuração à função RAM com o ID 362xxxx que acessa o bucket 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. (Opcional) Liste as configurações de largura de banda para todas as funções RAM no pool de recursos.

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

SDK

Limite a largura de banda para uma função RAM que acessa um bucket usando apenas o Python SDK V2 e o Go SDK V2.

  1. Configure o limite de largura de banda para a função RAM que acessa um bucket no pool de recursos com um arquivo local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>20</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>100</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>40</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Obtenha o ID da função RAM.

  3. Aplique a configuração de largura de banda à função RAM.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketRequesterQoSInfo():
        # Obtain access credentials from environment variables for authentication.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Load default configurations and obtain the configuration file.
        cfg = oss.config.load_default()
    
        # Specify the credential provider.
        cfg.credentials_provider = credentials_provider
    
        # Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        cfg.region = "cn-hangzhou"
    
        # Initialize the OSSClient instance by using the configuration file.
        client = oss.Client(cfg)
    
        # Set qos_xml_body to an empty string.
        qos_xml_body = ""
    
        # Open a file named qos.xml and read its content into the qos_xml_body variable.
        with open('qos.xml', 'r') as qos_file:
            qos_xml_body = qos_file.read()
    
        # Specify input parameters for the PutBucketRequesterQoSInfo operation to configure throttling rules for a requester accessing a bucket.
        req = oss.OperationInput(
            op_name = 'PutBucketRequesterQoSInfo',  # The name of the operation.
            method = 'PUT',  # The type of the HTTP method. In this example, PUT is used.
            parameters = {
                'requesterQosInfo': '',  # The QoS-related parameters.
                'qosRequester': '2598732222222xxxx',  # The unique identifier for the requester, which is used to distinguish different requesters.
            },
            headers = None,  # The request headers. If you do not need to specify additional headers, leave the field empty.
            body = qos_xml_body,  # The request body, which contains the content read from the qos.xml file.
            bucket = 'examplebucket',  # The name of the bucket.
        )
    
        # Use the invoke_operation method of the client to execute the request and obtain the response.
        resp = client.invoke_operation(req)
    
        # Display the returned HTTP status code.
        print(resp.status_code)
    
        # Display the response headers.
        print(resp.headers)
    
        # Display the response body, which typically contains the specific data returned by the request.
        print(resp.http_response.content)
    
    if __name__ == "__main__":
        PutBucketRequesterQoSInfo()

API

  1. Obtenha o ID da função RAM.

  2. Chame a operação PutBucketRequesterQoSInfo com o seguinte corpo de solicitação para limitar a largura de banda de uma função RAM que acessa um bucket.

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

Limite de largura de banda do BucketGroup

Agrupe buckets de baixa prioridade em um BucketGroup para gerenciar e limitar sua largura de banda total.

Console

  1. Na página Resource Pool QoS, clique em Create A Bucket Group, defina um nome para o BucketGroup e configure a largura de banda necessária.

  2. Na página do pool de recursos alvo, clique em Create Bucket Group à direita de um bucket alvo para adicionar o bucket de baixa prioridade ao BucketGroup.

ossutil

Antes de começar, Instale o ossutil.

  1. Os comandos a seguir adicionam os buckets scheduled-posts e archived-comments a um BucketGroup.

    1. Adicione o bucket scheduled-posts ao 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-group
    2. Adicione o bucket archived-comments ao 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
    3. (Opcional) Obtenha a lista de buckets no BucketGroup.

      ossutil api invoke-operation --op-name list-resource-pool-bucket-groups --method GET --parameters resourcePool=pool-for-ai --parameters resourcePoolBucketGroup
  2. Configure o limite de largura de banda para um BucketGroup específico no pool de recursos com um arquivo XML local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>20</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>10</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>30</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  3. Aplique a configuração de largura de banda ao 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
  4. (Opcional) Obtenha a configuração de largura de banda do 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

Limite a largura de banda de um BucketGroup usando apenas o Python SDK V2 e o Go SDK V2.

  1. Adicione buckets de um pool de recursos a um BucketGroup.

    import alibabacloud_oss_v2 as oss
    
    def PutBucketResourcePoolBucketGroup():
        # Obtain access credentials from environment variables for authentication.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Load default configurations and obtain the configuration file.
        cfg = oss.config.load_default()
    
        # Specify the credential provider.
        cfg.credentials_provider = credentials_provider
    
        # Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        cfg.region = "cn-hangzhou"
    
        # Initialize the OSSClient instance by using the configuration file.
        client = oss.Client(cfg)
    
        # Specify input parameters for the PutBucketResourcePoolBucketGroup operation.
        req = oss.OperationInput(
            op_name = 'PutBucketResourcePoolBucketGroup',  # The name of the operation.
            method = 'PUT',  # The type of the HTTP method type. In this example, PUT is used.
            parameters = {
                'resourcePoolBucketGroup': 'example-group',  # The name of the bucket group in the resource pool.
                'resourcePool': 'example-resource-pool',               # The name of the resource pool.
            },
            headers = None,  # The request headers. If you do not need to specify additional headers, leave the field empty.
            body = None,  # The request body, which is typically not required for PUT requests.
            bucket = 'examplebucket',  # The name of the bucket.
        )
    
        # Use the invoke_operation method of the client to execute the request and obtain the response.
        resp = client.invoke_operation(req)
    
        # Display the returned HTTP status code.
        print(resp.status_code)
    
        # Display the response headers.
        print(resp.headers)
    
        # Display the response body, which typically contains the specific data returned by the request.
        print(resp.http_response.content)
    
    if __name__ == "__main__":
        PutBucketResourcePoolBucketGroup()
  2. Configure o limite de largura de banda para um BucketGroup específico no pool de recursos com um arquivo XML local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>20</TotalUploadBandwidth>
      <IntranetUploadBandwidth>-1</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>10</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>30</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>-1</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>20</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  3. Aplique a configuração de largura de banda ao BucketGroup.

    import alibabacloud_oss_v2 as oss
    
    def PutResourcePoolBucketGroupQoSInfo():
        # Obtain access credentials from environment variables for authentication.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Load default configurations and obtain the configuration file.
        cfg = oss.config.load_default()
    
        # Specify the credential provider.
        cfg.credentials_provider = credentials_provider
    
        # Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        cfg.region = "cn-hangzhou"
    
        # Initialize the OSSClient instance by using the configuration file.
        client = oss.Client(cfg)
    
        # Set qos_xml_body to an empty string.
        qos_xml_body = ""
    
        # Open and read the qos.xml file and write its content into the qos_xml_body variable.
        with open('qos.xml', 'r') as qos_file:
            qos_xml_body = qos_file.read()
    
        # Specify input parameters for the PutResourcePoolBucketGroupQoSInfo operation.
        req = oss.OperationInput(
            op_name = 'PutResourcePoolBucketGroupQoSInfo',  # The name of the operation.
            method = 'PUT',  # The type of the HTTP method type. In this example, PUT is used.
            parameters = {
                'resourcePoolBucketGroupQosInfo': '',  # The QoS-related parameters.
                'resourcePool': 'example-resource-pool',           #  The name of the resource pool
                'resourcePoolBucketGroup': 'example-group',  # The name of the bucket group.
            },
            headers = None,  # The request headers. If you do not need to specify additional headers, leave the field empty.
            body = qos_xml_body,  # The request body, which contains the content read from the qos.xml file.
            bucket = None,  # The name of the bucket, which is not required for PUT requests. This operation is not performed on a specific bucket.
        )
    
        # Use the invoke_operation method of the client to execute the request and obtain the response.
        resp = client.invoke_operation(req)
    
        # Display the returned HTTP status code.
        print(resp.status_code)
    
        # Display the response headers.
        print(resp.headers)
    
        # Display the response body, which typically contains the specific data returned by the request.
        print(resp.http_response.content)
    
    if __name__ == "__main__":
        PutResourcePoolBucketGroupQoSInfo()

API

Chame a operação PutResourcePoolBucketGroupQoSInfo com o seguinte corpo de solicitação para limitar a largura de banda de um BucketGroup.

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

Limite de largura de banda do solicitante do pool de recursos

Quando vários usuários RAM acessam diferentes buckets no mesmo pool de recursos, defina limites individuais de largura de banda para evitar que um único usuário monopolize a largura de banda do pool.

Console

  1. Obtenha o ID do usuário RAM ou o ID da função RAM.

  2. Na página Resource Pool QoS, clique em Modify Throttling Configurations à direita do usuário RAM ou função RAM alvo e defina a largura de banda do solicitante conforme necessário.

ossutil

Antes de começar, Instale o ossutil.

  1. Configure o limite de largura de banda para um usuário RAM ou função RAM que acessa o pool de recursos com um arquivo XML local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>50</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>200</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Obtenha o ID do usuário RAM ou o ID da função RAM.

  3. Aplique a configuração de largura de banda a um usuário RAM. O comando a seguir aplica a configuração ao usuário RAM com o 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
  4. (Opcional) Liste as configurações de largura de banda para todos os usuários RAM no pool de recursos.

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

SDK

Limite a largura de banda para um usuário RAM ou função RAM que acessa um pool de recursos usando apenas o Python SDK V2 e o Go SDK V2.

  1. Configure o limite de largura de banda para um usuário RAM ou função RAM específico que acessa o pool de recursos com um arquivo local chamado qos.xml.

    <QoSConfiguration>
      <TotalUploadBandwidth>100</TotalUploadBandwidth>
      <IntranetUploadBandwidth>50</IntranetUploadBandwidth>
      <ExtranetUploadBandwidth>50</ExtranetUploadBandwidth>
      <TotalDownloadBandwidth>200</TotalDownloadBandwidth>
      <IntranetDownloadBandwidth>150</IntranetDownloadBandwidth>
      <ExtranetDownloadBandwidth>50</ExtranetDownloadBandwidth>
    </QoSConfiguration>
  2. Obtenha o ID do usuário RAM ou o ID da função RAM.

  3. Aplique a configuração de largura de banda ao usuário RAM ou função RAM.

    import alibabacloud_oss_v2 as oss
    
    def PutResourcePoolRequesterQoSInfo():
        # Obtain access credentials from environment variables for authentication.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Load default configurations and obtain the configuration file.
        cfg = oss.config.load_default()
    
        # Specify the credential provider.
        cfg.credentials_provider = credentials_provider
    
        # Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
        cfg.region = "cn-hangzhou"
    
        # Initialize the OSSClient instance by using the configuration file.
        client = oss.Client(cfg)
    
        # Initialize qos_xml_body as an empty string
        qos_xml_body = ""
    
        # Open a file named qos.xml and read its content into the qos_xml_body variable.
        with open('qos.xml', 'r') as qos_file:
            qos_xml_body = qos_file.read()
    
        # Specify input parameters for the PutResourcePoolRequesterQoSInfo operation.
        req = oss.OperationInput(
            op_name = 'PutResourcePoolRequesterQoSInfo',  # The name of the operation.
            method = 'PUT',  # The type of the HTTP method type. In this example, PUT is used.
            parameters = {
                'requesterQosInfo': '',  # The QoS-related parameters.
                'resourcePool': 'example-resource-pool',  # The name of the resource pool.
                'qosRequester': '2598732222222xxxx',  # The ID of the requester.
            },
            headers = None,  # The request headers. If you do not need to specify additional headers, leave the field empty.
            body = qos_xml_body,  # The request body, which contains the content read from the qos.xml file.
            bucket = None,  # The name of the bucket, which is not required for PUT requests. The operation is not performed on a specific bucket.
        )
    
        # Use the invoke_operation method of the client to execute the request and obtain the response.
        resp = client.invoke_operation(req)
    
        # Display the returned HTTP status code.
        print(resp.status_code)
    
        # Display the response headers.
        print(resp.headers)
    
        # Display the response body, which typically contains the specific data returned by the request.
        print(resp.http_response.content)
    
    if __name__ == "__main__":
        PutResourcePoolRequesterQoSInfo()

API

  1. Obtenha o ID do usuário RAM ou o ID da função RAM.

  2. Chame a operação PutResourcePoolRequesterQoSInfo com o seguinte corpo de solicitação para limitar a largura de banda de um usuário RAM ou função RAM que acessa um pool de recursos.

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

Configurar limitador baseado em prioridade

Use este método para garantir uma largura de banda mínima para serviços essenciais e priorizar objetos de alta prioridade durante a contenção de recursos.

Configurar prioridades do pool de recursos

Se um pool de recursos contiver vários buckets, configure prioridades para garantir que os buckets de serviços essenciais recebam largura de banda suficiente, especialmente durante a contenção de recursos.

ossutil

  1. Crie um arquivo de configuração de QoS de prioridade chamado 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. Aplique a configuração.

    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. Obtenha e verifique a configuração.

    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() {
	// Specify the region where the bucket is located. For example, set the region to cn-hangzhou for China (Hangzhou).
	var region = "cn-hangzhou"

	// Load the default configurations and set the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Define the resource pool name.
	resourcePool := "hz-rp-01"

	// Read the content of the priority QoS configuration file.
	qosConf, err := os.ReadFile("priority-qos.xml")
	if err != nil {
		// If an error occurs while reading the QoS configuration file, print the error message and exit the program.
		fmt.Printf("failed to read qos.xml: %v\n", err)
		os.Exit(1)
	}

	// Calculate the MD5 hash of the input data and convert it to a Base64-encoded string.
	calcMd5 := func(input []byte) string {
		if len(input) == 0 {
			return "1B2M2Y8AsgTpgAmY7PhCfg=="
		}
		h := md5.New()
		h.Write(input)
		return base64.StdEncoding.EncodeToString(h.Sum(nil))
	}

	// Create the input parameters for the operation, including the action, method type, and other parameters.
	input := &oss.OperationInput{
		OpName: "PutResourcePoolPriorityQoSConfiguration", // The action.
		Method: "PUT",                                     // The HTTP method.
		Parameters: map[string]string{
			"priorityQos":  "",           // Priority QoS-related parameters.
			"resourcePool": resourcePool, // The resource pool name.
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf), // Set the MD5 hash of the request body for data integrity validation.
		},
		Body:   bytes.NewReader(qosConf), // The request body, which contains the QoS configuration content.
		Bucket: nil,                      // This operation does not apply to a specific bucket.
	}

	// Execute the operation and receive the response or an error.
	res, err := client.InvokeOperation(context.TODO(), input)
	if err != nil {
		// If an error occurs, print the error message and exit the program.
		fmt.Printf("invoke operation got error: %v\n", err)
		os.Exit(1)
	}

	// Print the operation result.
	fmt.Println("The result of PutResourcePoolPriorityQoSConfiguration:", res.Status)
}

API

PutResourcePoolPriorityQosConfiguration

Configurar prioridades do solicitante do pool de recursos

Em uma plataforma SaaS multilocatário, atribua prioridades a solicitantes de diferentes níveis que acessam o mesmo pool de recursos. Isso garante largura de banda para clientes VIP, enquanto outros clientes compartilham os recursos restantes.

ossutil

  1. Crie um arquivo de configuração de QoS de prioridade do solicitante chamado 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. Aplique a configuração.

    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. (Opcional) Obtenha e verifique a configuração.

    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() {
	// Specify the region where the bucket is located. For example, set the region to cn-hangzhou for China (Hangzhou).
	var region = "cn-hangzhou"

	// Load the default configurations and set the credential provider and region.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Create an OSS client.
	client := oss.NewClient(cfg)

	// Define the resource pool name.
	resourcePool := "hz-rp-01"

	// Read the content of the requester priority QoS configuration file.
	qosConf, err := os.ReadFile("requester-priority-qos.xml")
	if err != nil {
		// If an error occurs while reading the QoS configuration file, print the error message and exit the program.
		fmt.Printf("failed to read qos.xml: %v\n", err)
		os.Exit(1)
	}

	// Calculate the MD5 hash of the input data and convert it to a Base64-encoded string.
	calcMd5 := func(input []byte) string {
		if len(input) == 0 {
			return "1B2M2Y8AsgTpgAmY7PhCfg=="
		}
		h := md5.New()
		h.Write(input)
		return base64.StdEncoding.EncodeToString(h.Sum(nil))
	}

	// Create the input parameters for the operation, including the action, method type, and other parameters.
	input := &oss.OperationInput{
		OpName: "PutResourcePoolRequesterPriorityQoSConfiguration", // The action.
		Method: "PUT",                                              // The HTTP method.
		Parameters: map[string]string{
			"requesterPriorityQos": "", // Requester priority QoS-related parameters.
			"resourcePool":         resourcePool, // The resource pool name.
		},
		Headers: map[string]string{
			"Content-MD5": calcMd5(qosConf), // Set the MD5 hash of the request body for data integrity validation.
		},
		Body:   bytes.NewReader(qosConf), // The request body, which contains the QoS configuration content.
		Bucket: nil,                      // This operation does not apply to a specific bucket.
	}

	// Execute the operation and receive the response or an error.
	res, err := client.InvokeOperation(context.TODO(), input)
	if err != nil {
		// If an error occurs, print the error message and exit the program.
		fmt.Printf("invoke operation got error: %v\n", err)
		os.Exit(1)
	}

	// Print the operation result.
	fmt.Println("The result of PutResourcePoolRequesterPriorityQoSConfiguration:", res.Status)
}

API

PutResourcePoolRequesterPriorityQosConfiguration

Monitoramento e alertas

Monitorar uso de largura de banda

Acesse a página Cloud Monitor-Object Storage Service (OSS) Resource Pool para monitorar o uso de largura de banda em tempo real dos serviços críticos no seu pool de recursos. Isso garante uma alocação eficaz de recursos e a estabilidade do serviço.

Definir alertas de largura de banda

Para manter a estabilidade dos serviços críticos, crie regras de alerta no serviço Cloud Monitor. O Cloud Monitor aciona automaticamente um alerta quando o uso de largura de banda excede 80%, permitindo que você ajuste prontamente sua configuração de largura de banda para picos de tráfego.

Implantação em produção

Planejamento de capacidade

1. Mantenha a soma dos compromissos mínimos de largura de banda abaixo de 50% da largura de banda total do pool de recursos.

Deixar pelo menos 50% da sua largura de banda como espaço flexível para agendamento dinâmico melhora a utilização geral do pool de recursos.

Recommended configuration:
Total resource pool bandwidth: 100 Gbps
Priority 3 minimum bandwidth commitment: 20 Gbps
Priority 2 minimum bandwidth commitment: 20 Gbps
Priority 1 minimum bandwidth commitment: 10 Gbps
Total: 50 Gbps (50 Gbps reserved as flexible space)

2. Use de 3 a 5 níveis de prioridade.

Muitos níveis de prioridade aumentam a complexidade de gerenciamento. Recomendamos classificar os serviços em 3 a 5 níveis com base na criticidade do negócio:

  • Serviços essenciais (prioridade 4–5)

  • Serviços importantes (prioridade 3)

  • Serviços padrão (prioridade 1–2)

3. Defina o limite do limitador baseado em limiar acima do compromisso mínimo de largura de banda.

Isso permite que objetos de alta prioridade usem mais largura de banda quando houver capacidade disponível:

Recommended configuration:
Minimum bandwidth commitment: 50 Gbps for Bucket A
Threshold-based throttling limit: 80 Gbps for Bucket A
Effective bandwidth: 50–80 Gbps (guaranteed 50 Gbps, capped at 80 Gbps)

Melhores práticas

Caso de uso 1: Plataforma de vídeo sob demanda

  • Transmissões ao vivo: Atribua prioridade 3 com um compromisso mínimo de largura de banda de 50 Gbps.

  • Conteúdo sob demanda: Atribua prioridade 1 com um compromisso mínimo de largura de banda de 20 Gbps.

  • Busca na origem CDN: Aplique um limite de limitador baseado em limiar de 100 Gbps.

Caso de uso 2: Plataforma SaaS multilocatário

  • Clientes corporativos: Atribua prioridade 3 com um compromisso mínimo de largura de banda dedicado.

  • Clientes do plano gratuito: Atribua prioridade 1 para compartilhar os recursos restantes.

  • Limite por locatário: Use o limitador baseado em limiar para evitar que um único locatário consuma largura de banda excessiva.

Caso de uso 3: Análise de data lake

  • Análises em tempo real: Atribua prioridade 2 com um compromisso mínimo de largura de banda de 30 Gbps.

  • Análises em lote: Atribua prioridade 1 com um compromisso mínimo de largura de banda de 20 Gbps.

  • Arquivamento de dados: Aplique um limite de limitador baseado em limiar de 10 Gbps.

Mitigação de riscos

1. Revise regularmente o uso de cotas

Use o Cloud Monitor para rastrear tendências de uso de largura de banda para todos os objetos e ajuste as cotas conforme necessário:

  • Se objetos de alta prioridade falharem consistentemente em receber seu compromisso mínimo de largura de banda (por exemplo, se a taxa de atendimento for inferior a 95%), considere aumentar seu compromisso ou reduzir o compromisso para objetos de baixa prioridade.

  • Se objetos de baixa prioridade ficarem frequentemente sem largura de banda, considere reduzir o compromisso mínimo de largura de banda para objetos de alta prioridade ou expandir o pool de recursos.

2. Defina alertas multinível

  • Nível de aviso (80%): Use para avisos antecipados, permitindo tempo para preparar um plano de expansão.

  • Nível crítico (90%): Use para acionar ações imediatas, como ativar um plano de emergência.

3. Evite conflitos de configuração

  • A soma de todos os compromissos mínimos de largura de banda não pode exceder a largura de banda total do pool de recursos.

  • O limite do limitador baseado em limiar para um objeto deve ser superior ao seu compromisso mínimo de largura de banda.

  • Se um bucket fizer parte de um BucketGroup, a prioridade do BucketGroup terá precedência sobre a configuração de prioridade individual do bucket.

4. Gerencie alterações e rollbacks

  • Antes de fazer alterações significativas, valide sua configuração em um ambiente de teste.

  • Sempre faça backup da sua configuração atual para um rollback rápido, se necessário.

  • Agende todas as alterações fora dos horários de pico para minimizar o impacto nos seus serviços.

Cotas e limites

Item

Cota/limite

Pool de recursos

Até 100 pools de recursos por região.

Até 100 buckets por pool de recursos.

Até 100 grupos de buckets por pool de recursos.

Um pool de recursos suporta limitação para até 300 solicitantes.

Ao adicionar buckets a um pool de recursos no console, adicione até 20 buckets em lote.

Grupo de buckets

O nome deve ter de 3 a 30 caracteres.

O nome pode conter apenas letras minúsculas, dígitos e hifens (-).

Limitador baseado em prioridade

Número de níveis de prioridade: 3 a 10.

Nível de prioridade: Um número inteiro de 1 até o número total de níveis de prioridade.

A soma de todos os compromissos mínimos de largura de banda não pode exceder a largura de banda total do pool de recursos.

Um compromisso mínimo de largura de banda é obrigatório para cada nível de prioridade, a menos que um padrão esteja configurado.

O valor mínimo para um compromisso mínimo de largura de banda é MIN[5, (limiar do item correspondente no pool de recursos pai) / (2 * número de níveis de prioridade)] Gbps.

Parâmetro de largura de banda

Inteiro positivo: Um limite específico em Gbps.

-1: Ilimitado (compartilha a largura de banda do pool de recursos).

0: Proíbe este tipo de tráfego (use com cautela).

Tempo para entrar em vigor

Em até 5 minutos.