Rate limits and performance (russian)
Upcoming SlideShare
Loading in...5
×
 

Rate limits and performance (russian)

on

  • 234 views

 

Statistics

Views

Total Views
234
Slideshare-icon Views on SlideShare
234
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Rate limits and performance (russian) Rate limits and performance (russian) Presentation Transcript

    • AdWords API Workshops – All rights reserved
    • API SERVER Эффектиные API запросы и ограничения скорости Danial Klimkin, Google, Inc. AdWords API Workshops – All rights reserved
    • План ● Эффективное использование API ● Ограничения скорости по запросам (rate limiting) ● Примеры реализации очередей запросов для API AdWords API Workshops – All rights reserved
    • Эффективное использование API Простые советы как ускорить ваше приложение AdWords API Workshops – All rights reserved
    • Объединение операций AdWords API Workshops – All rights reserved ● Все запросы к API имеют издержки ● Передача по сети, сериализация, авторизация, etc. ● Группировка операция уменьшает издержки ● Метод mutate принимает массив операций ● MutateJobService для асинхронной обработки AdWords API Workshops – All rights reserved
    • Объединение по целям ● Несколько операций над одной кампанией выполняются быстре, чем над разными ● Обращение к одной кампании может вызвать ошибки типа CONCURRENT_MODIFICATION ● Работайте с одной кампанией только из одного потока ● Фоновые сервисы так же работают с объектами AdWords API Workshops – All rights reserved
    • Отправляйте только изменения ● Изменяете объект? ● Отпарвляйте только изменения! ● Отправка объекта целиком замедляет процесс ● Происходит проверка значений, сохранение в БД... AdWords API Workshops – All rights reserved
    • Кроме того… ● Используйте сжатие gzip для запросов и ответов. ● Включите в User-Agent “gzip” ● Accept-Encoding: gzip ● Используйте “partial failure” ● Выполяет все операции без ошибок ● Возвращает ошибки для остальных AdWords API Workshops – All rights reserved
    • Определение “ограничения скорости” AdWords API Workshops – All rights reserved
    • Ограничения скорости запросов ● Не фиксированы ● Зависят от нагрузки на сервер ● Различны для разных сервисов ● Меняются во времени ● Разнятся для разных запросов AdWords API Workshops – All rights reserved Defining Rate Limits
    • Ошибки “ограничения скорости” ● RATE_EXCEEDED ○ пауза на retryAfterSeconds секунд ● CONCURRENT_MODIFICATIONS ○ увеличивающаяся пауза, повтор ● UNEXPECTED_INTERNAL_API_ERROR ○ 1-2 попытки повторить ○ свяжитесь с нами, сообщите об ошибке AdWords API Workshops – All rights reserved Defining Rate Limits
    • Что делать при ограничении? Careful coding... AdWords API Workshops – All rights reserved
    • Простой пример 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
    • Простой пример -- описание ● Ошибка RateExceededError может возникнуть при выполнении любого запроса ● Важно обрабатывать эту ошибку ● Подождать и повторить -- простейшая стратегия в этом случае ● Особенно важно при выполнении нескольких связанных запросов AdWords API Workshops – All rights reserved
    • Важные замечания по примеру ● Решение -- синхронное ● Вызывающий поток заблокирован ● Нет контроля за скоростью выполнения ● Сложно группировать операции AdWords API Workshops – All rights reserved
    • Решение на основе очередей ● Очереди сообщений (Message queues) ● Решения для распределения и управление скоростью (throttling) запросов ● Много готовых решений на рынке ● ActiveMQ, RabbitMQ, … etc. ● Существуют решения для большинства платформ / языков AdWords API Workshops – All rights reserved
    • 1. Одна очередь Producer Производитель создает задачи для выполнения и добавляет из в очередь Producer Consumers Consumers Consumers X Queue Throttling Producer Logging Error Потребитель достает задания из очереди с заданной скоростью AdWords API Workshops – All rights reserved How to handle Rate Limits
    • Первое решение -- за и против ● За: ● Простота реализации ● Одна точка управления скоростью запросов ● Легко обрабатывать ошибки ● Против: ● ● ● ● Только одна точка управления скоростью запросов Сложно группировать операции Некоторые задачи будут долго выполняться Нужна приоритезация и не везде она эффективна AdWords API Workshops – All rights reserved
    • 2. Одна очередь с селекторами Producers Producers Производители создают задачи разных типов и добавляют в очередь Producers Producers Каждая группа потребителей обрабатывает задачи ее типа, со своей скоростью 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 How to handle Rate Limits
    • Второе решение -- за и против ● За: ● Группировка заданий по типу ● Частичный контроль за скоростью выполнения по сервисам ● Хорошая эффективность -- параллельность запросов ● Против: ● ● ● ● Только одна очередь -- управление ограничено Нет общего контроля скорости выполнения Больше движущихся частей -- сложнее Протоколирование усложняется AdWords API Workshops – All rights reserved
    • 3. Несколько очередей Исполнители выполняют запрос Producers Consumer Producers Producers Producers Consumer Throttling Producers Producers Producers Producers Producers Producers Producers Consumer Producers Executors Executors Executors Producers Consumer Queues Потребители получают задачи Error Logging X X X X Производители создают задачи Throttling AdWords API Workshops – All rights reserved How to handle Rate Limits
    • Третье решение -- за и против ● За: ● ● ● ● ● Полный контроль за скоростью выполнения Модульность и расширяемость Возможность управления разными очередями Масштабируемость Максимальные параллелизм и эффективность ● Против: ● Сложность реализации AdWords API Workshops – All rights reserved
    • Очереди сообщений: итого ● Решение зависит от масштаба задачи ● Внедрение -- инвестиция ● Следите за логами, очередями, ошибками ● Нет одного идеального решения 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/ AdWords API Workshops – All rights reserved
    • Вопросы? Спасибо! AdWords API Workshops – All rights reserved
    • AdWords API Workshops – All rights reserved