Как ограничить скорость / количество / производительность сопрограмм в Kotlin

#kotlin #asynchronous #webclient #kotlin-coroutines

#kotlin #асинхронный #webclient #kotlin-сопрограммы

Вопрос:

Я хочу получать данные из внешнего микросервиса в цикле несколько сотен тысяч раз, используя Spring и Kotlin с сопрограммами. Затем я хочу изменить эти данные и отправить их обратно в этот микросервис. Я не хочу проводить DDOS-атаку на этот микросервис. Каковы способы ограничения производительности / скорости / количества сопрограмм?

Комментарии:

1. Используйте пул соединений с ограниченной очередью и разумным количеством потоков max.

Ответ №1:

«не хотите выполнять DDOS-атаку на этот микросервис» Сначала определите, как вы измеряете допустимую скорость доступа к микросервису. Это количество сообщений в секунду, или это общий размер сообщений, или какое-то более сложное измерение?

Например, пусть мы хотим ограничить минимальный период между вызовом микросервиса, скажем, 100 мс. Затем просто вызовите delay(100L) перед следующим вызовом микросервиса.