【问题标题】:Multiple Readers - Single Writer in Akka多个阅读器 - Akka 中的单个编写器
【发布时间】:2012-06-27 07:17:04
【问题描述】:

我想使用 Akka 在数据结构上实现多读/单写模式,但我卡在了 Actor 模型的设计上。

我最初的想法是有一个主管 Actor 来接收外部请求(读取或写入)。读取请求将被转发给读取器参与者进行异步处理。写入请求将等待所有读取器完成,然后同步处理。

我的问题是如何实现“等待所有读者完成”部分。

我首先想到在主管那里设置一个柜台。每次主管将消息转发给读者时,计数器都会增加。然后,阅读器完成后会将“我完成”消息发送回主管,这将减少计数器。但是,我认为这会导致死锁,因为“我完成了”消息会与外部请求发送到同一个邮箱。如果主管正在同步处理写入请求,那么“我完成了”永远不会到达它。

我真的很喜欢这个设计。任何帮助将不胜感激。

【问题讨论】:

  • 如果主管将写入请求交给读者演员,为什么还要同步处理它们?
  • 我想过同步处理写请求(在所有挂起的读请求都完成之后),以避免在写运行时处理任何其他请求(读或写)。

标签: actor akka


【解决方案1】:

根据上面的 cmets。

为您的主管演员添加一个队列以对传入的请求进行排队。当读者发回完成的消息时,将任务从队列中取出并交给读者。

【讨论】:

    【解决方案2】:

    帖子很旧,但它可能对某人有所帮助。 将 Futures 与 Await 以及未来完成的位置(onComplete 或 onSuccess)一起使用,处理写入操作。

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 2011-06-29
      • 2015-10-22
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多