Download - Rate limits and performance (russian)
![Page 1: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/1.jpg)
AdWords API Workshops – All rights reserved
![Page 2: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/2.jpg)
AdWords API Workshops – All rights reserved
Эффектиные API запросыи ограничения скорости
Danial Klimkin, Google, Inc.
API SERVER
![Page 3: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/3.jpg)
AdWords API Workshops – All rights reserved
● Эффективное использование API
● Ограничения скорости по
запросам (rate limiting)
● Примеры реализации очередей
запросов для API
План
![Page 4: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/4.jpg)
AdWords API Workshops – All rights reserved
Эффективное использование APIПростые советы как ускорить ваше приложение
![Page 5: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/5.jpg)
AdWords API Workshops – All rights reserved
Объединение операций AdWords API Workshops – All rights reserved
● Все запросы к API имеют издержки
● Передача по сети, сериализация, авторизация, etc.
● Группировка операция уменьшает издержки
● Метод mutate принимает массив операций
● MutateJobService для асинхронной обработки
![Page 6: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/6.jpg)
AdWords API Workshops – All rights reserved
● Несколько операций над одной кампанией
выполняются быстре, чем над разными
● Обращение к одной кампании может вызвать ошибки типа CONCURRENT_MODIFICATION● Работайте с одной кампанией только из одного потока● Фоновые сервисы так же работают с объектами
Объединение по целям
![Page 7: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/7.jpg)
AdWords API Workshops – All rights reserved
● Изменяете объект?
● Отпарвляйте только изменения!
● Отправка объекта целиком замедляет процесс
● Происходит проверка значений, сохранение в БД...
Отправляйте только изменения
![Page 8: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/8.jpg)
AdWords API Workshops – All rights reserved
● Используйте сжатие gzip для запросов и ответов.● Включите в User-Agent “gzip”● Accept-Encoding: gzip
● Используйте “partial failure”● Выполяет все операции без ошибок● Возвращает ошибки для остальных
Кроме того…
![Page 9: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/9.jpg)
AdWords API Workshops – All rights reserved
Определение “ограничения скорости”
![Page 10: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/10.jpg)
AdWords API Workshops – All rights reserved Defining Rate Limits
● Не фиксированы
● Зависят от нагрузки на сервер
● Различны для разных сервисов
● Меняются во времени
● Разнятся для разных запросов
Ограничения скорости запросов
![Page 11: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/11.jpg)
AdWords API Workshops – All rights reserved Defining Rate Limits
● RATE_EXCEEDED○ пауза на retryAfterSeconds секунд
● CONCURRENT_MODIFICATIONS○ увеличивающаяся пауза, повтор
● UNEXPECTED_INTERNAL_API_ERROR○ 1-2 попытки повторить○ свяжитесь с нами, сообщите об ошибке
Ошибки “ограничения скорости”
![Page 12: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/12.jpg)
AdWords API Workshops – All rights reserved
Что делать при ограничении?Careful coding...
![Page 13: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/13.jpg)
AdWords API Workshops – All rights reserved
Простой пример
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);
}
}
Java
How to handle Rate Limits
![Page 14: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/14.jpg)
AdWords API Workshops – All rights reserved
● Ошибка RateExceededError может возникнуть при выполнении любого запроса
● Важно обрабатывать эту ошибку● Подождать и повторить -- простейшая
стратегия в этом случае● Особенно важно при выполнении
нескольких связанных запросов
Простой пример -- описание
![Page 15: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/15.jpg)
AdWords API Workshops – All rights reserved
● Решение -- синхронное
● Вызывающий поток заблокирован
● Нет контроля за скоростью выполнения
● Сложно группировать операции
Важные замечания по примеру
![Page 16: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/16.jpg)
AdWords API Workshops – All rights reserved
● Очереди сообщений (Message queues)
● Решения для распределения и управление скоростью (throttling) запросов
● Много готовых решений на рынке● ActiveMQ, RabbitMQ, … etc.
● Существуют решения для большинства платформ / языков
Решение на основе очередей
![Page 17: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/17.jpg)
AdWords API Workshops – All rights reserved
Consumers
How to handle Rate Limits
1. Одна очередь
Queue
Producer
Producer
Producer
ConsumersThrottling
Производитель создает задачи для выполнения и добавляет из в очередь
Потребитель достает задания из очереди с заданной скоростью
X Error
Consumers
Logging
![Page 18: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/18.jpg)
AdWords API Workshops – All rights reserved
● За:● Простота реализации● Одна точка управления скоростью запросов● Легко обрабатывать ошибки
● Против:● Только одна точка управления скоростью запросов● Сложно группировать операции● Некоторые задачи будут долго выполняться● Нужна приоритезация и не везде она эффективна
Первое решение -- за и против
![Page 19: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/19.jpg)
AdWords API Workshops – All rights reserved
Producers
Producers
Producers
Producers
How to handle Rate Limits
2. Одна очередь с селекторами
Queue
Producers
Producers
Producers
Producers
Producers
Producers
Producers
Producers
Consumer
Consumer
Consumer
Consumer
Throttling
Производители создают задачи разных типов и добавляют в очередь
Каждая группа потребителей обрабатывает задачи ее типа, со своей скоростью
XXXX Error
![Page 20: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/20.jpg)
AdWords API Workshops – All rights reserved
● За:● Группировка заданий по типу● Частичный контроль за скоростью выполнения по
сервисам● Хорошая эффективность -- параллельность запросов
● Против:● Только одна очередь -- управление ограничено● Нет общего контроля скорости выполнения● Больше движущихся частей -- сложнее● Протоколирование усложняется
Второе решение -- за и против
![Page 21: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/21.jpg)
AdWords API Workshops – All rights reserved How to handle Rate Limits
3. Несколько очередей
Producers
Producers
Producers
Producers
Queues
Producers
Producers
Producers
Producers
Producers
Producers
Producers
Producers
Consumer
Consumer
Consumer
Consumer
Throttling
XXXX
Error
ProducersExecutorsExecutorsExecutors
Throttling
Logging
Производители создают задачи
Потребители получают задачи
Исполнители выполняют запрос
![Page 22: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/22.jpg)
AdWords API Workshops – All rights reserved
● За:● Полный контроль за скоростью выполнения● Модульность и расширяемость● Возможность управления разными очередями● Масштабируемость● Максимальные параллелизм и эффективность
● Против:● Сложность реализации
Третье решение -- за и против
![Page 23: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/23.jpg)
AdWords API Workshops – All rights reserved
● Решение зависит от масштаба задачи
● Внедрение -- инвестиция
● Следите за логами, очередями, ошибками
● Нет одного идеального решения
Очереди сообщений: итого
![Page 24: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/24.jpg)
AdWords API Workshops – All rights reserved
Полезные ресурсыAPI Best Practices - https://developers.google.com/adwords/api/docs/guides/bestpractices
ActiveMQ - http://activemq.apache.org/RabbitMQ - http://www.rabbitmq.com/
![Page 25: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/25.jpg)
AdWords API Workshops – All rights reserved
Вопросы?Спасибо!
![Page 26: Rate limits and performance (russian)](https://reader034.vdocuments.site/reader034/viewer/2022051612/54bf19da4a7959bd3a8b45c6/html5/thumbnails/26.jpg)
AdWords API Workshops – All rights reserved