Todos os produtos
Search
Central de documentação

Elastic Compute Service:Deploy de aplicativos bRPC de alto desempenho com eRDMA

Última atualização: Jun 23, 2026

Faça deploy do bRPC em instâncias ECS compatíveis com eRDMA para obter menor latência, maior throughput e menor uso de CPU.

null
  • O bRPC é um framework de RPC de alto desempenho e uso geral em C++. Ele fornece ferramentas para simplificar o desenvolvimento e o deploy de serviços. Os casos de uso comuns incluem pesquisa, armazenamento, machine learning e publicidade. O bRPC é adequado para microsserviços de alta simultaneidade e baixa latência, além de sistemas distribuídos de grande escala. Consulte as instruções de compilação do bRPC.

  • O eRDMA (elastic Remote Direct Memory Access) é um serviço de rede RDMA nativo da nuvem que oferece baixa latência, alto throughput e alta elasticidade. Consulte Visão geral do eRDMA.

Etapa 1: preparar o ambiente

Crie duas instâncias ECS compatíveis com eRDMA para funcionar como servidor e cliente. Especifique os seguintes itens de configuração:

  • Tipo de instância: escolha um tipo de instância compatível com eRDMA. Consulte Limites. Este tópico usa ecs.g8a.8xlarge.

  • Imagem: escolha uma imagem compatível com eRDMA. Consulte Limites. Este tópico usa Alibaba Cloud Linux 3.2104 LTS 64-bit.

  • Instale o driver eRDMA: Selecione Install eRDMA driver. O driver é instalado automaticamente durante a inicialização da instância.

    null

    Após a inicialização da instância, aguarde de 3 a 5 minutos para a conclusão da instalação do driver. Consulte Ativar eRDMA em instâncias de nível empresarial.

  • Rede:

    • Ative o acesso à Internet para ambas as instâncias.

    • A interconexão de serviços é ativada por padrão no mesmo VPC.

    • Para ENI, selecione Elastic RDMA interface ao lado da NIC.

Para outros parâmetros, consulte Personalizar e adquirir uma instância.

Etapa 2: deploy e compilação do bRPC

Faça deploy e compile o bRPC em ambas as instâncias. As etapas a seguir usam o Alibaba Cloud Linux 3 como exemplo. Para outros sistemas operacionais, consulte Compilar o bRPC.

  1. Faça logon em ambas as instâncias ECS. Consulte Usar o Workbench para fazer logon em uma instância Linux.

  2. Modifique o modo de estabelecimento de conexão do eRDMA e do bRPC para garantir a compatibilidade.

    null

    Por padrão, o eRDMA usa o RDMA_CM para estabelecer conexões, enquanto o bRPC usa o modo Out-of-Band (OOB). Modifique o modo de conexão de ambos para garantir a compatibilidade.

    sudo sh -c "echo 'options erdma compat_mode=Y' >> /etc/modprobe.d/erdma.conf"
    sudo dracut --force
    sudo rmmod erdma
    sudo modprobe erdma compat_mode=Y
  3. Remova os limites de bloqueio de memória. Os aplicativos eRDMA normalmente exigem grandes quantidades de memória.

    1. Edite o arquivo limits.conf.

      sudo vi /etc/security/limits.conf
    2. Adicione as linhas a seguir ao final do arquivo e salve.

      * soft memlock unlimited
      * hard memlock unlimited
  4. Faça deploy do aplicativo bRPC.

    sudo yum install git gcc-c++ make openssl-devel gflags-devel protobuf-devel protobuf-compiler leveldb-devel -y
    git clone https://github.com/apache/brpc.git
  5. Aplique o patch a seguir em ambas as instâncias para melhorar o desempenho do bRPC com eRDMA.

    1. No diretório brpc, crie um arquivo chamado erdma-multi-sge.patch:

      cd ~/brpc
      sudo vi erdma-multi-sge.patch
    2. Adicione o conteúdo a seguir e salve.

      diff --git a/src/brpc/rdma/rdma_helper.cpp b/src/brpc/rdma/rdma_helper.cpp
      index cf1cce95..d2592cbb 100644
      --- a/src/brpc/rdma/rdma_helper.cpp
      +++ b/src/brpc/rdma/rdma_helper.cpp
      @@ -619,7 +619,7 @@ void DeregisterMemoryForRdma(void* buf) {
       }
      
       int GetRdmaMaxSge() {
      -    return g_max_sge;
      +    return 4;
       }
      
       int GetRdmaCompVector() {
      --
      2.39.3
    3. Aplique o patch ao código-fonte do bRPC.

      patch -p1 < erdma-multi-sge.patch
    4. Compile o código-fonte do bRPC.

      sh config_brpc.sh --with-rdma --headers="/usr/include" --libs="/usr/lib64 /usr/bin"
      make -j
      cd example/rdma_performance; make -j

Etapa 3: testar o desempenho

Teste o desempenho do bRPC com e sem eRDMA e compare os resultados.

  1. Teste o desempenho do bRPC nos dois cenários a seguir.

    Com eRDMA ativado

    1. No servidor, inicie o servidor com eRDMA ativado.

      ./server --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=true
    2. No cliente, conecte-se ao servidor com eRDMA ativado.

      ./client --servers=<server private IP address>:8002 --rpc_timeout_ms=-1 --attachment_size=1024 --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=true --queue_depth=16

      Parâmetros:

      • Substitua <server private IP address> pelo endereço IP privado do servidor.

      • --attachment_size: o tamanho dos dados anexados a cada chamada bRPC. Valores maiores aproveitam melhor o eRDMA, mas aumentam a complexidade do gerenciamento de memória. Defina de acordo com os requisitos do teste.

      • --queue_depth: o número de solicitações simultâneas que a fila pode conter. Uma profundidade maior ajuda a lidar com picos de tráfego, mas consome mais memória. Defina de acordo com os requisitos do teste.

    Sem eRDMA ativado

    1. No servidor, inicie o servidor com TCP.

      ./server --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=false
    2. No cliente, conecte-se ao servidor com TCP.

      ./client --servers=<server private IP address>:8002 --rpc_timeout_ms=-1 --attachment_size=1024 --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=false --queue_depth=16

      Parâmetros:

      • Substitua <server private IP address> pelo endereço IP privado do servidor.

      • --attachment_size: o tamanho dos dados anexados a cada chamada bRPC. Valores maiores aproveitam melhor o eRDMA, mas aumentam a complexidade do gerenciamento de memória. Defina de acordo com os requisitos do teste.

      • --queue_depth: o número de solicitações simultâneas que a fila pode conter. Uma profundidade maior ajuda a lidar com picos de tráfego, mas consome mais memória. Defina de acordo com os requisitos do teste.

  2. Compare os resultados dos dois cenários. Verifique o campo Avg-Latency para latência e o campo QPS para throughput a fim de avaliar os ganhos de desempenho do eRDMA.