rate limits and performance (russian)

26
AdWords API Workshops – All rights reserved

Upload: marcwan

Post on 21-Jan-2015

112 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

Page 2: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

Эффектиные API запросыи ограничения скорости

Danial Klimkin, Google, Inc.

API SERVER

Page 3: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Эффективное использование API

● Ограничения скорости по

запросам (rate limiting)

● Примеры реализации очередей

запросов для API

План

Page 4: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

Эффективное использование APIПростые советы как ускорить ваше приложение

Page 5: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

Объединение операций AdWords API Workshops – All rights reserved

● Все запросы к API имеют издержки

● Передача по сети, сериализация, авторизация, etc.

● Группировка операция уменьшает издержки

● Метод mutate принимает массив операций

● MutateJobService для асинхронной обработки

Page 6: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Несколько операций над одной кампанией

выполняются быстре, чем над разными

● Обращение к одной кампании может вызвать ошибки типа CONCURRENT_MODIFICATION● Работайте с одной кампанией только из одного потока● Фоновые сервисы так же работают с объектами

Объединение по целям

Page 7: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Изменяете объект?

● Отпарвляйте только изменения!

● Отправка объекта целиком замедляет процесс

● Происходит проверка значений, сохранение в БД...

Отправляйте только изменения

Page 8: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Используйте сжатие gzip для запросов и ответов.● Включите в User-Agent “gzip”● Accept-Encoding: gzip

● Используйте “partial failure”● Выполяет все операции без ошибок● Возвращает ошибки для остальных

Кроме того…

Page 9: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

Определение “ограничения скорости”

Page 10: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved Defining Rate Limits

● Не фиксированы

● Зависят от нагрузки на сервер

● Различны для разных сервисов

● Меняются во времени

● Разнятся для разных запросов

Ограничения скорости запросов

Page 11: Rate limits and performance (russian)

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)

AdWords API Workshops – All rights reserved

Что делать при ограничении?Careful coding...

Page 13: Rate limits and performance (russian)

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)

AdWords API Workshops – All rights reserved

● Ошибка RateExceededError может возникнуть при выполнении любого запроса

● Важно обрабатывать эту ошибку● Подождать и повторить -- простейшая

стратегия в этом случае● Особенно важно при выполнении

нескольких связанных запросов

Простой пример -- описание

Page 15: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Решение -- синхронное

● Вызывающий поток заблокирован

● Нет контроля за скоростью выполнения

● Сложно группировать операции

Важные замечания по примеру

Page 16: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Очереди сообщений (Message queues)

● Решения для распределения и управление скоростью (throttling) запросов

● Много готовых решений на рынке● ActiveMQ, RabbitMQ, … etc.

● Существуют решения для большинства платформ / языков

Решение на основе очередей

Page 17: Rate limits and performance (russian)

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)

AdWords API Workshops – All rights reserved

● За:● Простота реализации● Одна точка управления скоростью запросов● Легко обрабатывать ошибки

● Против:● Только одна точка управления скоростью запросов● Сложно группировать операции● Некоторые задачи будут долго выполняться● Нужна приоритезация и не везде она эффективна

Первое решение -- за и против

Page 19: Rate limits and performance (russian)

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)

AdWords API Workshops – All rights reserved

● За:● Группировка заданий по типу● Частичный контроль за скоростью выполнения по

сервисам● Хорошая эффективность -- параллельность запросов

● Против:● Только одна очередь -- управление ограничено● Нет общего контроля скорости выполнения● Больше движущихся частей -- сложнее● Протоколирование усложняется

Второе решение -- за и против

Page 21: Rate limits and performance (russian)

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)

AdWords API Workshops – All rights reserved

● За:● Полный контроль за скоростью выполнения● Модульность и расширяемость● Возможность управления разными очередями● Масштабируемость● Максимальные параллелизм и эффективность

● Против:● Сложность реализации

Третье решение -- за и против

Page 23: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved

● Решение зависит от масштаба задачи

● Внедрение -- инвестиция

● Следите за логами, очередями, ошибками

● Нет одного идеального решения

Очереди сообщений: итого

Page 24: Rate limits and performance (russian)

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)

AdWords API Workshops – All rights reserved

Вопросы?Спасибо!

Page 26: Rate limits and performance (russian)

AdWords API Workshops – All rights reserved