我是 Akka 的新手,我想通过 Akka gRPC 和集群分片创建一个分布式服务,为客户端提供数据检索服务。
所以有些人RequestActor
(我不确定,gRPC 可能根本没有这样的参与者)接收客户端请求,并将其转发给另一个ProcessingActor
byshardRegion
以获取查询结果。
对此有两种选择:
tell
图案
shardRegion ! Request(raw_request, localRequestActor)
ask
图案
shardRegion ? raw_request pipeTo(localRequestActor)
我的问题是,
由于所有请求都将通过
shardRegion
actor转发,所以如果我使用该ask
模式,shardRegion
actor会成为性能瓶颈吗?或者shardRegion
只是创建一个内部actor来处理future-promise的东西,一旦请求被转发,shardRegion
就不再涉及?我知道与;
ask
相比有一些性能/资源影响。tell
另一方面,ask
提供了超时机制,我们必须自己用tell
. 由于这是一个请求-响应交互,在我的情况下哪个是更好的选择?
谢谢!