Что касается первого вопроса, у вас есть три различных параметра, которые могут повлиять на производительность и количество фактически выполненных запросов:
- Параллелизм, это заставит Flink создать несколько экземпляров Вашего
AsyncFunction
, включая несколько экземпляров Вашего HttpClient
.
- Количество одновременных запросов в самой функции. Когда вы звоните
orderedWait
или unorderedWait
Вы должны указать в функции capacity
, что ограничит количество одновременных запросов.
- Актуальные настройки Вашего Http-клиента.
Как видите, пункты 2. и 3. связаны, так как Flink может ограничивать количество возможных одновременных запросов, поэтому иногда изменения в настройках вашего Http-клиента могут не повлиять, так как количество запросов ограничен Флинком.
Увеличение пропускной способности Вашего AsyncFunction
зависит от случая. Вы должны помнить, что AsyncFunction
вызывается в ОДНОЙ РЕЗЬБЕ. По сути, это означает, что если время ответа службы, которую вы вызываете, велико, вы просто заблокируете количество запросов, ожидающих ответа, и, таким образом, единственный способ - увеличить parallelism'
. Однако, как правило, изменение настроек HttpClient
и capacity
функции должно позволить вам повысить пропускную способность.
Что касается второго вопроса, я не вижу проблемы с созданием кратного ActorSystems
. Вы можете увидеть ответ на аналогичный вопрос [здесь]. 1