Transactions 何时使用Ignite.Net事务?

Transactions 何时使用Ignite.Net事务?,transactions,ignite,atomicity,Transactions,Ignite,Atomicity,我正在从事.Net项目,并试图实现Ignite.Net。 刚接触ignite,并且在()上阅读了以上交易之后 我对ignite事务原子性模式有点困惑 为了给你们一点背景知识,我正在从事一个关于微服务设计/体系结构的项目,计划使用docker容器进行托管。总之,我希望有一个多进程/多线程环境,其中可以有多个微服务实例,每个微服务实例将创建一个Ignite节点(客户端模式),并连接到服务器节点集群 我在处理简单的凝乳手术。每个用户操作一次只导致一个curd操作(Get/Put/Remove/Repl

我正在从事.Net项目,并试图实现Ignite.Net。 刚接触ignite,并且在()上阅读了以上交易之后 我对ignite事务原子性模式有点困惑

为了给你们一点背景知识,我正在从事一个关于微服务设计/体系结构的项目,计划使用docker容器进行托管。总之,我希望有一个多进程/多线程环境,其中可以有多个微服务实例,每个微服务实例将创建一个Ignite节点(客户端模式),并连接到服务器节点集群

我在处理简单的凝乳手术。每个用户操作一次只导致一个curd操作(Get/Put/Remove/Replace)

因此,我是否应该继续使用事务(悲观-可重复读取),即使在每个事务中只有一个操作,因为它锁定各自的密钥并提供顺序执行,并且在多个进程的情况下完全符合ACID


或者我应该继续使用原子模式,它提供原子性和一致性,但我不确定在多个进程的情况下是否有锁和顺序执行?

如果您需要get或put等单一操作之间的一致性,那么使用或同步模式的缓存就足够了。Ignite将保证所有操作的线性化执行


但是,如果您需要代码块的原子执行,这可能会修改缓存中的多个条目,或者首先读取一些值,然后使用修改过的字段将其写回,那么应该使用原子性模式

嗨,丹尼斯,谢谢你的回复!在我的例子中,我有一个类,其中有3个函数用于put replace和remove,每个函数只有一个操作(simple PutAsync()、ReplaceAync()、RemoveAsync()),但我关心的是多进程环境(扩展同一微服务的多个实例)原子模式会在竞争条件下防止脏读吗?如果你在原子模式下得到一些值,这意味着它是在某个点插入的。因此,从这个意义上讲,您可以避免脏读。