+ All Categories
Home > Documents > Easy Distributed Systems Using Hazelcast -...

Easy Distributed Systems Using Hazelcast -...

Date post: 22-Mar-2018
Category:
Upload: dothien
View: 237 times
Download: 6 times
Share this document with a friend
75
Easy Distributed Systems Using Hazelcast Peter Veentjer
Transcript
Page 1: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Easy Distributed Systems Using Hazelcast

Peter Veentjer

Page 2: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

• Working for Hazelcast

• Team Lead Quality & Performance

• Author of ‘Mastering Hazelcast 3'

• 14 years Java experience

• Big love

• Concurrency control

• Distributed computing

Whoami

Page 3: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...
Page 4: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

What is Hazelcast?

Page 5: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

What is Hazelcast?

• Leading Open Source Java In Memory Data/Compute Grid

• Out main goal is to simplify development of:

• Scalable systems

• Highly available systems

Page 6: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Why Hazelcast?

• 3 MByte JAR

• no other dependencies!

• no need to install software!

• Its a library, not an application framework

• Apache 2 License

• Free to use

• no limitations

Page 7: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Distributed Data-structures

• IAtomicLong/Ref

• IdGenerator

• Lock/Condition

• CountDownLatch

• Semaphore

• Queue

• Map

• MultiMap

• Set

• List

• Topic

• Executor

• ReplicatedMap

• MapReduce

• TransactionalMap/Q/S…

• Write your own!

Page 8: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

So what can I do with it?

Page 9: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Scaling

Page 10: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Scale up

Page 11: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Scale Out

Page 12: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

High Availability

Page 13: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

100000

200000

300000

400000

500000

600000

700000

800000

900000

1000000

2 4 8 16 32

read write

Page 14: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Raspberry Pi Cluster

Page 15: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

When?

• Caching

• Messaging Solution

• Data Aggregation

• Clustered Scheduling

• Job Processing

• Cluster management

• HTTP session clustering

Page 16: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Which companies

• E-Commerce • Apple, eBay

• Financials

• JP Morgan, Morgan Stanley, HSBC, Deutsche Bank

• Telco’s

• AT&T, Ericsson

• Gaming

• Ubisoft/Blue Byte

Page 17: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Which Open Source Projects

• WSO2 Carbon

• Mule ESB

• Vert.x

• Apache Camel

• Apache Shiro

• OrientDB

• Alfresco

• Karaf

Page 18: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

How Often

• In April 2014

• 3M startups

• 48K unique

Page 19: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Where is the code!

Page 20: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

HazelcastInstance hz = Hazelcast.newHazelcastInstance();

Creating Hazelcast Cluster

Page 21: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

<hazelcast> <network>…</network> <map name=“m”>…</map> <queue name=“q”>…</queue> <… </hazelcast>

XML Configuration

Page 22: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Config config = new Config(); … make config modifications HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);

Programmatic Configuration

Page 23: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 24: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map<String,String> products = new HashMap(); map.put("1","IPhone");

Map

Page 25: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map<String,String> products = new ConcurrentHashMap(); map.put("1","IPhone");

Map

Page 26: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

HazelcastInstance hz = Hazelcast.newHazelcastInstance(); Map<String,String> products = hz.getMap("products"); cities.put("1","IPhone");

Map

Page 27: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 28: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

!<map name="products"> <time-to-live-seconds>4</time-to-live-seconds> <indexes> <index>name</index> </indexes> <..> </map>

Map Configuration

Page 29: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

271 Partitions

partitionid = hash(key) % partitioncount

Page 30: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

Member 1

Page 31: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

Member 1

Member 2

Page 32: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

Member 1

Member 2

Member 3

Page 33: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

Member 1

Member 2

Member 3

Page 34: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

Member 1

Member 2

Member 3

Page 35: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map Scalability and High Availability

Member 1

Member 2

Page 36: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 37: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Multimap

• Collection as value • Serialization Overhead

• Lost update

Page 38: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 39: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

BlockingQueue queue = new LinkedBlockingQueue(); queue.offer("1"); Object item = queue.take();

Queue

Page 40: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

!HazelcastInstance hz = Hazelcast.newHazelcastInstance(); BlockingQueue queue = hz.getQueue("queue"); queue.offer("1"); Object item = queue.take();

Queue

Page 41: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 42: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

ITopic topic = hz.getTopic("topic"); //publishing topic.publish(msg); !//subscribing topic.addMessageListener(new TopicSubscriber()); !public class TopicSubscriber implements MessageListener<String> { public void onMessage(Message<String> m) { System.out.println(m.getMessageObject()); } }

Topic

Page 43: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Client

• Languages

• Java

• C++

• C#

• Memcached

• Smart vs Dumb

Page 44: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

HazelcastInstance client = HazelcastClient.newHazelcastClient();

Client

Page 45: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Network Communication

• Cluster Discovery

• Multicast

• TCP/IP Cluster

• AWS Cluster

• Normal Network Communication

• TCP/IP

Page 46: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Advanced Hazelcast

Page 47: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

!ILock lock = hz.getLock(“someLock”); !IAtomicLong counter =hz.getAtomicLong(“someCounter”); !IMap map = hz.getMap(“someMap”); map.put(“somePerson”,new Person()); map.get(“somePerson”);

Data Locality: Problem

Page 48: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Member 1

Member 2

Member 3

SomeLock

SomeCounter

SomePerson

Page 49: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

name@partitionkey

name

Page 50: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

ILock lock = hz.getLock(“someLock@foo”); IAtomicLong counter = hz.getAtomicLong(“someCounter@foo”); !IMap map = hz.getMap(“someMap”); map.put(“somePerson@foo”, new Person()); Person p = map.get(“somePerson@foo”);

Data Locality: Fixed

Page 51: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Member 1

Member 2

Member 3

SomeLock

SomeCounter

SomePerson

Foo Partition

Page 52: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

IAtomicLong c1 = … IAtomicLong c2 = hz.getAtomicLong(“c2@“+c1.getPartitionKey());

Adding object in same partition

Page 53: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Executor

• Execute task anywhere

• Execute task on key owner

• Execute task

• one/all/subset members

• Synchronisation

• Future

• ExecutionCallback

• CompletableFuture Hazelcast 3.3

Page 54: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 55: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Locking

• Locks

• TransactionalMap.getForUpdate

• Map.Lock

Page 56: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Demo

Page 57: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int accountId,int amount){ Account account = accounts.get(accountId); account.balance+=amount; accounts.put(accountId, account); }

Race problem

Page 58: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int accountId,int amount){ accounts.lock(accountId); try{ Account account = accounts.get(accountId); account.balance+=amount; accounts.put(accountId, account); }finally{ accounts.unlock(accountId); } }

Pessimistic Increment

Page 59: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int accountId,int amount){ accounts.lock(accountId); try{ Account account = accounts.get(accountId); account.balance+=amount; accounts.put(accountId, account); }finally{ accounts.unlock(accountId); } }

Pessimistic Increment

Page 60: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int accountId,int amount){ for(;;){ Account old = accounts.get(accountId); Account update = new Account(old); update.balance+=amount; if(accounts.replace(accountId, old,update)){ return; } } }

Optimistic Increment

Page 61: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int accountId,int amount){ for(;;){ Account old = accounts.get(accountId); Account update = new Account(old); update.balance+=amount; if(accounts.replace(accountId, old,update)){ return; } } }

Optimistic Increment

Page 62: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

DATA

Bad: Send Data to Function

DATA

Good: Send Function to Data

Read Data

Write Data

Write Function

Page 63: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

class BalanceTask implements Runnable,Serializable{ private int accountId, amount; public void run() { for(;;){ Account old = accounts.get(accountId); Account update = new Account(old); update.balance+=amount; if(accounts.replace(accountId, old,update)){ return; } } } }

Page 64: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int id, int amount){ BalanceTask task = new BalanceTask(id,amount); executorService.executeOnKeyOwner(task,id); }

Increment with runnable

Page 65: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

class BalanceProcessor extends AbstractEntryProcessor{ int amount; BalanceProcessor(int amount) { this.amount = amount; } ! @Override Object process(Map.Entry<Integer, Account> e) { e.getValue().balance+=amount; return null; } }

Increment with EntryProcessor

Page 66: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

public void increment(int accountId, int amount){ BalanceProcessor p = new BalanceProcessor(amount); accounts.executeOnKey(accountId, p); }

Using entry processor

Page 67: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Map: In Memory Format

• 2 Options

• BINARY

• OBJECT

• Predicates

• EntryProcessor

Page 68: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

SPI

• You can write your own distributed data-structures

• Example

• Distributed Actors implementation

Page 69: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Serialization API

• Serializable/Externalizable

• Portable

• ByteArraySerializable

• StreamSerializer

• Kryo

• Jackson Smile

• Protobuf

Page 70: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Kryo SerializationSi

ze in

Byt

es

0

5,000

10,000

15,000

20,000

Serialization Kryo Kryp + Compr

Page 71: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

!SerializerConfig ps = new SerializerConfig() .setTypeClass(Product.class) .setImplementation(new ProductSerializer()); !Config config = new Config(); config.getSerializationConfig() .addSerializerConfig(ps); !HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);

Pluggable Serialization

Page 72: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

IMap<Integer,Account> accounts = hz.getMap(“accounts”); !Map<Integer,Integer> result = accounts .map(new AccountSumMapper()) .reduce(new AccountSumReducer()) .submit()

Hazelcast 3.2 Map Reduce

Page 73: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Enterprise vs Community edition

• Support contracts

• Elastic Memory

• Security

• Management Center

Page 74: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

The Future

• Stabilizer

• Topologies

• Dynamic Creation

• Map of Maps

• Tiered storage

Page 75: Easy Distributed Systems Using Hazelcast - JEEConfjeeconf.com/wp-content/uploads/slides/hazelcast-2014.pdf · • Working for Hazelcast! ... • Vert.x! • Apache Camel! • ...

Questions?


Recommended