Todos os produtos
Search
Central de documentação

API Gateway:Referências de desempenho de plug-ins

Última atualização: Jun 27, 2026

Os plug-ins integrados do Cloud-native API Gateway adicionam apenas microssegundos de latência por requisição. Plug-ins personalizados desenvolvidos em C++, Golang, Rust e AssemblyScript oferecem desempenho semelhante.

Desempenho dos plug-ins integrados

Os plug-ins integrados adicionam latência na ordem de microssegundos a cada requisição. Por exemplo, o plug-in key-auth adiciona cerca de 20 microssegundos, e o basic-auth, aproximadamente 30 microssegundos.

Desempenho dos plug-ins personalizados

Os exemplos a seguir implementam a mesma lógica de processamento em diferentes linguagens de programação: adicionar 20 cabeçalhos de requisição, lê-los 20 vezes e removê-los em seguida.

  • Código de exemplo em C++

    FilterHeadersStatus PluginContext::onRequestHeaders(uint32_t, bool) {
      std::string fake_header_key_prefix = "fake_key_";
      std::string fake_header_value_prefix = "fake_value_";
      // Add 20 headers to request headers
      for (size_t i = 0; i < 20; i++) {
        addRequestHeader(fake_header_key_prefix + std::to_string(i),
                         fake_header_value_prefix + std::to_string(i));
      }
    
      // Check 20 times headers.
      for (size_t i = 0; i < 20; i++) {
        getRequestHeader(fake_header_key_prefix + std::to_string(i));
      }
    
      // remove add headers
      for (size_t i = 0; i < 20; i++) {
        removeRequestHeader(fake_header_key_prefix + std::to_string(i));
      }
      return FilterHeadersStatus::Continue;
    }
  • Código de exemplo em Golang

    func (ctx *httpContext) OnHttpRequestHeaders(numHeaders int, endOfStream bool) types.Action {
            fake_header_key_prefix := "fake_key_"
            fake_header_value_prefix := "fake_value_"
            for i := 0; i < 20; i++ {
                    proxywasm.AddHttpRequestHeader(fake_header_key_prefix+strconv.Itoa(i),
                            fake_header_value_prefix+strconv.Itoa(i))
            }
            for i := 0; i < 20; i++ {
                    proxywasm.GetHttpRequestHeader(fake_header_key_prefix + strconv.Itoa(i))
            }
            for i := 0; i < 20; i++ {
                    proxywasm.RemoveHttpRequestHeader(fake_header_key_prefix + strconv.Itoa(i))
            }
            return types.ActionContinue
    }
  • Código de exemplo em Rust

    fn on_http_request_headers(&mut self, _: usize, _: bool) -> Action {
        for i in 0..20 {
            let key = "fake_key_".to_string() + &i.to_string();
            let value = "fake_value_".to_string() + &i.to_string();
            self.set_http_request_header(&key, Some(&value));
        }
        for i in 0..20 {
            let key = "fake_key_".to_string() + &i.to_string();
            self.get_http_request_header(&key);
        }
        for i in 0..20 {
            let key = "fake_key_".to_string() + &i.to_string();
            self.set_http_request_header(&key, None);
        }
        Action::Continue
    }
  • Código de exemplo em AssemblyScript

    function onRequestHeaders(a: u32, end_of_stream: bool): FilterHeadersStatusValues {
      let fake_header_key_prefix: string = "fake_key_";
      let fake_header_value_prefix: string = "fake_value_";
      for (let i = 0; i < 20; i++) {
         stream_context.headers.request.add(fake_header_key_prefix + i.toString(), fake_header_value_prefix + i.toString())
      }
      for (let i = 0; i < 20; i++) {
         stream_context.headers.request.get(fake_header_key_prefix + i.toString())
      }
      for (let i = 0; i < 20; i++) {
         stream_context.headers.request.remove(fake_header_key_prefix + i.toString())
      }
      return FilterHeadersStatusValues.Continue;
    }

Comparação de desempenho entre plug-ins personalizados em diferentes linguagens

Linguagem de programação

Aumento na latência da requisição

C++

0,19 ms

Golang

0,20 ms

Rust

0,21 ms

AssemblyScript

0,21 ms

Plug-ins personalizados desenvolvidos em diferentes linguagens apresentam latência de requisição semelhante.