如何解决交易系统的Scala并发问题
我正在尝试使用 scala
构建交易系统。我使用 akka-http
作为服务器,其余工作目前由普通类和方法执行。
步骤是:
- 从帐户中读取余额。
- 进行一些处理(例如从其他关联帐户获取贷款)。
- 更新账户余额(扣除金额)。
当我们同时为同一个账户发起多笔交易时,其中一些交易会在第 1 步读取过期余额。因为第一笔交易尚未更新余额。
理想情况下,无论 api 调用如何,对某个帐户的所有 read/update
操作都应按顺序发生。
我尝试为帐户创建actor,以便所有消息都按顺序执行到actor。
但在这种情况下,从帐户读取是痛苦的,因为询问模式(?)也返回 Future[Any]
而不是 Future[SomeAccountDetailsObject]
。
即使它可以通过从 .asInstanceOf[Future[SomeAccountDetailsObject]]
解析而起作用,我也必须在进一步的代码中管理和传递 Future
,我倾向于忽略这些代码,因为我必须从交易中的各种关联帐户中读取数据并且它也是一个遗留代码,所以我想尽可能少地接触它。
是否有任何可能的方法来解决这个问题,如果使用 akka 堆栈通过将帐户操作的新代码的影响隔离为方法调用或其他东西来解决这个问题会更好
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。