Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
-
Upload
jaxlondon2014 -
Category
Presentations & Public Speaking
-
view
137 -
download
0
Transcript of Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
![Page 1: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/1.jpg)
© 2014 Hazelcast Inc.
Squeezing Performance !out of In-Memory Data Grids
FUAD MALIKOVHAZELCAST CO-FOUNDER
![Page 2: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/2.jpg)
© 2014 Hazelcast Inc.
About me
2
Follow me @fuadm
Hazelcast co-founder!
Java Developer since 2005!
Worked at Financials and Telco’s. !
Leading Hazelcast Technical Operations.
![Page 3: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/3.jpg)
© 2014 Hazelcast Inc.
Agenda - 50 Minutes + Q&A
3
Overview to IMDG’s!Hazelcast Partitioning Basics!A Shopping Cart Use – Case!8 possible solutions!Q&A
![Page 4: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/4.jpg)
© 2014 Hazelcast Inc.
What is an IMDG?
4
Data Structures(s) in memory!Distributed across servers !Highly Available and Resilient!Horizontal Scalability!Object based Data Model
![Page 5: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/5.jpg)
© 2014 Hazelcast Inc.
Why an IMDG?
Performance - RAM is faster than Disk!
Data Structure - linked data model and application code !
Scalability - add servers to scale out RAM and CPU!
Resiliency - seamless recovery from node failures!
API - native, flexible and rich functionality
5
![Page 6: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/6.jpg)
© 2014 Hazelcast Inc.
Popular In-Memory Data Grids
Oracle Coherence !Gigaspaces!Gemfire!IBM ExtremeScale!
Infinispan!GridGain!Hazelcast!Terracotta*
6
![Page 7: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/7.jpg)
© 2014 Hazelcast Inc.
Hazelcast
7
![Page 8: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/8.jpg)
© 2014 Hazelcast Inc.
Data Distribution
8
![Page 9: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/9.jpg)
© 2014 Hazelcast Inc.
Partitioning (1 node)
9
P_1
P_2
P_271
PARTITION_COUNT = 271 partition_id = hash(serialize(key))%PARTITION_COUNT
![Page 10: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/10.jpg)
© 2014 Hazelcast Inc.
Partitioning (2 nodes)
10
P_1
P_2
P_135
P_136
P_137
P_271
P_136
P_137
P_271
P_1
P_2
P_135
![Page 11: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/11.jpg)
© 2014 Hazelcast Inc.
Partitioning (4 nodes)
11
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
![Page 12: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/12.jpg)
© 2014 Hazelcast Inc.
Example
12
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
map.put(“LHR”, “London Heathrow Airport”)?
![Page 13: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/13.jpg)
© 2014 Hazelcast Inc.
Hashing
13
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
P_200Hash(“LHR”)-‐ >
map.put(“LHR”, “London Heathrow Airport”)?
![Page 14: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/14.jpg)
© 2014 Hazelcast Inc.
Hashing
14
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
1
map.put(“LHR”, “London Heathrow Airport”)?
![Page 15: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/15.jpg)
© 2014 Hazelcast Inc.
Hashing
15
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
2
1
map.put(“LHR”, “London Heathrow Airport”)?
![Page 16: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/16.jpg)
© 2014 Hazelcast Inc.
Hashing
16
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
2
13
map.put(“LHR”, “London Heathrow Airport”)?
![Page 17: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/17.jpg)
© 2014 Hazelcast Inc.
Hashing
17
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
2
4
13
map.put(“LHR”, “London Heathrow Airport”)?
![Page 18: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/18.jpg)
© 2014 Hazelcast Inc.
Hashing
18
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
map.get(“LHR”)?
![Page 19: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/19.jpg)
© 2014 Hazelcast Inc.
Hashing
19
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
map.get(“LHR”)?
1
![Page 20: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/20.jpg)
© 2014 Hazelcast Inc.
Hashing
20
P_1
P_2
P_67
P_68
P_69
P_136
P_68
P_137
P_271
P_1
P_138
P_205
P_137
P_138
P_204
P_205
P_206
P_271
P_2
P_69
P_206
P_67
P_136
P_204
map.get(“LHR”)?
12
![Page 21: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/21.jpg)
© 2014 Hazelcast Inc.
Use - Case
21
![Page 22: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/22.jpg)
© 2014 Hazelcast Inc.
Shopping card example
22
![Page 23: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/23.jpg)
© 2014 Hazelcast Inc.
Shopping Cart Item
23
![Page 24: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/24.jpg)
© 2014 Hazelcast Inc.
Shopping Cart
24
![Page 25: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/25.jpg)
© 2014 Hazelcast Inc.
Simulation
25
![Page 26: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/26.jpg)
© 2014 Hazelcast Inc.
Simulation
26
#[Mean = 2402.112, StdDeviation = 4519.652] #[Max = 148504.576, Total count = 56690] Operations Per Second= 5738
![Page 27: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/27.jpg)
© 2014 Hazelcast Inc.
Simulation
27
#[Mean = 2402.112, StdDeviation = 4519.652] #[Max = 148504.576, Total count = 56690] Operations Per Second= 5738
What is wrong here?
![Page 28: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/28.jpg)
© 2014 Hazelcast Inc.
Lock
28
![Page 29: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/29.jpg)
© 2014 Hazelcast Inc.
Lock
29
#[Mean = 3700.329, StdDeviation = 2750.031] #[Max = 56918.016, Total count = 27045] Operations Per Second= 2704
![Page 30: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/30.jpg)
© 2014 Hazelcast Inc.
Lock
30
#[Mean = 3700.329, StdDeviation = 2750.031] #[Max = 56918.016, Total count = 27045] Operations Per Second= 2704
Can we improve this a little bit?
![Page 31: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/31.jpg)
© 2014 Hazelcast Inc.
XA Transaction
31
![Page 32: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/32.jpg)
© 2014 Hazelcast Inc.
XA Transaction
32
#[Mean = 4077.075, StdDeviation = 2119.846] #[Max = 43155.456, Total count = 24561] Operations Per Second= 2456
![Page 33: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/33.jpg)
© 2014 Hazelcast Inc.
XA Transaction
33
#[Mean = 4077.075, StdDeviation = 2119.846] #[Max = 43155.456, Total count = 24561] Operations Per Second= 2456
Didn’t improve that much. Why?
![Page 34: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/34.jpg)
© 2014 Hazelcast Inc.
Local Transaction
34
![Page 35: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/35.jpg)
© 2014 Hazelcast Inc.
Local Transaction
35
#[Mean = 2654.831, StdDeviation = 5011.547] #[Max = 133955.584, Total count = 56761] Operations Per Second= 5726
![Page 36: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/36.jpg)
© 2014 Hazelcast Inc.
Local Transaction
36
#[Mean = 2654.831, StdDeviation = 5011.547] #[Max = 133955.584, Total count = 56761] Operations Per Second= 5726
Can we do it without a Transaction?
![Page 37: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/37.jpg)
© 2014 Hazelcast Inc.
Compare and swap instead of locking
37
![Page 38: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/38.jpg)
© 2014 Hazelcast Inc.
Compare and swap instead of locking
38
#[Mean = 2540.975, StdDeviation = 5113.372] #[Max = 133365.760, Total count = 60087] Operations Per Second= 6082
![Page 39: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/39.jpg)
© 2014 Hazelcast Inc.
Compare and swap instead of locking
39
#[Mean = 2540.975, StdDeviation = 5113.372] #[Max = 133365.760, Total count = 60087] Operations Per Second= 6082
What other options do we have?
![Page 40: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/40.jpg)
© 2014 Hazelcast Inc.40
![Page 41: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/41.jpg)
© 2014 Hazelcast Inc.
Move operation to data
41
![Page 42: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/42.jpg)
© 2014 Hazelcast Inc.
Move operation to data
42
![Page 43: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/43.jpg)
© 2014 Hazelcast Inc.
Move operation to data
43
#[Mean = 5725.046, StdDeviation = 197009.148] #[Max = 13639876.608, Total count = 37219] Operations Per Second= 3721
![Page 44: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/44.jpg)
© 2014 Hazelcast Inc.
Move operation to data
44
#[Mean = 5725.046, StdDeviation = 197009.148] #[Max = 13639876.608, Total count = 37219] Operations Per Second= 3721
Can we move it any closer?
![Page 45: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/45.jpg)
© 2014 Hazelcast Inc.
Entry Processor
45
![Page 46: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/46.jpg)
© 2014 Hazelcast Inc.
Entry Processor
46
#[Mean = 1876.355, StdDeviation = 1751.857] #[Max = 36306.944, Total count = 69648] Operations Per Second= 7018
![Page 47: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/47.jpg)
© 2014 Hazelcast Inc.
Entry Processor Object format
47
#[Mean = 1199.272, StdDeviation = 1023.777] #[Max = 34013.184, Total count = 83520] Operations Per Second= 8352
![Page 48: Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov](https://reader034.fdocuments.us/reader034/viewer/2022051516/55a2d7851a28aba27d8b456c/html5/thumbnails/48.jpg)
© 2014 Hazelcast Inc.
Questions?
48
HUGL meets tonight!!https://github.com/fuadm/webinar-TDHW !Twitter: @fuadm!https://groups.google.com/forum/#!forum/hazelcast!http://hazelcast.com/company/careers/!http://hazelcast.org/learn/