Top Banner
www.hazelcast.com /** * In-Memory Computing * Distributed Systems */
47
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

/** * In-Memory Computing * Distributed Systems */

Page 2: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

My Current View

Page 3: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

DisclaimerThis presentation may include certain forward-looking statements and projections provided by the Company. Any such statements and projections reflect various

estimates and assumptions by the Company concerning anticipated results. These statements involve risks, uncertainties and assumptions and are based on the

current estimates and assumptions of the management of the Company as of the date of this presentation and are subject to uncertainty and changes. No

representations or warranties are made by the Company as to the accuracy of any such statements or projections. Whether or not any such forward-looking statements or projections are in fact achieved will depend upon future events some of which are not within the control of the Company. Accordingly, actual results may vary from the projected results and such variations may be material. Statements contained herein describing documents and agreements are summaries only and such summaries

are qualified in their entirety by reference to such documents and agreements.

Page 4: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

Who’s that dude?

• Chris(toph) Engelbert • Twitter fanatic: @noctarius2k • Weird 9+ Java-Years • Performance, GC, Fairytales • Apache Committer • Gaming, Travel Management, …

Page 5: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

Who’s that dude?

• Chris(toph) Engelbert • Twitter fanatic: @noctarius2k • Weird 9+ Java-Years • Performance, GC, Fairytales • Apache Committer • Gaming, Travel Management, …

The www.hazelcast.ninja

Page 6: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

DistributedComputing…

Page 7: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

ToasterServer 1

TV-Server 1Power

CoffeeMakerServer 1

Kettle Server 1

StoveServer 1

Power GridServer 1, 2

DistributedComputing…

Page 8: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

… but what meansDistributed Computing?OOO

( )

Page 9: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

Page 10: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

‘In-Memory’ -Don’t you mean ‘Wasting Memory’?

L1 Cache Reference L2 Cache Reference Main Memory Reference 1K send over 1 Gbps Network 4K read from SSD Seek on Spinning Disk Send Packet CA->AMS->CA

0.5 ns 7 ns

100 ns 10,000 ns

150,000 ns 10,000,000 ns

150,000,000 ns

0.01 ms 0.15 ms

10 ms 150 ms

Page 11: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Evolution of:- Memory-Price- Memory-Size

Page 12: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

Data Distribution(Partitioning / Sharding)

Page 13: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Data Distribution

String code = “devoxx.co.uk”

Map<String, TShirtDelivery> shirts = Maps.create()

shirts.put(code, new TShirtDelivery(“Your Address”))

Page 14: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Data Distribution

String code = “devoxx.co.uk”

int hashcode = hash(code)

partitionId = hashcode % partitionCount

cluster.send(partitionId, code, delivery)

Page 15: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Data Distribution

int hashcode = hash(code)

partitionId = hashcode % partitionCount

cluster.send(partitionId, code, delivery)

Must be a consistent hash function

Partition count must be constant

Can be calculated, smart routing possible

Page 16: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Demo Time

Page 17: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

That was easy!But don’t tell anyone!

Page 18: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

Parallelize Processing

Page 19: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Parallelize Processing

int[] values = [0..100000].map(randomInt())

int[][] blocks = split(values, 10000)

int[] subresult = blocks.foreach(_.sum())

int result = subresult.sum()

Page 20: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Parallelize Processing

int[][] blocks = split(values, 10000)

int[] subresult = blocks.foreach(_.sum())

int result = subresult.sum()

No mutation, only new values

Independently computable

Might split further down (fork-join, work-stealing)

Page 21: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Demo Time2

Page 22: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

I told you:Easy Peasy!

Page 23: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Caching!

Page 24: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Collect, store …

Page 25: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

…access fast when necessary!…access fast when necessary!

Page 26: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

http://gadizmo.com/roll-your-own-with-the-ham-dogger.php

Roll Your Own!Evolution Of Caching

Page 27: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Caches Are Simple!

public class Cache<K, V> { private final Map<K, V> cache = new CHM<>();

public void put(K key, V value) { cache.put(key, value); }

public V get(K key) { return cache.get(key); }

}

Page 28: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Even With TTL!

Page 29: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

And Auto-Cleanup

Page 30: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

What Is Wrong?

Page 31: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

What Is Wrong?

O(n)5 mio

Entries

Page 32: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Page 33: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Evolution Of Caching

Page 34: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Proprietary Cache!

Evolution Of Caching

Page 35: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Proprietary Cache!

Evolution Of Caching

Open Source

Page 36: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Proprietary Cache!

Evolution Of Caching

Open Source

Commercial

Page 37: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Proprietary Cache!

Evolution Of Caching

Open Source

Commercial

Stupidly Expensive

Page 38: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

http://technoodling.net/mili-power-crystal-battery-pack-review/

Terracotta /EHcache

OracleCoherence

Infinispan

JavaCollections

API

Hazelcast

JCache

Page 39: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Success!Feels like

Page 40: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Want to know moreabout #JCache?

Gimme CachingThe Distributed JCache (JSR107) Way

17:00 - 17:50 - Room Exec Centre

David Brimley

Page 41: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Quick Shameless Plug :)Hazelcast!

Page 42: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Hazelcast in 5 Facts• Java Collections API• Java Concurrency API

• Transparent Data Distribution• Drop-In Replacement

• Disruptively Simple(c) Rod Johnson (@springrod)

Page 43: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Time to be Happy!

Page 44: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Time to be Happy!

Apache License 2

Page 45: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

Time to be Happy!

www.hazelcast.org

Page 46: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com@noctarius2k

You can do it!

Page 47: In-Memory Computing - Distributed Systems - Devoxx UK 2015

www.hazelcast.com

Thank You!Any Questions?

@noctarius2k http://www.sourceprojects.org

http://github.com/noctarius

@hazelcast http://www.hazelcast.com http://www.hazelcast.org

http://github.com/hazelcast