instroduce hazelcast

35
Hazelcast [ˈheizəlkɑ:st] [email protected]

Upload: lunfu-zhong

Post on 11-May-2015

4.282 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Instroduce Hazelcast

Hazelcast[ˈheizəlkɑ:st]

[email protected]

Page 2: Instroduce Hazelcast

Hazelcast is an open source clustering and highly scalable data distribution platform for Java

-- www.hazelcast.com

Page 3: Instroduce Hazelcast

从代码入手Get started from code example

Page 4: Instroduce Hazelcast
Page 5: Instroduce Hazelcast

Map.put(key, value) => partitions[hash&mod(key)]

.addEntry(key, value)

Page 6: Instroduce Hazelcast

Map.put(key, value) => partitions[hash&mod(key)]

.getOwner()

.addEntry(key, value)

Page 7: Instroduce Hazelcast

0 2701 2 …

Blocks (Partitions)

Hazelcast Instance (Node)

Page 8: Instroduce Hazelcast

有了 MAP , 就有了一切Map is everything

Page 9: Instroduce Hazelcast

Set.add(value) => Map.put(value, true)

Page 10: Instroduce Hazelcast

Queue.offer(value) =>key = Master.genKeyBy(qName)index = Integer.MAX_VALUEMap.put(key, value)Master.add(key, index)

Page 11: Instroduce Hazelcast

Queue.poll() =>key = Master.takeKeyBy(qName)Map.get(key)

Page 13: Instroduce Hazelcast

逐出与存储Eviction & Persistence

Page 14: Instroduce Hazelcast

enum EvictionPolicy {LRU, LFU, NONE

}

interface MapMaxSizePolicy {boolean overCapacity()

}

Page 15: Instroduce Hazelcast

periodRun() => Records.foreach {

case isDirty(record) =>store(record)

case isEvictable(record) => evict(record)

case isPurgeable(record) =>purge(record)

}

Page 16: Instroduce Hazelcast

interface MapStore<K, V>  {...}

???

Page 17: Instroduce Hazelcast

集群Cluster

Page 18: Instroduce Hazelcast
Page 19: Instroduce Hazelcast

Member / Super ClientMap map = Hazelcast.getMap(“default”);

Java ClientMap map = HazelcastClient

.newHazelcastClient(“dev”, “pass”, ...)

.getMap(“default”);

Page 20: Instroduce Hazelcast

Super Clients are members with no storage.

Page 21: Instroduce Hazelcast

Node 1

<<Master>>

Node 2

Page 22: Instroduce Hazelcast

<<Master>> <<Master>>

Split Brain

Page 23: Instroduce Hazelcast

备份与迁移backup, migration

Page 24: Instroduce Hazelcast

Node 1

<<Master>>

Node 3

Node 2

Node 4

(key, value)(key’, value’)

Page 25: Instroduce Hazelcast

Node 1

<<Master>>

Node 2

Page 26: Instroduce Hazelcast

总结Summary

Page 27: Instroduce Hazelcast

应用模式Application

Hazelcast Client

Hazelcast Instance

Application Client

Application

Hazelcast Instance

Page 28: Instroduce Hazelcast

优点 缺点• 接口丰富• 使用简单• 监控完善

• 无存储实现• 代码复杂• 测试覆盖较低

Page 29: Instroduce Hazelcast

In-Memory Data Grid

Page 30: Instroduce Hazelcast

Q&A

Page 31: Instroduce Hazelcast

参考References

Page 33: Instroduce Hazelcast

源码导读Code review guide

Page 34: Instroduce Hazelcast

Hazelcast

Node

FactoryImpl

BaseManager

ConcurrentMapManager

BlockQueueManager

ClusterManager

ClusterService CMap

BQ

PartitionManager Joiner

Page 35: Instroduce Hazelcast

EOF