Thinking Distributed: The Hazelcast Way RAHUL GUPTA SR SOLUTIONS ARCHITECT
About Me Senior Solutions Architect Worked with Terracotta In-memory Distributed Systems since 2009 Java Programmer since 1998 rahul@hazelcast.com Rahul Gupta follow me @wildnez
1010110010000101001 1010110010001110101001 10111001001 10101100100001111010100 Challenges of Big Data Management
Why Hazelcast? • Scale-out Computing enables cluster capacity to be increased or decreased on-demand • Resilience with automatic recovery from member failures without losing data while minimizing performance impact on running applications • Programming Model provides a way for developers to easily program a cluster application as if it is a single process • Fast Application Performance enables very large data sets to be held in main memory for real-time performance
Ecosystem Traction Dozens of Commercial and Open Source Projects Embed Hazelcast
01001 10101 01010 In Memory Data Computing In Memory Data Messaging++In Memory Data Storage In Memory Data Grid
Business Systems A B C RDBMS Mainframe MongoDB NoSQL REST Scale Hazelcast In-Memory Caching
java.util.concurrent.ConcurrentMap import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public static void main(String[] args) { ConcurrentMap<Integer, String> map = new ConcurrentHashMap<>(); map.put(1, "Paris"); map.put(2, "London"); map.put(3, "San Francisco"); String oldValue = map.remove(2); }
Distributed Map import java.util.concurrent.ConcurrentMap; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; public static void main(String[] args) { HazelcastInstance h = Hazelcast.newHazelcastInstance(); ConcurrentMap<Integer, String> map = h.getMap("myMap"); map.put(1, "Paris"); map.put(2, "London"); map.put(3, "San Francisco"); String oldValue = map.remove(2); }
DEMO
Persistence API public class MapStorage implements MapStore<String, User>, MapLoader<String, User> { // Some methods missing ... @Override public User load(String key) { return loadValueDB(key); } @Override public Set<String> loadAllKeys() { return loadKeysDB(); } @Override public void delete(String key) { deleteDB(key); } @Override public void store(String key, User value) { storeToDatabase(key, value); } } <map name="users"> <map-store enabled="true"> <class-name>com.hazelcast.example.MapStorage</class-name> <write-delay-seconds>0</write-delay-seconds> </map-store> </map>
JCache API // Retrieve the CachingProvider which is automatically baced by // the chosen Hazelcast server or client provider CachingProvider cachingProvider = Caching.getCachingProvider(); // Create a CacheManager CacheManager cacheManager = cachingProvider.getCacheManager(); // Cache<String, String> cache = cacheManager // .getCache( name, String.class, String.class ); // Create a simple but typesafe configuration for the cache CompleteConfiguration<String, String> config = new MutableConfiguration<String, String>() .setTypes( String.class, String.class );
JCache API // Create and get the cache Cache<String, String> cache = cacheManager .createCache( "example", config ); // Alternatively to request an already existing cache Cache<String, String> cache = cacheManager .getCache( name, String.class, String.class ); // Put a value into the cache cache.put( "world", "Hello World" ); // Retrieve the value again from the cache String value = cache.get( "world" ); System.out.println( value );
Eviction • Unless deleted, entries remain in the map. • Use eviction policies to prevent OOM situations. • Eviction Triggers run LFU or LRU. time-to-live max-idle-seconds max-size (PER_NODE(number of entries), PER_PARTITION(number of entries), USED_HEAP_SIZE(mb), USED_HEAP_PERCENTAGE(mb)) • Setting eviction-percentage removes that % of entries when eviction is triggered.
Features Description MultiMap Store multiple values against one Key Replicated Map Cluster wide replication, all entries on all nodes. Good for read heavy use cases Near Cache Map Entries on Client/Application local memory RingBuffer Stores data in a ring-like structure, like a circular array with given capacity More Distributed Structures
Java Collection API: Map, List, Set, Queue Jcache High Density Memory Store Hibernate 2nd Level Cache Web Session Replication: Tomcat, Jetty Predicate API: Indexes, SQL Query Persistence: Map/Queue Store & Loader. Write Behind/Through Spring Compliance Transactions: Local & XA WAN & DR Replication IM Data Store (Caching) Features
© 2015 Hazelcast, Inc.
Java: Will it make the cut? Garbage Collection limits heap usage. G1 and Balanced aim for <100ms at 10GB. Unused Memory 64GB 4GB 4s Heap Java Apps Memory Bound GC Pause Time Available Memory GC Off-Heap Storage No low-level CPU access Java is challenged as an infrastructure language despite its newly popular usage for this Heap
GC Pause 64 Gb JVM 4 Gb JVM 1 4 Gb JVM 2 4 Gb JVM 3 4 Gb JVM 4 4 Gb JVM 5 4 Gb JVM 16 GC Pause 0 GB 64 GB 64 Gb in-memory data time Standard Impediments of Caching
GC Pause 64 Gb JVM 4 Gb JVM 1 4 Gb JVM 2 4 Gb JVM 3 4 Gb JVM 4 4 Gb JVM 5 4 Gb JVM 16 GC Pause 0 Gb 64 Gb 64 Gb in-memory data time 64 Gb HD 2 Gb JVM GC Pause HD Memory Caching with HD Memory
On-Heap Memory Store (Objects Stored as Objects) High-Density Memory Store (Objects Serialized and Stored as Bytes) s.m.Unsafe s.m.Unsafe 2-4GB (Limited by Garbage Collection) 0-1TB (Limited by Machine RAM) Memory Stores •Member •Client (Near Cache) RAM in JVM Process APIs JCache (ICache) Map (IMap) HD Memory
On Heap Vs. High-Density Memory Management On Heap Memory HD Memory 0 MB HD 3.3 GB 3.9 GB Heap Storage 0.6 GB 9 (4900 ms) Major GC 0 (0 ms) 31 (4200 ms) Minor GC 356 (349 ms) Node Used Heap Total Heap Max. Heap Heap Usage Percentage Used Heap: 0.2 GB 192.168.1.10:5701 57 MB 229 MB 910 MB 6.28% Memory Utilization Home Offheap-test Node Used Heap: 3.9 GB 192.168.1.10:5701 3933 MB 4658MB 4653MB 84.45% Memory Utilization Home Used Heap Total Heap Max. Heap Heap Usage Percentage Example: On Heap Memory Example: HD Memory
Hazelcast Servers Hazelcast Server JVM [Memory] A B C Business Logic Data Data Data CE = Compute Engine Result Business / Processing Logic Result TCP / IP Client Client Distributed Computing
IM Distributed Computing Feature HD Cache Dist. Compute Dist. Message Java Concurrency API (Lock, Semaphore, AtomicLong, AtomicReference, Executor Service, Blocking Queue) Entry and Item Listeners Entry Processor Aggregators Map/Reduce Data Affinity Continues Query Map Interceptors Delta Update
Executor Service API public interface com.hazelcast.core.IExecutorService extends java.util.concurrent.ExecutorService HazelcastInstance hz = getHazelcastInstance(); //java.util.concurrent.ExecutorService implementation IExecutorService es = hz.getExecutorService("name"); es.executeOnAllMembers(buildRunnable()); es.executeOnKeyOwner(buildRunnable(), "Peter"); es.execute(buildRunnable()); Map<..> futures = es.submitToAllMembers(buildCallable()); Future<..> future = es.submitToKeyOwner(buildCallable(), "Peter"); es.submitToAllMembers(buildCallable(), buildCallback()); es.submitToKeyOwner(buildCallable(), "Peter", buildCallback());
EntryProcessor API
Lock API HazelcastInstance hz = getHazelcastInstance(); // Distributed Reentrant L​ock l​ock = hz.getLock("myLock"); l​ock.lock(); try { // Do something } finally { l​ock.unlock(); } Distributed Lock
Lock API Pessimistic Locking (IMap)
Lock API Optimistic Locking
Map/Reduce API HazelcastInstance hz = getHazelcastInstance(); Map users = hz.getMap("users"); JobTracker tracker = hz.getJobTracker("default"); KeyValueSource source = KeyValueSource.fromMap(users); Job job = tracker.newJob(source); ICompleteFuture future = job.mapper(new MyMapper()) .reducer(new MyReducer()) .submit(); Map result = future.get();
Aggregations API HazelcastInstance hz = getHazelcastInstance(); Map users = hz.getMap("users"); int sum = users.aggregate( Supplier.all((user) -> user.getSalary()), Aggregations.longSum() );
Hazelcast Distributed Topic Bus Hazelcast Topic Hazelcast Node 1 Hazelcast Node 2 Hazelcast Node 3 MSG Subscribes Delivers Subscribes Delivers Distributed Messaging
Queue Topic (Pub/Sub) Event Listeners Ring Buffers IM Distributed Messaging Features HD Cache Dist. Compute Dist. Message
Queue API interface com.hazelcast.core.IQueue<E> extends java.util.concurrent.BlockingQueue HazelcastInstance hz = getHazelcastInstance(); //java.util.concurrent.BlockingQueue implementation IQueue<Task> queue = hz.getQueue("tasks"); queue.offer(newTask()); queue.offer(newTask(), 500, TimeUnit.MILLISECONDS); Task task = queue.poll(); Task task = queue.poll(100, TimeUnit.MILLISECONDS); Task task = queue.take();
Topic API public class Example implements MessageListener<String> { public void sendMessage { HazelcastInstance hz = getHazelcastInstance(); ITopic<String> topic = hz.getTopic("topic"); topic.addMessageListener(this); topic.publish("Hello World"); } @Override public void onMessage(Message<String> message) { System.out.println("Got message: " + message.getMessageObject()); } }
Hazelcast Striim 39
Data Distribution and Resilience 47
© 2015 Hazelcast, Inc.
Distributed Maps Fixed number of partitions (default 271) Each key falls into a partition partitionId = hash(keyData)%PARTITION_COUNT Partition ownerships are reassigned upon membership change A B C
5 0
New Node Added DA B C
Migration DA B C
Migration DA B C
Migration DA B C
Migration DA B C
Migration DA B C
Migration DA B C
Migration Complete DA B C
Data Safety on Node Failure 59
Node Crashes DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Backups Are Restored DA B C
Recovery Is Complete DA C
Deployment Strategies
Deployment Options Great for early stages of rapid application development and iteration Necessary for scale up or scale out deployments – decouples upgrading of clients and cluster for long term TCO Embedded Hazelcast Hazelcast Node 1 Applications Java API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node 1 Hazelcast Node 2 Applications Java API Hazelcast Node 3 Applications Java API
Easy API // Creating a new Hazelcast node HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // Getting a Map, Queue, Topic, ... Map map = hz.getMap("my-map"); Queue queue = hz.getQueue("my-queue"); ITopic topic = hz.getTopic("my-topic"); //Creating a Hazelcast Client HazelcastInstance client = HazelcastClient.newHazelcastClient(); // Shutting down the node hz.shutdown();
Roadmap and Latest
Hazelcast High Level Roadmap Hi-Density Caching In-Memory Data Grid 2014 2015 2016 HD Memory | Advance Messaging PaaS | Extensions | Integrations | JET Scalability | Resiliency | Elastic Memory | In-Memory Computing Advance In-memory Computing Platform
© 2016 Hazelcast Inc. Confidential & Proprietary 75 Hazelcast 3.7 Release
© 2016 Hazelcast Inc. Confidential & Proprietary 76 Features Description Modularity In 3.7, Hazelcast is converted to a modular system based around extension points. So clients, Cloud Discovery providers and integrations to third party systems like Hibernate etc will be released independently. 3.7 will then ship with the latest stable versions of each. Redesign of Partition Migration More robust partition migration to round out some edge cases. Graceful Shutdown Improvements More robust shutdown with partition migration on shutdown of a member Higher Networking Performance A further 30% improvement in performance across the cluster by eliminating notifyAll() calls. Map.putAll() Performance Speedup Implement member batching. Rule Based Query Optimizer Make queries significantly faster by using static transformations of queries. Azul Certification Run Hazelcast on Azul Zing for Java 6, 7 or 8 for less variation of latencies due to GC. Solaris Sparc Support Align HD Memory backed data structure's layouts so that platforms, such as SPARC work. Verify SPARC using our lab machine. New Features for JCache Simple creation similar to other Hazelcast Data Structures. E.g. Command Line Interface New command line interface for common operations performed by Operations. Non-blocking Vert.x integration New async methods in Map and integration with Vert.x to use them. New Hazelcast 3.7 Features
© 2016 Hazelcast Inc. Confidential & Proprietary 77 Features Description Scala integration for Hazelcast members and Hazelcast client. Implements all Hazelcast features. Wraps the Java client for client mode and in embedded mode uses the Hazelcast member directly. Node.js Native client implementation using the Hazelcast Open Client protocol. Basic feature support. Python Native client implementation using the Hazelcast Open Client protocol. Supports most Hazelcast features. Clojure Clojure integration for Hazelcast members and Hazelcast client. Implements some Hazelcast features. Wraps the Java client for client mode and in embedded mode uses the Hazelcast member directly. New Hazelcast 3.7 Clients and Languages
© 2016 Hazelcast Inc. Confidential & Proprietary 78 Features Description Azure Marketplace Ability to start Hazelcast instances on Docker environments easily. Provides Hazelcast, Hazelcast Enterprise and Management Center. Azure Cloud Provider Discover Provider for member discovery using Kubernetes. (Plugin) AWS Marketplace Deploy Hazelcast, Hazelcast Management Center and Hazelcast Enterprise clusters straight from the Marketplace. Consul Cloud Provider Discover Provider for member discovery for Consul (Plugin) Etcd Cloud Provider Discover Provider for member discovery for Etcd (Plugin) Zookeeper Cloud Provider Discover Provider for member discovery for Zookeeper (Plugin) Eureka Cloud Provider Discover Provider for member discovery for Eureka 1 from Netflix. (Plugin) Docker Enhancements Docker support for cloud provider plugins New Hazelcast 3.7 Cloud Features
Hazelcast Platform: Hazelcast Everywhere
Hazelcast on Cloud
Features Description Amazon EC2 EC2 Auto discovery – upgraded with Discovery SPI Microsoft Azure Available on Azure Marketplace Pivotal Cloud Foundry Only distributed IMDG to provide on-demand service broker and disk based persistence OpenShift Native compliancy Hazelcast on Cloud – IaaS, PaaS
Hazelcast on Cloud – SaaS, IaaS, PaaS Other off-the-shelf cloud based compliancy • OpenStack • Google Compute Engine • Google Platform Services • jClouds • Discovery SPI – Everything Everywhere
What’s Hazelcast Jet? • General purpose distributed data processing framework • Based on Direct Acyclic Graph to model data flow • Built on top of Hazelcast • Comparable to Apache Spark or Apache Flink 8 4
Hazelcast Jet • Jet is built on and heavily dependent on Hazelcast • Hazelcast data structures can be used as source and sinks • Hazelcast discovery is used for member discovery • Application lifecycle methods use Hazelcast operations 8 5
What’s Hazelcast Jet? • Hazelcast serialization is used for serialising objects on the wire • Separate network stack for now 8 6
DAG 8 7
Job Execution 8 8
Jet Architecture • Low-latency communication between vertices using Ringbuffer • Ringbuffer provide natural backpressure • Individual processors need not be thread safe as they are always called by one thread at a time • Data structures to support aggregating/sorting/joining large amounts of data with minimal GC pressure 8 9
Jet Future • Higher level streaming and batching APIs • Unified network stack with Hazelcast • Reactive Streams • Integrations (HDFS/Yarn/Mesos) 9 0
9 1 Hazelcast Services
Service Offerings Hazelcast (Apache Licensed) • Professional Subscription – 24x7 support* Hazelcast Enterprise Support • Available with Hazelcast Enterprise software subscription - 24x7 support* Additional Services • Development Support Subscription – 8x5 support* • Simulator TCK • Training • Expert Consulting • Development Partner Program * All subscriptions include Management Center
© 2016 Hazelcast Inc. Confidential & Proprietary 93 Support Subscriptions What’s Included 100% SUCCESS RATE ON CUSTOMER ISSUES: “As usual, the response was timely beyond expectations, and very good technical content returned. Exemplary support, hard to find in any company…” - Fortune 100 Financial Services Customer ENTERPRISE HD ENTERPRISE PROFESSIONAL OPEN SOURCE SUPPORT WINDOW 24/7 24/7 24/7 RESPONSE TIME FOR CRITIAL ISSUES 1 Hour 1 Hour 2 Hours SUPPORTED SOFTWARE Hazelcast & Hazelcast Enterprise Hazelcast & Hazelcast Enterprise Hazelcast SUPPORT CONTACTS 4 4 2 SUPPORT CHANNELS Email, IM & Phone Email, IM & Phone Email, IM & Phone PATCH LEVEL FIXES    REMOTE MEETINGS (via GoToMeeting)    CODE REVIEW (with a Senior Solutions Architect) 2 Hours 2 Hours 2 Hours QUARTERLY REVIEW OF FEATURE REQUES*   QUARTERLY REVIEW OF HAZELCAST ROADMAP*  
© 2016 Hazelcast Inc. Confidential & Proprietary 9 4 Best In Class Support  Support from the Engineers who wrote the code  SLA Driven – 100% attainment of support response time  Follow the Sun  Portal, Email and Phone access  Go Red, Go Green. Reproduction of issues on Simulator. Proof of fix on Simulator.  Periodic Technical Reviews  Meet your production schedule and corporate compliance requirements  Ensure the success of your development team with training and best practices
9 5 Hazelcast Support Coverage India Turkey London U.S.
© 2016 Hazelcast Inc. Confidential & Proprietary 96 Support Testimonials
© 2016 Hazelcast Inc. Confidential & Proprietary 97 Release Lifecycle • Regular Feature release each 4-5 months, e.g. 3.3, 3.4, 3.5 • Maintenance release approximately each month with bug fixes based on the current feature release, e.g. 3.4.1 • For older versions, patch releases made available to fix issues • Release End of Life per support contract
Thank you

Distributed caching and computing v3.7

  • 1.
    Thinking Distributed: TheHazelcast Way RAHUL GUPTA SR SOLUTIONS ARCHITECT
  • 2.
    About Me Senior SolutionsArchitect Worked with Terracotta In-memory Distributed Systems since 2009 Java Programmer since 1998 rahul@hazelcast.com Rahul Gupta follow me @wildnez
  • 3.
  • 4.
    Why Hazelcast? • Scale-outComputing enables cluster capacity to be increased or decreased on-demand • Resilience with automatic recovery from member failures without losing data while minimizing performance impact on running applications • Programming Model provides a way for developers to easily program a cluster application as if it is a single process • Fast Application Performance enables very large data sets to be held in main memory for real-time performance
  • 6.
    Ecosystem Traction Dozens ofCommercial and Open Source Projects Embed Hazelcast
  • 7.
    01001 10101 01010 In Memory Data Computing InMemory Data Messaging++In Memory Data Storage In Memory Data Grid
  • 8.
    Business Systems A BC RDBMS Mainframe MongoDB NoSQL REST Scale Hazelcast In-Memory Caching
  • 10.
    java.util.concurrent.ConcurrentMap import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; publicstatic void main(String[] args) { ConcurrentMap<Integer, String> map = new ConcurrentHashMap<>(); map.put(1, "Paris"); map.put(2, "London"); map.put(3, "San Francisco"); String oldValue = map.remove(2); }
  • 11.
    Distributed Map import java.util.concurrent.ConcurrentMap; importcom.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; public static void main(String[] args) { HazelcastInstance h = Hazelcast.newHazelcastInstance(); ConcurrentMap<Integer, String> map = h.getMap("myMap"); map.put(1, "Paris"); map.put(2, "London"); map.put(3, "San Francisco"); String oldValue = map.remove(2); }
  • 12.
  • 13.
    Persistence API public classMapStorage implements MapStore<String, User>, MapLoader<String, User> { // Some methods missing ... @Override public User load(String key) { return loadValueDB(key); } @Override public Set<String> loadAllKeys() { return loadKeysDB(); } @Override public void delete(String key) { deleteDB(key); } @Override public void store(String key, User value) { storeToDatabase(key, value); } } <map name="users"> <map-store enabled="true"> <class-name>com.hazelcast.example.MapStorage</class-name> <write-delay-seconds>0</write-delay-seconds> </map-store> </map>
  • 14.
    JCache API // Retrievethe CachingProvider which is automatically baced by // the chosen Hazelcast server or client provider CachingProvider cachingProvider = Caching.getCachingProvider(); // Create a CacheManager CacheManager cacheManager = cachingProvider.getCacheManager(); // Cache<String, String> cache = cacheManager // .getCache( name, String.class, String.class ); // Create a simple but typesafe configuration for the cache CompleteConfiguration<String, String> config = new MutableConfiguration<String, String>() .setTypes( String.class, String.class );
  • 15.
    JCache API // Createand get the cache Cache<String, String> cache = cacheManager .createCache( "example", config ); // Alternatively to request an already existing cache Cache<String, String> cache = cacheManager .getCache( name, String.class, String.class ); // Put a value into the cache cache.put( "world", "Hello World" ); // Retrieve the value again from the cache String value = cache.get( "world" ); System.out.println( value );
  • 16.
    Eviction • Unless deleted,entries remain in the map. • Use eviction policies to prevent OOM situations. • Eviction Triggers run LFU or LRU. time-to-live max-idle-seconds max-size (PER_NODE(number of entries), PER_PARTITION(number of entries), USED_HEAP_SIZE(mb), USED_HEAP_PERCENTAGE(mb)) • Setting eviction-percentage removes that % of entries when eviction is triggered.
  • 17.
    Features Description MultiMap Storemultiple values against one Key Replicated Map Cluster wide replication, all entries on all nodes. Good for read heavy use cases Near Cache Map Entries on Client/Application local memory RingBuffer Stores data in a ring-like structure, like a circular array with given capacity More Distributed Structures
  • 18.
    Java Collection API:Map, List, Set, Queue Jcache High Density Memory Store Hibernate 2nd Level Cache Web Session Replication: Tomcat, Jetty Predicate API: Indexes, SQL Query Persistence: Map/Queue Store & Loader. Write Behind/Through Spring Compliance Transactions: Local & XA WAN & DR Replication IM Data Store (Caching) Features
  • 19.
  • 20.
    Java: Will itmake the cut? Garbage Collection limits heap usage. G1 and Balanced aim for <100ms at 10GB. Unused Memory 64GB 4GB 4s Heap Java Apps Memory Bound GC Pause Time Available Memory GC Off-Heap Storage No low-level CPU access Java is challenged as an infrastructure language despite its newly popular usage for this Heap
  • 21.
    GC Pause 64 Gb JVM 4Gb JVM 1 4 Gb JVM 2 4 Gb JVM 3 4 Gb JVM 4 4 Gb JVM 5 4 Gb JVM 16 GC Pause 0 GB 64 GB 64 Gb in-memory data time Standard Impediments of Caching
  • 22.
    GC Pause 64 Gb JVM 4Gb JVM 1 4 Gb JVM 2 4 Gb JVM 3 4 Gb JVM 4 4 Gb JVM 5 4 Gb JVM 16 GC Pause 0 Gb 64 Gb 64 Gb in-memory data time 64 Gb HD 2 Gb JVM GC Pause HD Memory Caching with HD Memory
  • 23.
    On-Heap Memory Store (ObjectsStored as Objects) High-Density Memory Store (Objects Serialized and Stored as Bytes) s.m.Unsafe s.m.Unsafe 2-4GB (Limited by Garbage Collection) 0-1TB (Limited by Machine RAM) Memory Stores •Member •Client (Near Cache) RAM in JVM Process APIs JCache (ICache) Map (IMap) HD Memory
  • 24.
    On Heap Vs.High-Density Memory Management On Heap Memory HD Memory 0 MB HD 3.3 GB 3.9 GB Heap Storage 0.6 GB 9 (4900 ms) Major GC 0 (0 ms) 31 (4200 ms) Minor GC 356 (349 ms) Node Used Heap Total Heap Max. Heap Heap Usage Percentage Used Heap: 0.2 GB 192.168.1.10:5701 57 MB 229 MB 910 MB 6.28% Memory Utilization Home Offheap-test Node Used Heap: 3.9 GB 192.168.1.10:5701 3933 MB 4658MB 4653MB 84.45% Memory Utilization Home Used Heap Total Heap Max. Heap Heap Usage Percentage Example: On Heap Memory Example: HD Memory
  • 25.
    Hazelcast Servers Hazelcast Server JVM[Memory] A B C Business Logic Data Data Data CE = Compute Engine Result Business / Processing Logic Result TCP / IP Client Client Distributed Computing
  • 26.
    IM Distributed ComputingFeature HD Cache Dist. Compute Dist. Message Java Concurrency API (Lock, Semaphore, AtomicLong, AtomicReference, Executor Service, Blocking Queue) Entry and Item Listeners Entry Processor Aggregators Map/Reduce Data Affinity Continues Query Map Interceptors Delta Update
  • 27.
    Executor Service API publicinterface com.hazelcast.core.IExecutorService extends java.util.concurrent.ExecutorService HazelcastInstance hz = getHazelcastInstance(); //java.util.concurrent.ExecutorService implementation IExecutorService es = hz.getExecutorService("name"); es.executeOnAllMembers(buildRunnable()); es.executeOnKeyOwner(buildRunnable(), "Peter"); es.execute(buildRunnable()); Map<..> futures = es.submitToAllMembers(buildCallable()); Future<..> future = es.submitToKeyOwner(buildCallable(), "Peter"); es.submitToAllMembers(buildCallable(), buildCallback()); es.submitToKeyOwner(buildCallable(), "Peter", buildCallback());
  • 28.
  • 29.
    Lock API HazelcastInstance hz= getHazelcastInstance(); // Distributed Reentrant L​ock l​ock = hz.getLock("myLock"); l​ock.lock(); try { // Do something } finally { l​ock.unlock(); } Distributed Lock
  • 30.
  • 31.
  • 32.
    Map/Reduce API HazelcastInstance hz= getHazelcastInstance(); Map users = hz.getMap("users"); JobTracker tracker = hz.getJobTracker("default"); KeyValueSource source = KeyValueSource.fromMap(users); Job job = tracker.newJob(source); ICompleteFuture future = job.mapper(new MyMapper()) .reducer(new MyReducer()) .submit(); Map result = future.get();
  • 33.
    Aggregations API HazelcastInstance hz= getHazelcastInstance(); Map users = hz.getMap("users"); int sum = users.aggregate( Supplier.all((user) -> user.getSalary()), Aggregations.longSum() );
  • 34.
    Hazelcast Distributed Topic Bus Hazelcast Topic Hazelcast Node1 Hazelcast Node 2 Hazelcast Node 3 MSG Subscribes Delivers Subscribes Delivers Distributed Messaging
  • 35.
    Queue Topic (Pub/Sub) Event Listeners RingBuffers IM Distributed Messaging Features HD Cache Dist. Compute Dist. Message
  • 36.
    Queue API interface com.hazelcast.core.IQueue<E> extendsjava.util.concurrent.BlockingQueue HazelcastInstance hz = getHazelcastInstance(); //java.util.concurrent.BlockingQueue implementation IQueue<Task> queue = hz.getQueue("tasks"); queue.offer(newTask()); queue.offer(newTask(), 500, TimeUnit.MILLISECONDS); Task task = queue.poll(); Task task = queue.poll(100, TimeUnit.MILLISECONDS); Task task = queue.take();
  • 37.
    Topic API public classExample implements MessageListener<String> { public void sendMessage { HazelcastInstance hz = getHazelcastInstance(); ITopic<String> topic = hz.getTopic("topic"); topic.addMessageListener(this); topic.publish("Hello World"); } @Override public void onMessage(Message<String> message) { System.out.println("Got message: " + message.getMessageObject()); } }
  • 38.
  • 40.
    Data Distribution andResilience 47
  • 41.
  • 42.
    Distributed Maps Fixed numberof partitions (default 271) Each key falls into a partition partitionId = hash(keyData)%PARTITION_COUNT Partition ownerships are reassigned upon membership change A B C
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
    Data Safety onNode Failure 59
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
    Deployment Options Great forearly stages of rapid application development and iteration Necessary for scale up or scale out deployments – decouples upgrading of clients and cluster for long term TCO Embedded Hazelcast Hazelcast Node 1 Applications Java API Client-Server Mode Hazelcast Node 3 Java API Applications Java API Applications Java API Applications Hazelcast Node 2 Hazelcast Node 1 Hazelcast Node 2 Applications Java API Hazelcast Node 3 Applications Java API
  • 65.
    Easy API // Creatinga new Hazelcast node HazelcastInstance hz = Hazelcast.newHazelcastInstance(); // Getting a Map, Queue, Topic, ... Map map = hz.getMap("my-map"); Queue queue = hz.getQueue("my-queue"); ITopic topic = hz.getTopic("my-topic"); //Creating a Hazelcast Client HazelcastInstance client = HazelcastClient.newHazelcastClient(); // Shutting down the node hz.shutdown();
  • 66.
  • 67.
    Hazelcast High LevelRoadmap Hi-Density Caching In-Memory Data Grid 2014 2015 2016 HD Memory | Advance Messaging PaaS | Extensions | Integrations | JET Scalability | Resiliency | Elastic Memory | In-Memory Computing Advance In-memory Computing Platform
  • 68.
    © 2016 HazelcastInc. Confidential & Proprietary 75 Hazelcast 3.7 Release
  • 69.
    © 2016 HazelcastInc. Confidential & Proprietary 76 Features Description Modularity In 3.7, Hazelcast is converted to a modular system based around extension points. So clients, Cloud Discovery providers and integrations to third party systems like Hibernate etc will be released independently. 3.7 will then ship with the latest stable versions of each. Redesign of Partition Migration More robust partition migration to round out some edge cases. Graceful Shutdown Improvements More robust shutdown with partition migration on shutdown of a member Higher Networking Performance A further 30% improvement in performance across the cluster by eliminating notifyAll() calls. Map.putAll() Performance Speedup Implement member batching. Rule Based Query Optimizer Make queries significantly faster by using static transformations of queries. Azul Certification Run Hazelcast on Azul Zing for Java 6, 7 or 8 for less variation of latencies due to GC. Solaris Sparc Support Align HD Memory backed data structure's layouts so that platforms, such as SPARC work. Verify SPARC using our lab machine. New Features for JCache Simple creation similar to other Hazelcast Data Structures. E.g. Command Line Interface New command line interface for common operations performed by Operations. Non-blocking Vert.x integration New async methods in Map and integration with Vert.x to use them. New Hazelcast 3.7 Features
  • 70.
    © 2016 HazelcastInc. Confidential & Proprietary 77 Features Description Scala integration for Hazelcast members and Hazelcast client. Implements all Hazelcast features. Wraps the Java client for client mode and in embedded mode uses the Hazelcast member directly. Node.js Native client implementation using the Hazelcast Open Client protocol. Basic feature support. Python Native client implementation using the Hazelcast Open Client protocol. Supports most Hazelcast features. Clojure Clojure integration for Hazelcast members and Hazelcast client. Implements some Hazelcast features. Wraps the Java client for client mode and in embedded mode uses the Hazelcast member directly. New Hazelcast 3.7 Clients and Languages
  • 71.
    © 2016 HazelcastInc. Confidential & Proprietary 78 Features Description Azure Marketplace Ability to start Hazelcast instances on Docker environments easily. Provides Hazelcast, Hazelcast Enterprise and Management Center. Azure Cloud Provider Discover Provider for member discovery using Kubernetes. (Plugin) AWS Marketplace Deploy Hazelcast, Hazelcast Management Center and Hazelcast Enterprise clusters straight from the Marketplace. Consul Cloud Provider Discover Provider for member discovery for Consul (Plugin) Etcd Cloud Provider Discover Provider for member discovery for Etcd (Plugin) Zookeeper Cloud Provider Discover Provider for member discovery for Zookeeper (Plugin) Eureka Cloud Provider Discover Provider for member discovery for Eureka 1 from Netflix. (Plugin) Docker Enhancements Docker support for cloud provider plugins New Hazelcast 3.7 Cloud Features
  • 72.
  • 73.
  • 74.
    Features Description Amazon EC2EC2 Auto discovery – upgraded with Discovery SPI Microsoft Azure Available on Azure Marketplace Pivotal Cloud Foundry Only distributed IMDG to provide on-demand service broker and disk based persistence OpenShift Native compliancy Hazelcast on Cloud – IaaS, PaaS
  • 75.
    Hazelcast on Cloud– SaaS, IaaS, PaaS Other off-the-shelf cloud based compliancy • OpenStack • Google Compute Engine • Google Platform Services • jClouds • Discovery SPI – Everything Everywhere
  • 77.
    What’s Hazelcast Jet? •General purpose distributed data processing framework • Based on Direct Acyclic Graph to model data flow • Built on top of Hazelcast • Comparable to Apache Spark or Apache Flink 8 4
  • 78.
    Hazelcast Jet • Jetis built on and heavily dependent on Hazelcast • Hazelcast data structures can be used as source and sinks • Hazelcast discovery is used for member discovery • Application lifecycle methods use Hazelcast operations 8 5
  • 79.
    What’s Hazelcast Jet? •Hazelcast serialization is used for serialising objects on the wire • Separate network stack for now 8 6
  • 80.
  • 81.
  • 82.
    Jet Architecture • Low-latencycommunication between vertices using Ringbuffer • Ringbuffer provide natural backpressure • Individual processors need not be thread safe as they are always called by one thread at a time • Data structures to support aggregating/sorting/joining large amounts of data with minimal GC pressure 8 9
  • 83.
    Jet Future • Higherlevel streaming and batching APIs • Unified network stack with Hazelcast • Reactive Streams • Integrations (HDFS/Yarn/Mesos) 9 0
  • 84.
  • 85.
    Service Offerings Hazelcast (ApacheLicensed) • Professional Subscription – 24x7 support* Hazelcast Enterprise Support • Available with Hazelcast Enterprise software subscription - 24x7 support* Additional Services • Development Support Subscription – 8x5 support* • Simulator TCK • Training • Expert Consulting • Development Partner Program * All subscriptions include Management Center
  • 86.
    © 2016 HazelcastInc. Confidential & Proprietary 93 Support Subscriptions What’s Included 100% SUCCESS RATE ON CUSTOMER ISSUES: “As usual, the response was timely beyond expectations, and very good technical content returned. Exemplary support, hard to find in any company…” - Fortune 100 Financial Services Customer ENTERPRISE HD ENTERPRISE PROFESSIONAL OPEN SOURCE SUPPORT WINDOW 24/7 24/7 24/7 RESPONSE TIME FOR CRITIAL ISSUES 1 Hour 1 Hour 2 Hours SUPPORTED SOFTWARE Hazelcast & Hazelcast Enterprise Hazelcast & Hazelcast Enterprise Hazelcast SUPPORT CONTACTS 4 4 2 SUPPORT CHANNELS Email, IM & Phone Email, IM & Phone Email, IM & Phone PATCH LEVEL FIXES    REMOTE MEETINGS (via GoToMeeting)    CODE REVIEW (with a Senior Solutions Architect) 2 Hours 2 Hours 2 Hours QUARTERLY REVIEW OF FEATURE REQUES*   QUARTERLY REVIEW OF HAZELCAST ROADMAP*  
  • 87.
    © 2016 HazelcastInc. Confidential & Proprietary 9 4 Best In Class Support  Support from the Engineers who wrote the code  SLA Driven – 100% attainment of support response time  Follow the Sun  Portal, Email and Phone access  Go Red, Go Green. Reproduction of issues on Simulator. Proof of fix on Simulator.  Periodic Technical Reviews  Meet your production schedule and corporate compliance requirements  Ensure the success of your development team with training and best practices
  • 88.
  • 89.
    © 2016 HazelcastInc. Confidential & Proprietary 96 Support Testimonials
  • 90.
    © 2016 HazelcastInc. Confidential & Proprietary 97 Release Lifecycle • Regular Feature release each 4-5 months, e.g. 3.3, 3.4, 3.5 • Maintenance release approximately each month with bug fixes based on the current feature release, e.g. 3.4.1 • For older versions, patch releases made available to fix issues • Release End of Life per support contract
  • 91.