Будет ли Akka ShardRegion узким местом в производительности, если вместо шаблона «сказать» используется шаблон «спросить»?

Я новичок в Akka и хочу создать распределенную службу с помощью Akka gRPC и сегментирования кластера, которая предоставляет клиентам услугу извлечения данных.

Итак, какой-то RequestActor (может быть, вообще нет такого актера с gRPC, я не уверен) получает запрос клиента и перенаправляет его другому ProcessingActor через shardRegion для получения результата запроса.

Для этого есть два варианта:

  • tell шаблон
    shardRegion ! Request(raw_request, localRequestActor)

  • ask шаблон
    shardRegion ? raw_request pipeTo(localRequestActor)

Мои вопросы,

  1. Поскольку все запросы будут пересылаться через shardRegion актера, поэтому, если я использую шаблон ask, не будет ли узким местом в производительности shardRegion актер? Или shardRegion просто создает внутреннего актера для обработки обещаний на будущее, и как только запрос будет перенаправлен, shardRegion больше не будет участвовать?

  2. Я знаю, что ask влияет на производительность/ресурсы по сравнению с tell; с другой стороны, ask предоставляет механизм тайм-аута, и нам придется сделать это самостоятельно с помощью tell. Поскольку это взаимодействие типа «запрос-ответ», что лучше выбрать в моем случае?

Спасибо!


person user6502167    schedule 16.09.2019    source источник


Ответы (1)


У вас нет дополнительных последствий для производительности при использовании AskPattern с субъектом области сегмента в качестве получателя. Поскольку актор, который обрабатывает Ask, создается на машине / jvm, где вы создаете экземпляр AskPattern. Актер области осколка не узнает об этом.

В общем, по соображениям производительности лучше использовать внутри вашего актера сообщение и внутреннюю обработку тайм-аута. Но если производительность для вас не проблема, справедливо использовать AskPattern из-за меньшего количества кода ИМХО.

person cokeSchlumpf    schedule 17.09.2019
comment
Итак, как для tell, так и для ask актор shardRegion ведет себя в основном одинаково, например, переслать сообщение и забыть? Значит, shardRegion не будет узким местом при работе со многими asks? - person user6502167; 18.09.2019
comment
@ user6502167- Ни один из сегментов не знает об этом запросе и, следовательно, не имеет с ним проблем. Актер ShardRegion просто перенаправит сообщение в правильный сегмент. - person cokeSchlumpf; 18.09.2019