如何在Akka演员之间分享国家?

时间:2015-06-04 17:05:53

标签: scala akka mutable

我的BalanceSheetActor定义如下:

class BalanceSheetActor extends Actor {

  val tradables = mutable.Set[Contract]

}

我有一些简单的DepositContract定义如下:

case class DepositContract(faceValue: Double)

我的模型中的每个合同都是一个BalanceSheetActor的资产和另一个BalanceSheetActor的责任,因此任何Contract的状态将在参与者之间共享(即每个合同将成为至少两套tradables)的成员。

假设我想将faceValue的{​​{1}}增加一些DepositContract。我要么......

  1. 从两组amount中移除旧合约,并将其替换为新的tradables
  2. 将每个DepositContract(faceValue + amount)建模为Contract
  3. 将每个akka.Agent建模为Contract(从而封装状态)。
  4. 选项1似乎不必要地复杂化(另外合同很可能不同步),选项2似乎没问题,但我需要创建数百万合同代理的订单,并担心内存使用情况。我对选项3也有类似的担忧。我不知道这些内存使用问题是否有充分根据。想法?

    我希望有一个选项4,这个Scala / Akka noob没有想到......

0 个答案:

没有答案