Akka-了解演员模型

时间:2018-12-09 21:45:54

标签: akka microservices

我已经学习Akka几天了,我有一个简单的问题就可以很好地理解它。应该如何使用角色为REST服务创建应用程序体系结构?演员应该是:

  • 一个简单的组件(例如服务层,DAO,控制器等)?
  • 演员应该是商务逻辑元素。例如,我有一个业务逻辑,应该将其逻辑化为参与者的任务?
  • Actor =微服务。这是一个高层。应用程序中的每个微服务都应该作为一个单独的参与者起作用?

我无法以这种方式理解它-如何正确使用演员?如果我创建具有层(控制器,服务,DAO和数据库)的REST服务,应如何在Akka应用程序中将其作为参与者分开?

2 个答案:

答案 0 :(得分:1)

有一个博客(可能是this)很好地反映了我对Akka演员的看法。我真的不使用它们。

取决于您与之交谈的人,有些人真的很喜欢它,而另一些人则将其视为潜在的基本要素,在应用程序级别上可能没什么用。

我使用演员来处理状态。就这样。否则,它是期货或Akka Streams。希望您喜欢该博客。如果您仍然有疑问,请射击。我身后有5年以上的Akka。很乐意提供帮助。

答案 1 :(得分:1)

我不建议使用原始的Akka actor构建REST服务。 Actor更适合用于封装状态和行为。例如,松耦合的轻量级执行器可以用于simulating individual IoT devices(例如,恒温器),每个控制器都保持其自己的内部状态(例如,冷设置),并通过无阻塞消息传递来调整/报告其设置。 / p>

对于REST API /服务,您可能要考虑使用Play,它是在Akka之上构建的,支持非阻塞I / O,作为头等公民的JSON,Websocket等。创建REST service using Play的示例。

在微服务上,如上面的链接所述:

  

在Play中构建REST API不会自动使其成为   “微服务”,因为它没有涵盖更大范围的关注   微服务,例如确保弹性,一致性或监视。

要将微服务整合到REST API中,请考虑Lagom framework,它是在Play / Akka之上构建的,并具有reactive的质量。