Your SlideShare is downloading. ×
Rate limits and performance
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Rate limits and performance

121
views

Published on

São Paulo AdWords API Workshops

São Paulo AdWords API Workshops

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
121
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. AdWords API Workshops – All rights reserved
  • 2. API SERVER Rate Limits e boas práticas da API +GustavoMenezes, Google, Inc. AdWords API Workshops – All rights reserved
  • 3. Agenda ● Boas práticas ● O que são Rate Limits? ● Como tratar Rate Limits AdWords API Workshops – All rights reserved
  • 4. Boas Práticas Pequenas mudanças que melhoram performance AdWords API Workshops – All rights reserved
  • 5. Execute Operações em Batch AdWords API Workshops – All rights reserved ● Requisições a API são custosas ● Transferência de rede, serialização, autenticação, etc. ● Agrupar operações reduz o custo ● Métodos mutate aceitam arrays de operações ● MutateJobService executa em batch AdWords API Workshops – All rights reserved
  • 6. Agrupe Operações por Entidade ● Multiplas operações nos mesmo AdGroups ou Campanhas são rápidas ● Operações seguidas em AdGroups/Campanhas causam CONCURRENT_MODIFICATION errors ● Servidor pode precisar de tempo para propagar ● Tente editar tudo de uma única vez AdWords API Workshops – All rights reserved
  • 7. Apenas Mude o Que Você Precisa ● Vai atualizar um objeto? ● Envie somente os valores diferentes! ● Enviar tudo desperdiça tempo ● O sistema ainda vai validar tudo, salvar no BD, etc. AdWords API Workshops – All rights reserved
  • 8. Algumas Outras Idéias… ● Comprima as requisições com gzip ● Inclua gzip no User-Agent ● Accept-Encoding: contém gzip ● Use falha parcial ● A API vai computar as operações que deram certo ● A API vai retornar as que falharam AdWords API Workshops – All rights reserved
  • 9. Definindo Rate Limits AdWords API Workshops – All rights reserved
  • 10. Rate Limits ● Não são fixos! ● Variam com a carga no servidor ● Variam por funcionalidade ● Variam com a hora ● Diferente para cada serviço AdWords API Workshops – All rights reserved
  • 11. Erros de Rate Limit ● RATE_EXCEEDED ○ espere retryAfterSeconds segundos ● CONCURRENT_MODIFICATIONS ○ Backoff exponencial, tente algumas vezes ● UNEXPECTED_INTERNAL_API_ERROR ○ Backoff exponencial, tente algumas vezes ○ Relate o problema no fórum AdWords API Workshops – All rights reserved
  • 12. Como Tratar Rate Limits Preste atenção nos detalhes... AdWords API Workshops – All rights reserved
  • 13. Exemplo Básico Java ApiError[] errorArray = apiException.getErrors(); for (ApiError apiError : errorArray) { if (apiError instanceof RateExceededError) { int seconds = ((RateExceededError) apiError) .getRetryAfterSeconds(); // wait the amount of seconds the server asked Thread.sleep(seconds * 1000); } } AdWords API Workshops – All rights reserved How to handle Rate Limits
  • 14. Exemplo Básico - Explicação ● Qualquer req. pode gerar um RateExceededError ● Tratar esses errors é muito importante ● Wait and retry é a melhor estratégia nesse caso ● Mais importante ainda quando executando mais de um request AdWords API Workshops – All rights reserved
  • 15. Exemplo Básico - Pontos Importante ● Solução síncrona para o problema ● Bloqueia a Thread até ter sucesso, ou falhar ● Sem controle sobre o rate speed ● Difícil de agrupar operações AdWords API Workshops – All rights reserved
  • 16. Uma Solução Mais Avançada ● Message Queues ● A melhor solução para distribuir carga e fazer throttling ● Boas soluções disponíveis no mercado ● ActiveMQ, RabbitMQ, … etc. ● Muitas ferramentas / bibliotecas para gerenciar a camada de comn. AdWords API Workshops – All rights reserved
  • 17. Message Queues (cont’d) ● Mais controle sobre os rate limits ● Melhor distribuição do código em módulos ● Vamos ver três possíveis soluções para o problema... AdWords API Workshops – All rights reserved
  • 18. 1. Fila Única Producer Producers criam tarefas para serem executadas na API, e despacham para a fila Producer Consumers Consumers Consumers X Queue Throttling Producer Logging Error Consumers recebem as mensagens/tarefas da fila com um rate controlado AdWords API Workshops – All rights reserved
  • 19. Primeira Solução - Pros & Cons ● Pros: ● Muito fácil de implementar ● Apenas um ponto de controle na velocidade ● Fácil de tratar os erros ● Cons: ● ● ● ● Apenas um ponto de controle na velocidade Difícil de agrupar operações Tarefas podem demorar muito para serem executadas Nem todas as filas implementam prioridade de mensagens AdWords API Workshops – All rights reserved
  • 20. 2. Fila Única com Seletores Producers Producers Producers criam tarefas específicas, e despacham para a fila com o cabeçalho específico Producers Producers Cada consumer específico agrupa as operações, e usa seu próprio rate limit para executá-las X X X X Producers Producers Queue Throttling Producers Producers Producers Consumer AdWords API Workshops – All rights reserved Producers Consumer Producers Consumer Producers Consumer Error
  • 21. Segunda Solução - Pros & Cons ● Pros: ● Agrupa operações por tipo ● Algum controle na velocidade por tipo ● Mais eficiente - melhor acesso em paralelo da API ● Cons: ● ● ● ● Apenas uma fila - difícil de administrar Sem um controle principal de acesso a API Gerenciar todas as partes pode ser difícil Log de operações também pode ser difícil AdWords API Workshops – All rights reserved
  • 22. 3. Múltiplas Filas Executors fazem a requisição Producers Consumer Producers Producers Producers Consumer Throttling Producers Producers Producers Producers Producers Producers Producers Consumer Producers Consumer Queues AdWords API Workshops – All rights reserved Producers Executors Executors Executors Consumers agrupam tarefas Error X X X X Producers criam as tarefas Throttling Logging
  • 23. Terceira Solução - Pros & Cons ● Pros: ● ● ● ● ● ● Controle total sobre rate limits Bastante robusta - fácil adicionar módulos novos Visão completa do que está acontecendo na fila Fácil de escalar baseado em demanda Feito corretamente, é fácil de manter! Super eficiente - Grouping paralelo; Acesso paralelo a API ● Cons: ● Difícil de implementar corretamente - time experiente AdWords API Workshops – All rights reserved
  • 24. Message Queues - Resumo ● Complexidade da plataforma que escolhe a solução ● Combine partes das soluções! ● Assunto complexo, mas existe retorno no futuro ● Invista muito em monitoramento. MUITO! ● Não existe silver bullet... AdWords API Workshops – All rights reserved
  • 25. Links API Best Practices - https://developers.google. com/adwords/api/docs/guides/bestpractices ActiveMQ - http://activemq.apache.org/ RabbitMQ - http://www.rabbitmq.com/ AdWords API Workshops – All rights reserved
  • 26. Perguntas? Obrigado! AdWords API Workshops – All rights reserved
  • 27. AdWords API Workshops – All rights reserved