Hazelcast
Ramon Spahr, Korhan Gülseven
SBB Developer Day 2015
Agenda
2
 Einführung
ƒ Was ist Hazelcast?
ƒ Wie funktioniert Hazelcast?
 Features
ƒ Distributed Data Structures
ƒ Distributed Query
ƒ Distributed Computing
 Einsatz bei Infohub-PT
 Einsatz bei CIS Infra
 Demo
Einführung: Was ist Hazelcast?
3
∧ Firma
▪ Von der Türkei nach Palo Alto
∧ Produkt
▪ Open Source
▪ In-Memory Data Grid (IMGD)
▪ Verteilte Datenstrukturen und Berechnungen
▪ Implementiert in Java
Einführung: Was ist Hazelcast?
4
∧ Embedded oder als Client/Server
∧ Kommuniziert Peer-to-Peer.
www.hazelcast.com
Einführung: Wie funktioniert Hazelcast?
5
∧ Partitionierung
▪ Alle Partitionen sind möglichst gleichverteilt über den Cluster
▪ Backups / Redundanz
▪ partitionKey = hash(key data) % partition count
www.hazelcast.com
Einführung: Wie funktioniert Hazelcast?
6
▪ Partitionstabelle
▪ Jeweils der älteste Knoten verwaltet die Tabelle
▪ 271 Partitionen / Cluster
www.hazelcast.com
Einführung: Wie funktioniert Hazelcast?
7
∧ Breispiel Map: Als Objekt oder Binärdaten
∧ Serialisierung immer notwendig
▪ Beispiel: Portable Serialization
public class Foo implements Portable {
final static int ID = 5;
private String foo;
…
@Override public int getFactoryId() { return 1; }
@Override public int getClassId() { return ID; }
@Override
public void writePortable(PortableWriter writer) throws IOException {
writer.writeUTF( "foo", foo );
}
}
Einführung: Wie funktioniert Hazelcast?
8
∧ DataAffinity
public class OrderKey implements Serializable, PartitionAware {
private final long orderId;
private final long customerId;
…
public Object getPartitionKey() { return customerId; }
}
Features: Distributed Data Structures
9
 Standard
ƒ Map, Multimap, Replicated Map
ƒ Queue, Set, List, Ringbuffer
 Messaging (pub/sub)
ƒ Topic
 Concurrency Utilities
ƒ Lock, Semaphore, IdGenerator, AtomicLong, CountDownLatch..
 Persistence (*Store-APIs)
Features: Distributed Map
10
Features: Distributed Query
11
 Divide and Conquer
 Criteria API
 Distributed SQL
 MapReduce & Aggregators (avg, sum, min, max, eigene..)
Features: Distributed Computing
12
 Ziele
ƒ Parallele Verarbeitung der Tasks
ƒ Ausführung der Tasks lokal bei den Daten (Code → Data)
 Implementierung von ExecutorService (java.util.concurrent)
für verteilte Umgebungen (Callable, Runnables)
 Entry Processors um Daten lokal und atomar zu modifizieren.
Features: Was sonst
13
 Event Listeners (Member, Client, Entry..)
 Clients (Java, C++, .NET, REST)
 JCache (JSR-107) Implementierung
 Integration: Hibernate (2nd Level Cache), Web Session Replication,
Spring
 Enterprisy’ness:
ƒ Transactions (XA, JEE Integration über JCA)
ƒ WAN Replication
ƒ Security
ƒ …
Einsatz bei Info-Hub PT
Info-Hub PT: Was tut es?
15
∧ Verteilung von Bahnproduktionsdaten
▪ Gesamter Bahnverkehr CH
▪ Grenzüberschreitender Bahnverkehr
Info-Hub PT: Wofür Hazelcast?
16
ZUGFAHRT
PROGNOSE
ISTZEIT
ISTZEIT
Info-Hub PT: Aufbau
17
Info-Hub PT: Lessons learned
18
∧ Einfache aber wichtige Konfiguration des Clusters
∧ Wertvolles Management Center
∧ Flache Objekte als Indexe m. Portable-Serialisierung
∧ Schnelle Neupartitionierung und Write-Behind
Aktuelle Baustellen:
∧ Lasttest und Go-Live
∧ JCache (+20% Client-Performance gemäss Hazelcast)
∧ Deployment-Szenarios / Hilfsmittel
∧ Distributed Computing
Einsatz bei CIS Infra
CIS Infra: Zugfahrtdaten
20
PoC: Hazelcast on/with SBB WebSphere
21
 Ziel: Zeigen, dass Hazelcast auf der SBB WebSphere-Plattform (HighEnd)
betrieben werden kann.
 Scope
 Embedded in WebSphere
 Dediziert (out-of-process) mit Client auf WebSphere
 25KB XML (~10KB Java) über zwei Queues, bis zu 120/sec
 Ergebnisse
 Durchsatz 
 Betreibbarkeit auf WebSphere 
 Indexes Hazelcast ϑ
 https://confluence.sbb.ch/display/CISINFRAE/PoC+-+Hazelcast+on+Websphere
Demo
22
Fragen?
Anhang
Features: Distributed Events
(verschieben zu: Was sonst)
25
Listeners für Events:
 Membership, Distributed Object, Migration, Partition Lost, Lifecycle
 Entry, Item, Message
 Client

Hazelcast

  • 1.
    Hazelcast Ramon Spahr, KorhanGülseven SBB Developer Day 2015
  • 2.
    Agenda 2  Einführung ƒ Wasist Hazelcast? ƒ Wie funktioniert Hazelcast?  Features ƒ Distributed Data Structures ƒ Distributed Query ƒ Distributed Computing  Einsatz bei Infohub-PT  Einsatz bei CIS Infra  Demo
  • 3.
    Einführung: Was istHazelcast? 3 ∧ Firma ▪ Von der Türkei nach Palo Alto ∧ Produkt ▪ Open Source ▪ In-Memory Data Grid (IMGD) ▪ Verteilte Datenstrukturen und Berechnungen ▪ Implementiert in Java
  • 4.
    Einführung: Was istHazelcast? 4 ∧ Embedded oder als Client/Server ∧ Kommuniziert Peer-to-Peer. www.hazelcast.com
  • 5.
    Einführung: Wie funktioniertHazelcast? 5 ∧ Partitionierung ▪ Alle Partitionen sind möglichst gleichverteilt über den Cluster ▪ Backups / Redundanz ▪ partitionKey = hash(key data) % partition count www.hazelcast.com
  • 6.
    Einführung: Wie funktioniertHazelcast? 6 ▪ Partitionstabelle ▪ Jeweils der älteste Knoten verwaltet die Tabelle ▪ 271 Partitionen / Cluster www.hazelcast.com
  • 7.
    Einführung: Wie funktioniertHazelcast? 7 ∧ Breispiel Map: Als Objekt oder Binärdaten ∧ Serialisierung immer notwendig ▪ Beispiel: Portable Serialization public class Foo implements Portable { final static int ID = 5; private String foo; … @Override public int getFactoryId() { return 1; } @Override public int getClassId() { return ID; } @Override public void writePortable(PortableWriter writer) throws IOException { writer.writeUTF( "foo", foo ); } }
  • 8.
    Einführung: Wie funktioniertHazelcast? 8 ∧ DataAffinity public class OrderKey implements Serializable, PartitionAware { private final long orderId; private final long customerId; … public Object getPartitionKey() { return customerId; } }
  • 9.
    Features: Distributed DataStructures 9  Standard ƒ Map, Multimap, Replicated Map ƒ Queue, Set, List, Ringbuffer  Messaging (pub/sub) ƒ Topic  Concurrency Utilities ƒ Lock, Semaphore, IdGenerator, AtomicLong, CountDownLatch..  Persistence (*Store-APIs)
  • 10.
  • 11.
    Features: Distributed Query 11 Divide and Conquer  Criteria API  Distributed SQL  MapReduce & Aggregators (avg, sum, min, max, eigene..)
  • 12.
    Features: Distributed Computing 12 Ziele ƒ Parallele Verarbeitung der Tasks ƒ Ausführung der Tasks lokal bei den Daten (Code → Data)  Implementierung von ExecutorService (java.util.concurrent) für verteilte Umgebungen (Callable, Runnables)  Entry Processors um Daten lokal und atomar zu modifizieren.
  • 13.
    Features: Was sonst 13 Event Listeners (Member, Client, Entry..)  Clients (Java, C++, .NET, REST)  JCache (JSR-107) Implementierung  Integration: Hibernate (2nd Level Cache), Web Session Replication, Spring  Enterprisy’ness: ƒ Transactions (XA, JEE Integration über JCA) ƒ WAN Replication ƒ Security ƒ …
  • 14.
  • 15.
    Info-Hub PT: Wastut es? 15 ∧ Verteilung von Bahnproduktionsdaten ▪ Gesamter Bahnverkehr CH ▪ Grenzüberschreitender Bahnverkehr
  • 16.
    Info-Hub PT: WofürHazelcast? 16 ZUGFAHRT PROGNOSE ISTZEIT ISTZEIT
  • 17.
  • 18.
    Info-Hub PT: Lessonslearned 18 ∧ Einfache aber wichtige Konfiguration des Clusters ∧ Wertvolles Management Center ∧ Flache Objekte als Indexe m. Portable-Serialisierung ∧ Schnelle Neupartitionierung und Write-Behind Aktuelle Baustellen: ∧ Lasttest und Go-Live ∧ JCache (+20% Client-Performance gemäss Hazelcast) ∧ Deployment-Szenarios / Hilfsmittel ∧ Distributed Computing
  • 19.
  • 20.
  • 21.
    PoC: Hazelcast on/withSBB WebSphere 21  Ziel: Zeigen, dass Hazelcast auf der SBB WebSphere-Plattform (HighEnd) betrieben werden kann.  Scope  Embedded in WebSphere  Dediziert (out-of-process) mit Client auf WebSphere  25KB XML (~10KB Java) über zwei Queues, bis zu 120/sec  Ergebnisse  Durchsatz   Betreibbarkeit auf WebSphere   Indexes Hazelcast ϑ  https://confluence.sbb.ch/display/CISINFRAE/PoC+-+Hazelcast+on+Websphere
  • 22.
  • 23.
  • 24.
  • 25.
    Features: Distributed Events (verschiebenzu: Was sonst) 25 Listeners für Events:  Membership, Distributed Object, Migration, Partition Lost, Lifecycle  Entry, Item, Message  Client