Наша организация находится в процессе перехода на Apigee.
Мы хотим добиться следующего сценария. Не могли бы вы посоветовать мне, как это сделать? Может быть, использовать одновременно SpikeArrest, Quota и ConcurrentRatelimit?
Я хотел бы попросить практический пример настройки прокси-сервера в качестве руководства, как связать политики для достижения желаемого результата.
Я просмотрел документацию, и она несколько поверхностна и имеет пробелы в отношении того, что распространяется, а что нет и т. д.
http://apigee.com/docs/api-services/content/shield-apis-using-spikearrest
http://apigee.com/docs/api-services/content/rate-limit-api-traffic-using-quota#identifying-apps
http://apigee.com/docs/api-services/content/throttle-backend-connections-using-concurrentratelimit
Примером пробела является мой предыдущий вопрос о SpikeArrest, который возник в результате настройки SpikeArrest и не получил ожидаемого поведения из-за того, что в документации не указано, что SpikeArrests не распространяются: Синхронизация Apigee SpikeArrest между процессорами сообщений (MP)
Эти ребята также были пойманы по тому же сценарию: Apigee — поведение SpikeArrest
Сценарий и желаемый результат:
В нашей организации есть 6 процессоров сообщений (MP), и я предполагаю, что они работают строго циклическим образом.
У нас есть следующий серверный API — Api-1.
У Api-1 есть потребители из нашей организации наряду с потребителями Apigee. Мы хотим, чтобы наш Api-1 не забивался и не падал. Допустим, он прошел нагрузочное тестирование, чтобы обрабатывать максимум 50 запросов в секунду. Мы подсчитали, что с помощью Apigee мы хотим ограничить максимум 30 запросами в секунду, так как другие 20 запросов в секунду предназначены для пользователей из наших организаций (в основном других наших собственных продуктов), которые не проходите через апигей.
Из числа приложений DeveloperApp, использующих Api-1 через Apigee, мы определили 4 приложения/клиента, которые имеют самые высокие пики потребления. Из 30 пс, выделенных для Apigee, мы хотели бы иметь возможность выделять 5 пс для каждого из этих 4 высоких потреблений. DevApps/клиенты, а остальная скорость 10ps распределяется между другими DevApps/клиентами.
Основная проблема, с которой я постоянно сталкиваюсь в TargetEndpoint, описана здесь, поскольку политика SpikeArrest не распределяется между процессорами сообщений: Синхронизация Apigee SpikeArrest между процессорами сообщений (MP)
Как мы можем обойти это и достичь желаемого сценария?
Вот примеры того, что я пытался сделать и добиться желаемого поведения:
Целевая конечная точка прокси-сервера:
Ограничение скорости одновременного использования:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcurrentRatelimit async="true" continueOnError="false" enabled="true" name="Concurrent-Rate-Limit-1">
<DisplayName>Concurrent Rate Limit 1</DisplayName>
<AllowConnections count="1" ttl="5"/>
<Distributed>true</Distributed>
<TargetIdentifier name="default"></TargetIdentifier>
</ConcurrentRatelimit>
СпайкАрест:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SpikeArrest async="true" continueOnError="false" enabled="true" name="Spike-Arrest-2">
<DisplayName>Spike Arrest 2</DisplayName>
<FaultRules/>
<Properties/>
<Identifier ref="request.header.some-header-name"/>
<MessageWeight ref="request.header.weight"/>
<Rate>30ps</Rate>
</SpikeArrest>
Кроме того, что произойдет, если организация добавит или удалит депутатов без моего ведома, это полностью остановит регулирование?
Очень признателен!
Спасибо!