WriteSynchronizationMode对ApacheIgnite中事务内部写入操作的影响

WriteSynchronizationMode对ApacheIgnite中事务内部写入操作的影响,synchronization,ignite,consistency,Synchronization,Ignite,Consistency,WriteSynchronizationMode允许用户在分布式设置上执行写入时从3种不同的同步模式(完全同步、完全异步、主同步)中进行选择 根据我的理解,如果WriteSynchronizationMode设置为PRIMARY_SYNC,则在以下两种情况下写入缓存(无论是在事务内部还是外部)时,用户感知的延迟必须相同: 一个节点群集,其中远程服务器中仅存在一个数据主副本 两节点群集,其中一个数据主副本位于远程服务器上,另一个备份副本位于相邻服务器上 换句话说,写入延迟不应受到主同步中备份副本数

WriteSynchronizationMode允许用户在分布式设置上执行写入时从3种不同的同步模式(完全同步、完全异步、主同步)中进行选择

根据我的理解,如果WriteSynchronizationMode设置为PRIMARY_SYNC,则在以下两种情况下写入缓存(无论是在事务内部还是外部)时,用户感知的延迟必须相同

  • 一个节点群集,其中远程服务器中仅存在一个数据主副本
  • 两节点群集,其中一个数据主副本位于远程服务器上,另一个备份副本位于相邻服务器上 换句话说,写入延迟不应受到主同步中备份副本数量的影响


    然而,在我目前的实验中,我面临上述设置的不同延迟(场景1的3RTT和场景2的4RTT)。有人能解释一下原因吗?

    当您使用事务性缓存时,每个写操作都需要获取锁。它还涉及到与备份节点的通信。因此,备份越多,执行事务所需的时间就越长。即使不运行显式事务,每个写操作都会通过这个过程

    因此,对于事务性缓存,我预计随着备份数量的增加,写操作的性能会显著降低。您可以在此处找到有关事务性缓存工作的更多信息:


    尝试基准测试原子缓存。您仍然可以看到性能下降,因为同步需要资源。但不会那么大。

    谢谢你,丹尼斯,给了我及时的答复。我想添加备份的主要原因是允许非常快的读取(假设允许备份读取)。此外,我无法摆脱事务,您知道另一种在本地(客户端旁边)保存过时值以节省网络延迟的方法吗?您可以使用。它将存储在读取节点上,并在读取时延迟填充。