[Hazelcast系列 三]分布式数据结构简介

2022-04-18 00:00:00 分布式 对象 分区 实例 数据结构

Hazelcast提供了很多通用数据结构的分布式实现。针对每一种不同的客户端语言,Hazelcast都尽量模拟该语言原生接口,对于Java客户端,Hazelcast提供的IMapjava.util.Map 有近似的语义。为了更加直观的描述,针对Hazelcast中的数据结构,我们将提供Java中等效或类似接口。 所有这些结构都可以在Java,.NET,C ++,Node.js,Python,Go和Scala客户端中使用。

  • 标准集合

    • Map: java.util.Map 的分布式实现。
    • Queue: java.util.concurrent.BlockingQueue 的分布式实现。
    • Ringbuffer:Java中没有对应的数据结构,Ringbuffer通常用于可靠的事件系统。
    • Set: java.util.Set 的分布式并发实现。
    • List: java.util.List 的分布式并发实现,支持存储重复元素,这是和Set的区别。
    • Multimap: com.google.common.collect.Multimap 的分布式实现,支持存储重复键。
    • Replicated Map:不支持分区的Map数据结构,集群所有成员都有全量数据。
    • Cardinality Estimator :实现了lajolet’s HyperLogLog 算法的数据结构。
  • 主题

    主题是用于多个订阅者的分布式消息分发机制,和kakfa、pulsar中的主题一样,同样也是pub/sub消息模型的关键。Hazelcast支持通过主题进行消息的可靠分发。

  • 并发工具

    • FencedLock:java 中 java.util.concurrent.locks.Lock的分布式实现,可以保证集群中只有一个线程可以获得锁。
    • ISemaphore:java中 java.util.concurrent.Semaphore的分布式实现。
    • IAtomicLong :java中 java.util.concurrent.atomic.AtomicLong的分布式实现。
    • IAtomicReference:Java中java.util.concurrent.atomic.AtomicReference的分布式实现。
    • FlakeIdGenerator:用于生产集群范围内的标识符。
    • ICountdownLatch: Java中 java.util.concurrent.CountDownLatch的分布式实现。
    • PN counter:一个分布式数据结构,其中每个Hazelcast实例都可以递增和递减计数器值,并将这些更新传播到所有副本。
  • Event Journal:是一种分布式数据结构,用于存储map或缓存上操作的历史记录。

1. 分布式对象简介

基于分区策略,Hazelcast有两种类型的分布式数据结构:分区数据结构和非分区数据结构,分区数据结构一个分区只保存部分数据,非分区数据结构一个分区保存全部的数据。

Hazelcast中的分区数据结构包括以下四种:

  • Map
  • MultiMap
  • Cache
  • Event Journal

以下为非分区数据结构:

  • Queue
  • Set
  • List
  • Ringbuffer
  • FencedLock
  • ISemaphore
  • IAtomicLong
  • IAtomicReference
  • FlakeldGenerator
  • ICountdownLatch
  • Cardinality Estimator
  • PN Counter

除分区和非分区数据结构以外,Hazelcast同时提供了Replicated Map(可复制集合)数据结构。

2 . 分布式对象的加载和销毁

针对大多数分布式对象,Hazelcast提供了获取实例的get 方法。一个分布式对象的加载,首先需要创建一个Hazelcast实例,然后通过Hazelcast实例调用对应的get 方法获取。下面的例子创建一个Hazelcast实例instance1 并在该实例上创建一个叫data的分布式Map

HazelcastInstance instance1 = Hazelcast.newHazelcastInstance();
IMap<String, String> data = instance1.getMap("data");

相关文章