Понимание CPS

S
Автор Sergiiy
Обновлено 1 год назад

Контроль количества вызовов, проходящих через ваш программный коммутатор, является очень важной функцией, и для того, чтобы гарантировать, что реальное количество вызовов, которые были маршрутизированы, равно ожидаемому, вам необходимо понимать механизм управления скоростью CPS.

Проблема здесь кроется в непредсказуемых всплесках новых вызовов, поступающих на софтсвитч. Эти всплески должны обрабатываться должным образом, чтобы убедиться, что меньшее количество вызовов отклонено, а значение CPS не превышено.

Например:

В течение 1 минуты мы получили 60 звонков. И мы ожидаем, что это значение соответствует 1 CPS. Однако мы можем получить 50 звонков за 5 секунд и 10 звонков в течение следующих 55.

Должен ли программный коммутатор отклонять 45 из 50 вызовов, поступивших за 5 секунд?

В этой ситуации наши разработчики создали механизм, который динамически контролирует скорость вызова. Это называется корзина токенов. Корзина заполнена токенами, и количество токенов в ведре зависит от значения CPS. Корзина постоянно линейно пополняется новыми токенами, чтобы гарантировать, что оно заполнено. Емкость корзины равна значению CPS, умноженному на стоимость звонка в токенах и умноженному на 60 секунд. Корзина не может содержать больше токенов, чем его вместимость. Каждый вызов имеет свою стоимость в токенах. Чтобы передать вызовы, нам нужно получить определенное количество токенов из корзины. Если необходимой суммы нет - вызов будет отклонен.

А теперь простой пример:

CPS равен 1, и корзина заполнена.

Один звонок стоит 100 токенов.

Скорость заполнения ковша равна CPS * Стоимость звонка (100 токенов в секунду).

Размер корзины: CPS * Стоимость звонка * 60 секунд (6000 токенов)

Теперь, если бы мы получили 50 звонков за 5 секунд, все они прошли бы. Однако в ведре останется только 1500 токенов (уменьшится на 5000 токенов при вызовах и увеличится на 500 токенов при повторном заполнении потока).

Если мы получим еще одну порцию из 55 вызовов в течение следующих 5 секунд, пройдут только 20 из них, а остальные будут отклонены, однако, если порция будет меньше (10 вызовов в течение следующих 50 секунд), все они пройдут успешно.

Оцените эту статью