
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.1.3 有状态函数的并发一致性模型
并发一致性是分布式系统中的重要问题,本节将通过两个示例来说明有状态函数的并发一致性模型。
3.1.3.1 并发访问不同状态实例
针对不同状态实例的并发访问不会产生调用死锁,例如,在以下示例中,用户并发访问两个不同状态实例,该并发过程相互间不会产生干扰,client函数调用执行完毕后,状态id1的值加1,状态id2的值加2。

3.1.3.2 相同状态实例递归调用
共享状态可以将相同状态实例的递归调用细分为两种情况:在正确的时机使用get操作和在不正确的时机使用get操作。
1. 在正确的时机使用get操作
在正确的时机使用get操作的示例如下:在这种场景下,日志打印的操作应该在addone函数之前执行,华为元戎的并发一致性模型会确保这种执行顺序。

2. 在不正确的时机使用get操作
在不正确的时机使用get操作的示例如下:在触发函数之后使用get操作获取YRFuture的情况,可能会使日志打印的操作在addone之后执行。华为元戎的并发一致性模型可以保证和在正确的时机使用get操作的结果一致,但在原则上推荐开发者使用在正确的时机使用get操作的写法。
