Я всего лишь Scala noob, и пытаюсь обдумать лучший способ реализовать то, о чем я думаю.
У меня есть Sink
, который испускает строки из базы данных и Flow
, который отправляет пакетный запрос в базу данных для удаления этих строк.
Я хочу использовать функцию TCP Slow Start-esque для увеличения и сокращения количества строк, отправляемых в каждом запросе, когда один из мои запросы занимают слишком много времени Например, если запрос занял 25 мс, я бы уменьшил размер окна массового удаления вдвое и начал бы исследовать вверх, пока не получит другой тайм-аут. Функция стоимости
throttle
кажется вполне подходящей для этого. Я мог бы обернуть свою функцию запроса во время каждого выполнения, а затем обновить сводную статистику. Однако это также указывает на то, что я знаю бюджет с фиксированными затратами, на который я хочу ориентироваться. Так что я очень не уверен в том, использовать ли его в этом случае, и я не знаю предостережений, связанных с использованием throttle
, которые, похоже, есть. Кажется, что было бы трудно увеличить и уменьшить размер «окна» для количества строк, которые я хочу попытаться удалить одновременно.
Кроме того, звучит как Actor
взаимодействие с ask
может быть хорошим Actor
может содержать состояние размера окна, и я могу изменить его размер после получения «тайм-аута».
Уже существует что-то подобное?