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

yyhrrdl8  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(212)

我在RockTheJVM(丹尼尔Ciocîrlan)中使用了一个应用程序示例:https://blog.rockthejvm.com/akka-cassandra-project/
为了实现API Rest,它使用了Akka Http。为了访问Cassandra,它使用了Doobie。
当一个请求想要创建一个银行账户时,实现会发送一个消息给一个akka参与者,然后参与者在Cassandra中创建账户。
POST请求-〉Akka Http端点-〉Actor(请求/管道模式)-〉Doobie -〉Cassandra
我的问题是使用actor的好处是什么?是因为Akka持久化吗?如果我不想要或不需要Akka持久化,为什么这样的实现:
POST请求-〉Akka Http端点-〉Doobie -〉Cassandra
在不使用Akka Persistence的情况下添加参与者有什么好处吗?

2mbi3lxu

2mbi3lxu1#

主要原因是separation of concerns。基于操作者的版本中的每个步骤都有不同的角色。
Akka Http endpoints处理REST(HTTP)请求,并将其转换为应用程序操作(Akka消息)。
Actor (ask/pipe pattern)实现应用程序操作。它使用一个或多个数据库操作、内部状态以及来自应用程序其他部分(其他执行元)的信息。
Doobie元素只负责实现数据库操作。
通过更短的管道,您可以使用单个元素将REST API调用直接Map到数据库访问,这是不灵活的,并且(相信我,我有伤疤)导致糟糕的系统设计。

相关问题