美文网首页
[Hazelcast系列 八] 分布式List

[Hazelcast系列 八] 分布式List

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

    IListISet 类似,但是IList 支持存储重复元素。

    • 除了支持存储重复元素,List还能保证元素的顺序。
    • List也是非分区数据结构。
    • List容量扩展不能超过单节点容量限制。
    • 数据被拷贝到本地,本地遍历。

    1. 基本操作

    获取一个IList并添加数据,同时使用ItemListener 监听数据的添加和移除:

    HazelcastInstance instance = Hazelcast.newHazelcastInstance();
    IList<Integer> list = instance.getList("data");
    list.addItemListener(new ItemListener<Integer>() {
        @Override
        public void itemAdded(ItemEvent<Integer> itemEvent) {
            System.out.println(itemEvent.getItem() + " added");
        }
    
        @Override
        public void itemRemoved(ItemEvent<Integer> itemEvent) {
            System.out.println("removed");
        }
    },true);
    list.add(1);
    list.add(2);
    list.add(1);
    list.remove(2);
    

    代码输出如下:

    1 added
    2 added
    1 added
    removed
    

    2. List配置

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

    声明式配置:

    <hazelcast>
        ...
        <list 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>
        </list>
        ...
    </hazelcast>
    

    代码配置:

    Config config = new Config();
    CollectionConfig collectionList = config.getListConfig("MyList");
    collectionList.setBackupCount(1)
            .setMaxSize(10)
            .setSplitBrainProtectionName("splitbrainprotectionname");
    

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

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

    3. 脑裂保护

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

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

    IList:

    • WRITE, READ_WRITE:
      • add
      • addAll
      • clear
      • remove
      • removeAll
      • set
    • READ, READ_WRITE:
      • add
      • contains
      • containsAll
      • get
      • indexOf
      • isEmpty
      • iterator
      • lastIndexOf
      • listIterator
      • size
      • subList
      • toArray

    TransactionalList:

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

    脑裂保护配置

    下面是一个简单的配置:

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

    相关文章

      网友评论

          本文标题:[Hazelcast系列 八] 分布式List

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