Akka:设计演员组织结构时要考虑的因素?

时间:2015-06-01 17:10:25

标签: java akka

我使用Java 8构建了一个利用TimerBasedThrottler的Web服务客户端。在设计Actor组织模型时,我应该考虑哪些因素?

我目前正在考虑;

  1. 复杂性
  2. 吞吐量
  3. 阻止的可能性
  4. 我目前的设计使用以下组织结构;

    -  RequestCoordinator (Master) singleton
    -----   TimerBasedThrottler (Delegator) singleton
    ----------              RequestSender (Worker) - one actor created per web service request
    

    传入的请求通过限制器传递,该限制器强制执行特定的TPS。节流器和协调员都是单身人士。然后使用各个actor发送每个请求。这些演员在完成工作后会被传递给限制器并发出毒丸消息。

    Akka Actors推广使用路由器;这可以改善我上面概述的设计并使其更具容错性和高性能吗? Mine是一个简单的用例,但我想探索如何使用Akka原则改进设计?

1 个答案:

答案 0 :(得分:2)

一般来说:鼓励层次结构并观察错误内核模式,它实质上将风险较高的任务推送到叶节点。

其次,如果您尚未使用context.system.scheduler.scheduleOnce消息,我建议您考虑使用PoisonPill。这可以大大简化实现(主要是一边,不一定针对你帖子中的任何内容)。

此外,PoisonPill是正确的做法吗?如果这些是在飞行中创建的短命演员,为什么不context.stop

您是否阅读了throttling以及balancing workload across nodesthe work pulling pattern上的文档?

<强>禁止

不要!如果确实必须,请按照建议使用routers

过早优化?

您如何测试当前的解决方案?它是证明有问题还是显示资源争用?小心这不是过早优化的情况:)

当然,Akka documentation on best practices是一个很好的阅读。