Akka 阿克卡的管理问题
我是Akka的新手,我们正在为多个事务构建一个健壮的系统,可以扩展到每分钟5000个请求Akka 阿克卡的管理问题,akka,Akka,我是Akka的新手,我们正在为多个事务构建一个健壮的系统,可以扩展到每分钟5000个请求 调度器将列表或请求推送到Akka主参与者 Akka的主要参与者有子组件的引用,在子组件上说“询问”,并等待未来,子组件与“webservice适配器”交互,适配器在其中调用Web服务 在“webservice适配器”中,我们存储对数据库的请求和响应 一旦响应可用,适配器将结果返回给Subactor,然后返回给Future,以便在Actor中进行进一步处理 问题是: 由于我们在主参与者中使用“Ask”来调用子
Reference.tell(request,ActorRef.noSender())
,这是一个异步调用。现在,适配器不再等待数据库事务并以非常少的时间将响应返回给子组件,而且由于DBActor负责消息,现在也没有数据库拥塞
我想知道,在subactor中通过在subactor的preStart()中创建DBActor的引用来调用DBActor是不是一件好事
当我使用main actors dispatcher和默认的无界邮箱时,我看到很多死信
你能建议一个更好的方法吗?我看到上面可能会有错误。再添加一层间接层就可以了。我认为你最好的模式应该是这样的: 1) 入口点参与者接收请求并为其分配唯一id 2) 入口点参与者生成一个worker,并将请求与id一起传递给它(tell) 3) 工作者参与者等待连接,执行其行为,并响应主参与者(告诉)他已完成该请求(id)+可选结果值 4) 主参与者完成外部请求 这将完全删除任何ask模式。缺点:不保证排序(您可以通过在主入口点缓存响应并对其排序来实现排序)
如果您仍然需要超时(web连接),您可以将worker actor上的计时器设置为在一段时间后停止。您对有序处理请求有什么要求吗?