transactions - 何时使用 Ignite.Net 事务?

标签 transactions ignite atomic

我正在从事 Dot Net 项目并尝试实现 Ignite.Net。 作为 ignite 世界的新手,在阅读了上面的交易后 ( https://apacheignite-net.readme.io/docs/transactions#atomicity-mode ) 我对点燃事务原子性模式有点困惑。

为了给您提供一些背景知识,我正在开发一个基于微服务设计/架构的项目,并计划使用 Docker 容器进行托管。总而言之,我期望有一个多进程/多线程环境,其中可以有多个微服务实例,并且每个微服务实例将继续创建一个 Ignite 节点(客户端模式)并连接到服务器集群节点。

我正在处理简单的凝乳操作。每个用户操作一次仅产生一个凝乳操作(获取/放置/删除/替换)。

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

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

最佳答案

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

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

关于transactions - 何时使用 Ignite.Net 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51240681/

相关文章:

java - EJB3.1 - 同一 JVM 中多个应用程序的事务

mysql - 当隔离级别为 READ_UNCOMMITTED 时,看不到正在运行的事务插入的行

java - 使用ignite集群时如何处理严重故障?

java - 嵌入式模式下的 Apache Ignite 与堆外存储如何工作?

c++ - Visual C++ 2010 原子类型支持?

ruby-on-rails - 使用 Rails 和 Postgres 获取原子计数器(增量)的值

java - 使用 DBLINK 时在 Oracle 上出错

database - 如何将两个交易绑定(bind)在一起?

java - 如何知道Ignite非堆内存使用情况?

c++ - 通过 shared_ptr 返回的 Singleton 对象是线程安全的吗?