为什么在http服务器和数据库之间使用actor



我是遵循一个应用程序的例子从RockTheJVM (Daniel ciocrlan): https://blog.rockthejvm.com/akka-cassandra-project/

为了实现API Rest,它使用Akka Http。要访问Cassandra,它使用Doobie。

当请求想要创建银行帐户时,实现向akka参与者发送消息,然后参与者在Cassandra中创建帐户。它是这样的:

POST Request ->Akka Http端点->Actor(请求/管道模式)->吸食大麻→卡桑德拉

我的问题是使用actor的好处或优势是什么?是因为阿卡人的坚持吗?为什么如果我不想或不需要Akka持久性,像这样的实现:

POST Request ->Akka Http端点->吸食大麻→卡桑德拉

在不使用Akka Persistence的情况下添加actor有什么好处吗?

主要原因是关注点分离。在基于角色的版本中,每一步都有一个不同的角色。

Akka Http endpoints处理REST(HTTP)请求,并将其转换为应用程序操作(Akka消息)。

Actor (ask/pipe pattern)执行应用操作。它使用一个或多个数据库操作、内部状态和来自应用程序其他部分(其他actor)的信息。

Doobie元素只负责实现数据库操作。

对于较短的管道,您有一个将REST API调用直接映射到数据库访问的单个元素,这是不灵活的,并且(相信我,我有伤痕)导致糟糕的系统设计。

相关内容

  • 没有找到相关文章