Scala-在不阻止的情况下处理交易

时间:2019-10-29 23:03:29

标签: scala rest api transactions

我正在构建一个Scala REST API来处理订单,并且我一直遵循https://github.com/alexandru/scala-best-practices以确保遵循最佳实践,因为我编写任何Scala代码已有一段时间了。

到目前为止,我所有的代码都是线程安全且无阻塞的,并在适当的地方使用Future并始终保持不变。现在,我已经集成了一个可以处理订单创建的数据存储,我的问题是我该如何处理交易(例如同时创建两个完全相同的订单)?

在维护线程安全并避免非阻塞代码的同时,我可以遵循任何模式或示例来处理事务吗?我来自Java背景,通常会使用同步块,但不会尊重:

4.8。 https://github.com/alexandru/scala-best-practices/blob/master/sections/4-concurrency-parallelism.md

  

满足阿姆达尔定律。与锁同步极大地限制了并行化的可能性,因此也限制了垂直可伸缩性。读取令人尴尬地可Paralellable,所以请始终避免这样做:

 def fetch = synchronized { someValue }
  

使用更好的同步方案,这些方案不涉及同步读取,例如原子引用或STM。如果您无法执行此操作,请使用适当的抽象完全避免这种情况。

我希望您能提供指导和/或实现此目标的示例。

0 个答案:

没有答案
相关问题