Очередная «инкарнация» API

- Статья

Всем привет!

В рамках этой статьи мы хотим рассказать об изменениях в системе API, которые будут реализованы в рамках обновления Incarna. Имейте в виду, что, скорее всего, эти изменения повлияют на работу ваших приложений ― приносим свои извинения за то, что эта статья опубликована так поздно.

Больше данных

Если вы читали наши предыдущие статьи, то знаете, что мы изменили тип данных для нескольких переменных в нашей базе данных. Эти изменения затронули и систему API; поэтому если вы используете строгую типизацию, или ваше приложение накладывает какие-либо ограничения на размер соответствующих переменных ― обратите на них внимание. Ниже приведен список изменений:

MarketOrders — переменная orderID теперь имеет размер 64 бита (вместо 32 бит), typeID ― 32 бита.

WalletTransactions — переменная transactionID теперь имеет размер 64 бита. Это относится к страницам char/ и corp/, .csv и .xml.

Меньше данных

Функция MarketOrdersтеперь будет возвращать только перечень активных заказов, срок действия которых еще не истек. Объем данных, получаемых этой функцией ранее, был слишком большим, и поэтому мы решили ограничить его за счет истекших и выполненных заказов. Мы понимаем, что это большое изменение ― но большинство игроков используют эту функцию для получения списка именно активных заказов, а старые данные получают с помощью списка транзакций. Впрочем, если мы не правы, скажите нам — мы всегда готовы принять ваши замечания во внимание.

«Гуляющие» транзакции

Возможно, вы знаете, что мы изменили принцип работы обходчика транзакций, который используется на всех страницах WalletTransactions для просмотра («page back») более старых записей. При этом возникла небольшая проблема ― если вы (или ваша корпорация) совершали более Х транзакций в период между сеансами обновления кэша, то система API выдавала Х самых старых записей. Теперь API будет выдавать Х самых новых записей; просмотр более старых записей осуществляется в обычном порядке.

Регулирование количества запросов

Мы постоянно работаем над повышением быстродействия системы API и увеличением ее надежности. Обычно этот процесс связан с оптимизацией запросов и кэширования данных, но на этот раз мы решили посмотреть на проблему с другой стороны ― а именно на то, как некорректные запросы к системе API влияют на ее быстродействие. Оказалось, что это влияние достаточно сильно ― и поэтому мы решили принять соответствующие меры. Принцип работы новой системы прост: если с вашего IP-адреса совершается Х ошибочных запросов за Y минут, доступ к системе API с этого адреса будет заблокирован на Z минут. Если ваш IP-адрес заблокирован, то вы получите сообщение об ошибке с новым кодом 904. Оно выглядит примерно так:

2011-06-21 13:18:52
Your IP address has been temporarily blocked because it is causing too many errors. See the cacheUntil timestamp for when it will be opened again. IPs that continually cause a lot of errors in the API will be permanently banned, please take measures to minimize problematic API calls from your application.
2071-06-21 13:21:50

Для начала мы установим довольно строгие правила регулирования, но будем готовы в любой момент ослабить их (схожими принципами руководствуются и правительства при разработке налоговой политики!) Итак, для начала, если с вашего IP-адреса в какой-то момент поступит более 3 ошибочных вызова в минуту, то доступ с него к системе API будет заблокирован на 3 минуты.

Имейте в виду, что доступ к игре и нашим сайтам для таких IP-адресов заблокирован НЕ будет. Ограничения распространяются исключительно на систему API.

Новые правила регулирования вызовов могут повлиять на работу вашего приложения ― особенно если оно получает большое количество данных от системы API для различных игроков и корпораций. Впрочем, мы надеемся, что разработчики приложений примут это во внимание и будут организовывать работу с системой API таким образом, чтобы максимально сократить количество неправильных вызовов ― в конечном итоге, это сделает работу с системой API более надежной для всех пользователей.

В настоящий момент эта система уже активирована на сервере Singularity, и вы можете сами посмотреть на нее в действии. Имейте в виду, что в эту версию API НЕ входят настраиваемые ключи доступа ― их тестирование возобновится вскоре после ее выпуска и продлится до конца августа.

Вот и все. Еще раз приношу свои извинения за то, что эта статья увидела свет так поздно ― и если регулирование количества запросов доставит вам проблемы, мы всегда сможем ослабить эти ограничения.

Удачного кодинга!

CCP Elerhino, 17.06.2011