# 分布式数据结构

# 1.原子化类型

Ignite支持分布式atomic longatomic referenceatomic sequence,并提供了类似于System.Threading.InterlockedAPI的类。

Ignite的原子类型是在整个集群中分布的,即可在全局范围内执行原子操作(例如IncrementCompareExchange)。例如,可以在一个节点上更新一个原子长整形值,然后从另一个节点进行读取。

功能特性:

  • 获取当前值;
  • 以原子方式修改当前值;
  • 以原子方式增加或减少当前值;
  • 以原子方式将当前值替换为新值;

可以通过IAtomicLong接口获得分布式原子化长整形,如下所示:

IIgnite ignite = Ignition.Start();

IAtomicLong atomicLong = ignite.GetAtomicLong(
    "atomicName", // Atomic long name.
    0,        		// Initial value.
    false     		// Create if it does not exist.
)

IAtomicLong的用法如下:

IIgnite ignite = Ignition.Start();

// Initialize atomic long.
IAtomicLong atomicLong = ignite.GetAtomicLong("atomicName", 0, true);

// Increment atomic long on local node.
Console.WriteLine("Incremented value: " + atomicLong.Increment());

IAtomicLong提供的所有原子化操作都是同步化的,花费的时间取决于使用相同原子长整形实例执行并发操作的节点数、这些操作的强度以及网络延迟。

提示

ICache接口有PutIfAbsent()Replace()方法,它们提供与原子类型相同的CompareExchange功能。

# 1.1.原子类型配置

Ignite中的原子化类型可以通过IgniteConfigurationAtomicConfiguration属性进行配置,可用的参数如下:

属性 描述 默认值
Backups 配置备份数 0
CacheMode 配置原子类型的缓存模式 Partitioned
AtomicSequenceReserveSize 配置IgniteAtomicSequence实例预留的序列值数量 1000

示例

    18624049226

    最后更新时间:: 10/21/2020, 4:44:25 PM