Escolher um endpoint

A API Route Optimization tem os seguintes endpoints:

  • OptimizeTours: um endpoint de bloqueio para solicitações únicas.
  • OptimizeToursLongRunning: um endpoint não bloqueador para solicitações únicas com tempos de solução longos.
  • OptimizeToursUri: um endpoint não bloqueador para solicitações únicas com grandes requisitos de dados.
  • BatchOptimizeTours: um endpoint não bloqueador para várias solicitações processadas simultaneamente.

O endpoint escolhido depende do seu caso de uso, do tamanho da solicitação, do tempo esperado de resolução e se você precisa processar várias solicitações simultaneamente.

Comparar endpoints

Use a tabela a seguir para identificar o endpoint certo para suas necessidades:

Endpoint OptimizeTours OptimizeToursLongRunning OptimizeToursUri BatchOptimizeTours
Tipo de execução Bloqueio Sem bloqueio Sem bloqueio Sem bloqueio
Requests processed Solteiro Solteiro Solteiro Várias
Tamanho máximo da solicitação Pequeno Médio Grande Grande
Tempo de resolução Curto Longo Longo Longo
Requer o Google Cloud Storage Não Não Sim Sim

Entender as características do endpoint

A tabela anterior lista as seguintes características para ajudar você a escolher o endpoint certo:

  • Tipo de execução: determina como o aplicativo processa a conexão de rede enquanto aguarda uma resposta. Há dois tipos:
    • Endpoints de bloqueio: mantêm a conexão aberta até que a API retorne uma resposta.
    • Endpoints sem bloqueio: processam solicitações em segundo plano. A API retorna imediatamente um ID de operação de longa duração (LRO) que você consulta mais tarde para recuperar os resultados.
  • Solicitações processadas: determina se o endpoint processa uma única solicitação de roteamento ou várias solicitações simultaneamente.
  • Tamanho máximo da solicitação: solicitações pequenas e médias são enviadas diretamente em linha e têm limites do lado do servidor. Solicitações grandes ignoram esses limites usando o Google Cloud Storage. Encontre os limites exatos de tamanho da solicitação nas seções de detalhes dos endpoints.
  • Tempo de resolução: solicitações simples podem ser resolvidas em pouco tempo, enquanto as complexas levam mais tempo. Como o tempo de resolução determina por quanto tempo uma conexão precisa ficar aberta, a escolha do endpoint depende dos limites de tempo limite. Para mais informações, consulte Configurar tempos limite e prazos.
  • Requer o Google Cloud Storage: os endpoints que processam solicitações e respostas grandes leem e gravam dados diretamente no Google Cloud Storage. Em vez de enviar os dados na solicitação HTTP, faça upload da solicitação para um bucket do Cloud Storage e transmita o URI para a API.

Detalhes do endpoint

A API Route Optimization tem quatro endpoints. As seções a seguir explicam como cada endpoint funciona e incluem um exemplo de solicitação.

OptimizeTours

OptimizeTours é um endpoint de bloqueio destinado a solicitações únicas com tempos de solução curtos. Ela retorna uma rota otimizada diretamente na resposta. Como é um endpoint de bloqueio, mantenha sua conexão de rede aberta até que a API termine de processar a solicitação para retornar uma resposta. Esse endpoint aceita solicitações inline de até aproximadamente 4 MB.

Confira um exemplo de solicitação de OptimizeTours

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ],
        "deliveries":[
          {
            "arrivalLocation": {
              "latitude": 37.424215,
              "longitude": -122.095260
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursLongRunning

OptimizeToursLongRunning é um endpoint não bloqueador para solicitações únicas com tempos de solução longos. Ele retorna um ID de operação de longa duração (LRO). É possível pesquisar esse ID usando o endpoint GetOperation para verificar o status da solicitação e recuperar as rotas otimizadas finais. Esse endpoint aceita solicitações inline de até aproximadamente 8 MB.

Confira um exemplo de solicitação de OptimizeToursLongRunning

{
  "model": {
    "shipments":[
      {
        "pickups":[
          {
            "arrivalLocation": {
              "latitude": 37.425062,
              "longitude": -122.095355
            }
          }
        ]
      }
    ],
    "vehicles":[
      {
        "travelMode": "DRIVING",
        "costPerKilometer": 1.0
      }
    ]
  }
}
    

OptimizeToursUri

OptimizeToursUri é um endpoint não bloqueador destinado a solicitações únicas com tempos de solução longos e grandes requisitos de dados (mais de 8 MB). Ele retorna um ID de operação de longa duração (LRO). É possível pesquisar esse ID usando o endpoint GetOperation para verificar o status da solicitação.

Em vez de enviar o payload inline, faça upload do OptimizeToursRequest para o Google Cloud Storage. Em seguida, transmita os URIs do Cloud Storage para a solicitação de entrada e o destino de saída à API. O servidor lê os dados do URI de entrada e grava o OptimizeToursResponse final diretamente no URI de saída. Você pode ler as rotas otimizadas desse URI de saída quando a operação for concluída.

Confira um exemplo de solicitação de OptimizeToursUri

{
  "input": {
    "uri": "gs://your-bucket/path/input/object.json"
  },
  "output": {
    "uri": "gs://your-bucket/path/output/object.json"
  }
}
    

BatchOptimizeTours

BatchOptimizeTours é um endpoint não bloqueador destinado a várias solicitações de otimização independentes processadas simultaneamente. Ele retorna um ID de operação de longa duração (LRO). É possível pesquisar esse ID usando o endpoint GetOperation para verificar o status da solicitação e recuperar as rotas otimizadas finais.

Em vez de enviar o payload inline, faça upload de vários OptimizeToursRequest para o Google Cloud Storage. Em seguida, transmita os URIs do Cloud Storage para a API. O servidor lê os dados dos seus URIs de entrada e grava um OptimizeToursResponse para cada solicitação diretamente nos seus URIs de saída.

Confira um exemplo de solicitação de BatchOptimizeTours

{
  "modelConfigs": [
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "gs://your-bucket/path/input/request_1.json"
        },
        "dataFormat": "JSON"
      },
      "outputConfig": {
        "gcsDestination": {
          "uri": "gs://your-bucket/path/output/response_1.json"
        },
        "dataFormat": "JSON"
      }
    },
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "gs://your-bucket/path/input/request_2.json"
        },
        "dataFormat": "JSON"
      },
      "outputConfig": {
        "gcsDestination": {
          "uri": "gs://your-bucket/path/output/response_2.json"
        },
        "dataFormat": "JSON"
      }
    }
  ]
}