Функция стоимости дроссельной заслонки Akka для динамического контроля заторов c? - PullRequest
1 голос
/ 29 марта 2020

Я всего лишь Scala noob, и пытаюсь обдумать лучший способ реализовать то, о чем я думаю.

У меня есть Sink, который испускает строки из базы данных и Flow, который отправляет пакетный запрос в базу данных для удаления этих строк.

Я хочу использовать функцию TCP Slow Start-esque для увеличения и сокращения количества строк, отправляемых в каждом запросе, когда один из мои запросы занимают слишком много времени Например, если запрос занял 25 мс, я бы уменьшил размер окна массового удаления вдвое и начал бы исследовать вверх, пока не получит другой тайм-аут. Функция стоимости

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

Кроме того, звучит как Actor взаимодействие с ask может быть хорошим Actor может содержать состояние размера окна, и я могу изменить его размер после получения «тайм-аута».

Уже существует что-то подобное?

...