我正在从事 Dot Net 项目并尝试实现 Ignite.Net。 作为 ignite 世界的新手,在阅读了上面的交易后 ( https://apacheignite-net.readme.io/docs/transactions#atomicity-mode ) 我对点燃事务原子性模式有点困惑。
为了给您提供一些背景知识,我正在开发一个基于微服务设计/架构的项目,并计划使用 Docker 容器进行托管。总而言之,我期望有一个多进程/多线程环境,其中可以有多个微服务实例,并且每个微服务实例将继续创建一个 Ignite 节点(客户端模式)并连接到服务器集群节点。
我正在处理简单的凝乳操作。每个用户操作一次仅产生一个凝乳操作(获取/放置/删除/替换)。
因此,即使我在每个事务中都有单个操作,我是否应该继续使用事务(悲观 - 可重复读取),因为它会锁定相应的键并提供顺序执行,并且在多个进程的情况下完全符合 ACID 规范,
或者我应该继续使用原子模式,它提供原子性和一致性,但我不确定多进程情况下的锁和顺序执行?
最佳答案
如果您需要像 get 或 put 这样的单一操作之间的一致性,那么 ATOMIC缓存 FULL_SYNC或PRIMARY_SYNC同步模式就足够了。 Ignite 将保证所有操作的线性化执行。
但是,如果您需要原子执行代码块,这可能会修改缓存中的多个条目,或者首先读取一些值,然后使用修改后的字段将其写回,然后 TRANSACTIONAL应使用原子性模式。
关于transactions - 何时使用 Ignite.Net 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51240681/