美文网首页
[Hazelcast系列 七] 分布式Set

[Hazelcast系列 七] 分布式Set

作者: 大哥你先走 | 来源:发表于2020-01-17 22:03 被阅读0次
    hazelcast IMDG

    Hazelcast中的ISetjava.util.Set 的分布式和并发实现。ISet 拥有以下特性:

    • 不允许重复元素。
    • 不保证元素顺序。
    • 不是分区数据结构。
    • 扩容不能超过单节点容量限制。
    • 备份数据存储在另外节点的一个分区中。
    • 所有数据被拷贝到本地,本地数据遍历。
    • 使用对象序列化的字节版本实现相等比较。

    1. 基本操作

    获取ISet 并存储数据:

    HazelcastInstance instance = Hazelcast.newHazelcastInstance();
    ISet<Integer> set = instance.getSet("data");
    set.add(1);
    set.add(2);
    set.add(3);
    set.add(1);
    System.out.println("set size is " + set.size());
    

    上述代码的输出为:

    set size is 3
    

    ISet 可以通过ItemListener 来监听元素的添加的和移除。

    2. 配置Set

    下面是ISet 的一个简单配置。

    声明式配置:

    <hazelcast>
        ...
        <set name="default">
            <backup-count>1</backup-count>
            <async-backup-count>0</async-backup-count>
            <max-size>10</max-size>
            <item-listeners>
                <item-listener>com.hazelcast.examples.ItemListener</item-listener>
            </item-listeners>
            <split-brain-protection-ref>splitbrainprotection-name</split-brain-protection-ref>
        </set>
        ...
    </hazelcast>
    

    代码配置:

    Config config = new Config();
    CollectionConfig collectionSet = config.getSetConfig("MySet");
    collectionSet.setBackupCount(1)
            .setMaxSize(10)
            .setSplitBrainProtectionName("splitbrainprotectionname");
    

    ISet 支持的配置参数及意义如下:

    • statistics-enabled: 是否开启Set统计信息,默认true。
    • backup-count: 同步备份数。
    • async-backup-count: 异步备份数。
    • max-size: Set存储的最大数据量。
    • item-listeners: 监听元素添加和移除的监听器。
    • split-brain-protection-ref: 脑裂保护配置。

    3. 脑裂保护

    ISet &TransactionalSet支持配置在应用操作前检查集群节点最小值,以包装在网络分区发生时,操作不会在所有集群都操作成功。

    下面是支持脑裂保护配置的方法:

    ISet:

    • WRITE, READ_WRITE:
      • add
      • addAll
      • clear
      • remove
      • removeAll
    • READ, READ_WRITE:
      • contains
      • containsAll
      • isEmpty
      • iterator
      • size
      • toArray

    TransactionalSet:

    • WRITE, READ_WRITE:
      • add
      • remove
    • READ, READ_WRITE:
      • size

    脑裂保护配置

    下面是一个简单的配置:

    <hazelcast>
        ...
        <set name="default">
            <split-brain-protection-ref>splitbrainprotection-name</split-brain-protection-ref>
        </set>
        ...
    </hazelcast>
    

    相关文章

      网友评论

          本文标题:[Hazelcast系列 七] 分布式Set

          本文链接:https://www.haomeiwen.com/subject/jnuhzctx.html