美文网首页
[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