讨喜的隔离可变性(九)混合使用角色和STM

简介:

角色可以帮助我们对可变状态进行很好地隔离。尤其是当问题能够被拆分成可以独立运行的多个并发任务、并且并发任务彼此之间都是通过消息进行异步通信时,角色的表现更佳。但是,角色并未提供对跨任务的一致性进行管理的方法。所以如果我们希望两个或多个角色的动作要么全部成功、要么全部失败,则角色就无法独立实现,而此时我们就需要通过引入STM来与角色配合完成此类功能。在本节中,我假定你已经阅读过第6章、以及本章中有关角色和类型化角色的相关内容。

我们在4.6节和6.9节中曾经实现过一个用于在两个Account之间转账的AccountService类,该类可以作为我们理解角色和STM之间这种相互作用的绝佳示例。在这个示例中,存款和取款这两个动作对于单个账户来说都是隔离的,所以Account可以用一个简单的角色或一个类型化角色来实现。然而转账动作需要一对儿跨越两个账户的存取款动作配合起来才能完成。换句话说,在一个完整的转账过程中,由某个角色所负责的存款动作若想成功,只有当且仅当另一个角色所负责的取款动作也成功时才能达成。下面就让我们用角色和STM混搭的方式来实现这个转账示例。

Akka提供了一些混合使用角色和STM的选项。例如,我们可以创建一个独立的事务协调对象,并手动将多个角色按顺序摆放在事务中(关于这一层次的控制细节,请参阅Akka的帮助文档)。除此之外,我们还有两种用于管理角色间事务的方法可供选择。我们将会在下面两节分别来研究这两种方法:即如何使用transactors以及如何协调类型化角色。

目录
相关文章
|
4月前
|
容器
通用研发提效问题之区分女娲上下文中的共享字典和隔离字典,如何解决
通用研发提效问题之区分女娲上下文中的共享字典和隔离字典,如何解决
|
5月前
软件的质量特性及其子特性快速记忆表
软件的质量特性及其子特性快速记忆表
65 0
|
设计模式 Java
JAVA设计模式7:适配者模式,彻底解决两不兼容接口之间的问题
JAVA设计模式7:适配者模式,彻底解决两不兼容接口之间的问题
160 0
|
芯片 存储
带你读《PDN设计之电源完整性: 高速数字产品的鲁棒和高效设计》之二:PDN阻抗设计基本原理
基于本书关注的重点,作者阐述了瞬时电流和PDN电压噪声之间的关系。作者引入了瞬时电流的概念,并讨论了该电流对电压响应的影响,并提供几个特定情况下的瞬时电流波形来加以说明和验证。这些知识能够帮助读者理解PDN的阻抗曲线,以及与特定电流模型之间的相互作用,并可以获得其相应的电压响应。
|
数据格式 XML 数据安全/隐私保护
分布式系统的那些事儿(三) - 系统与系统之间的调用
系统与系统之间的调用通俗来讲,分为本地同一台服务器上的服务相互调用与远程服务调用,这个都可以称之为RPC通信。浅白点讲,客户访问服务器A,此时服务器要完成某个动作必须访问服务器B,服务器A与B互相通信,相互调用,A访问B的时候,A挂起,等待B的响应,B响应返回相应的数据个A,A再返回给用户,这就是一个很简单的栗子。
889 0