Todos os produtos
Search
Central de documentação

Platform For AI:Call a service over a VPC direct connection

Última atualização: Jun 27, 2026

Conecte clientes diretamente às instâncias de serviço em uma VPC, ignorando o encaminhamento pelo gateway para reduzir a latência.

Como funciona

O EAS cria uma Elastic Network Interface (ENI) gratuita para cada instância de serviço e a anexa à VPC e ao vSwitch especificados, estabelecendo um caminho de rede direto sem encaminhamento por gateway.

O EAS fornece uma API de descoberta de serviço que retorna pares IP:PORT em tempo real para todas as instâncias de serviço. Os clientes consultam essa API para implementar balanceamento de carga e failover.

VPC direct connection architecture

Pré-requisitos

Conclua estas tarefas antes de chamar um serviço por conexão direta VPC:

  • Implante um serviço EAS com a conexão direta VPC ativada. Para mais detalhes, consulte Network configuration.

  • Verifique se o vSwitch tem endereços IP disponíveis suficientes. Cada ENI requer um endereço IP. A quantidade de IPs disponíveis deve ser igual ou superior ao número de instâncias.

  • Configure regras de grupo de segurança para permitir o tráfego entre os clientes e as instâncias de serviço.

Importante

As regras de grupo de segurança controlam o acesso à rede entre clientes (como instâncias ECS) e instâncias de serviço:

  • Por padrão, instâncias em um grupo de segurança básico podem se comunicar pela rede interna. Ao configurar a conexão direta VPC, selecione o grupo de segurança que contém as instâncias ECS que precisam de acesso.

  • Para usar grupos de segurança diferentes, configure regras de grupo de segurança para permitir a comunicação entre as instâncias. Consulte Allow access between instances in different security groups in a classic network.

Formato do endpoint

Os endpoints de conexão direta VPC seguem este formato:

{Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com

Parâmetro

Descrição

Exemplo

{Uid}

ID da conta Alibaba Cloud

123**********

{RegionId}

Região onde o serviço está implantado

cn-shanghai

Exemplo: 123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com

Chamar o serviço usando SDKs (recomendado)

Os SDKs do EAS gerenciam automaticamente a descoberta de serviço, o balanceamento de carga e as tentativas de failover. Use um SDK para garantir chamadas confiáveis por conexão direta VPC.

Python SDK

  1. Instale ou atualize o SDK:

       pip install -U eas-prediction --user
  2. Chame o serviço usando o formato de requisição TensorFlow. Para outros formatos, consulte Python SDK guide.

    O construtor PredictClient requer o endpoint de conexão direta VPC e o nome do serviço. Chame set_endpoint_type(ENDPOINT_TYPE_DIRECT) para ativar a conexão direta VPC e, em seguida, chame init() para inicializar.
       #!/usr/bin/env python
       from eas_prediction import PredictClient
       from eas_prediction import StringRequest
       from eas_prediction import TFRequest
       from eas_prediction import ENDPOINT_TYPE_DIRECT
    
       # VPC direct connection endpoint: {Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com
       # Replace with your account ID and region
       ENDPOINT = "123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com"
    
       # Replace with your EAS service name
       SERVICE_NAME = "mnist_saved_model_example"
    
       # Replace with your service token from the service details page
       # Store tokens in environment variables or KMS, not in code
       TOKEN = "M2FhNjJlZDBmMzBmMzE4NjFiNzZhMmUxY2IxZjkyMDczNzAzYjFi****"
    
       if __name__ == '__main__':
           client = PredictClient(ENDPOINT, SERVICE_NAME)
           client.set_token(TOKEN)
           client.set_endpoint_type(ENDPOINT_TYPE_DIRECT)  # Enable VPC direct connection
           client.init()
    
           req = TFRequest('predict_images')
           req.add_feed('images', [1, 784], TFRequest.DT_FLOAT, [1] * 784)
           resp = client.predict(req)
           print(resp)

Java SDK

  1. Adicione a dependência Maven ao arquivo pom.xml. Para obter a versão mais recente, consulte o Maven repository. Para mais detalhes, consulte Java SDK guide.

       <dependency>
         <groupId>com.aliyun.openservices.eas</groupId>
         <artifactId>eas-sdk</artifactId>
         <version>2.0.20</version>
       </dependency>
  2. Chame o serviço.

       import com.aliyun.openservices.eas.predict.http.PredictClient;
       import com.aliyun.openservices.eas.predict.http.HttpConfig;
    
       public class TestString {
           public static void main(String[] args) throws Exception {
               // Create and initialize the client once at startup
               // Do not create a new client for each request
               PredictClient client = new PredictClient(new HttpConfig());
    
               // Replace with your service token from the service details page
               client.setToken("YWFlMDYyZDNmNTc3M2I3MzMwYmY0MmYwM2Y2MTYxMTY4NzBkNzdj****");
    
               // Set VPC direct connection endpoint: {Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com
               // Replace with your account ID and region
               client.setDirectEndpoint("123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com");
    
               // Replace with your EAS service name
               client.setModelName("scorecard_pmml_example");
    
               // Define input string
               String request = "[{\"money_credit\": 3000000}, {\"money_credit\": 10000}]";
               System.out.println(request);
    
               // Send prediction request
               try {
                   String response = client.predict(request);
                   System.out.println(response);
               } catch (Exception e) {
                   e.printStackTrace();
               }
    
               // Shut down client when finished
               client.shutdown();
           }
       }

Go SDK

O gerenciador de pacotes Go baixa o SDK automaticamente durante a compilação. Para mais detalhes, consulte Go SDK guide.

package main

import (
    "fmt"
    "github.com/pai-eas/eas-golang-sdk/eas"
)

func main() {
    // VPC direct connection endpoint: {Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com
    // Replace with your account ID, region, and service name
    client := eas.NewPredictClient("123**********.vpc.cn-shanghai.pai-eas.aliyuncs.com", "scorecard_pmml_example")

    // Replace with your service token from the service details page
    client.SetToken("YWFlMDYyZDNmNTc3M2I3MzMwYmY0MmYwM2Y2MTYxMTY4NzBkNzdj****")
    client.SetEndpointType(eas.EndpointTypeDirect)
    client.Init()

    req := "[{\"fea1\": 1, \"fea2\": 2}]"
    for i := 0; i < 100; i++ {
        resp, err := client.StringPredict(req)
        if err != nil {
            fmt.Printf("failed to predict: %v\n", err.Error())
        } else {
            fmt.Printf("%v\n", resp)
        }
    }
}

Criar um cliente personalizado

Se os SDKs não atenderem aos requisitos, implemente a lógica de invocação HTTP manualmente.

Aviso

Clientes personalizados devem gerenciar a descoberta de serviço, o balanceamento de carga e as tentativas de failover. Uma implementação inadequada afeta diretamente a disponibilidade do serviço. O SLA da plataforma não cobre interrupções causadas por implementações de clientes personalizados. Sempre que possível, use um SDK.

API de descoberta de serviço

O EAS oferece uma API HTTP para descoberta de serviço dentro da VPC configurada. Essa API retorna endereços IP, portas e pesos de todas as instâncias de backend de um serviço.

Propriedade

Detalhes

URL

http://{Uid}.vpc.{RegionId}.pai-eas.aliyuncs.com/exported/apis/eas.alibaba-inc.k8s.io/v1/upstreams/{ServiceName}

Autenticação

Não necessária. Acessível apenas de dentro da VPC configurada.

Intervalo de consulta

Chame a cada 5-10 segundos a partir de uma thread em segundo plano.

Importante

A API de descoberta de serviço é um serviço de segundo plano. Não a chame para cada solicitação de inferência, pois chamadas frequentes degradam severamente o desempenho.

Exemplo de requisição:

Este exemplo consulta um serviço chamado mnist_saved_model_example implantado na China (Hangzhou). Substitua 123********** pelo ID da sua conta.

curl http://123**********.vpc.cn-hangzhou.pai-eas.aliyuncs.com/exported/apis/eas.alibaba-inc.k8s.io/v1/upstreams/mnist_saved_model_example

Exemplo de resposta:

{
  "correlative": [
    "mnist_saved_model_example"
  ],
  "endpoints": {
    "items": [
      {
        "app": "mnist-saved-model-example",
        "ip": "172.16.XX.XX",
        "port": 50000,
        "weight": 100
      },
      {
        "app": "mnist-saved-model-example",
        "ip": "172.16.XX.XX",
        "port": 50000,
        "weight": 100
      }
    ]
  }
}

Requisitos de implementação

Clientes personalizados confiáveis devem incluir três componentes principais:

Armazenar lista de instâncias em cache e atualizar periodicamente

Inicie uma thread em segundo plano que consulte a API de descoberta de serviço a cada 5-10 segundos.

  • Em caso de sucesso (HTTP 200 com lista de instâncias não vazia): Sobrescreva o cache local com a nova lista.

  • Em caso de falha (timeout, status diferente de 200 ou lista vazia): Continue usando o cache local. Não limpe o cache. Isso preserva a disponibilidade do serviço durante falhas transitórias.

Balancear requisições entre as instâncias

Ao enviar uma requisição, selecione uma instância de destino no cache local. Use um algoritmo como round-robin ponderado ou selecione instâncias com base na lógica de negócios.

Tentar novamente requisições com falha em instâncias diferentes

Se a conexão com uma instância falhar (por exemplo, devido a uma queda da instância), tente a requisição novamente. Caso o cache local contenha múltiplas instâncias, selecione uma instância diferente para a nova tentativa.

Para uma implementação de referência completa, consulte o Python SDK source code.

Referência