我正在从事Dot Net项目并尝试实现Ignite.Net。 刚接触点火世界,并在(https://developers.google.com/ar/develop/java/cloud-anchors/cloud-anchors-developer-guide-android)上阅读了上述交易之后 我对点燃交易原子性模式感到有些困惑。
为了给您提供一些背景知识,我正在一个正在微服务设计/架构上开发的项目中,计划使用Docker容器托管。因此,总而言之,我期望有一个多进程/多线程环境,其中可能有多个微服务实例,并且每个微服务实例将继续创建一个Ignite节点(客户端模式)并连接到服务器集群节点。
我正在处理简单的凝乳操作。每个用户动作一次仅导致一个凝结操作(获取/放置/删除/替换)。
即使我在每个事务中只有一个操作,我也应该继续使用事务(悲观-可重复读取),因为它锁定了各自的键并提供了顺序执行,并且在多个进程的情况下完全兼容ACID,
还是我应该继续使用原子模式,该模式提供原子性和一致性,但是对于多个进程,我不确定锁和顺序执行吗?
答案 0 :(得分:3)
如果您需要在诸如get或put之类的单数操作之间保持一致,那么使用ATOMIC或FULL_SYNC同步模式进行PRIMARY_SYNC缓存就足够了。 Ignite将保证所有操作的线性化执行。
但是,如果您需要原子执行代码块,这可能会修改高速缓存中的多个条目,或者先读取一些值,然后再将其与修改后的字段一起写回,则应使用TRANSACTIONAL原子模式。