hazelcast
TRANSCRIPT
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 Serializationpublic class Foo implements Portable {
final static int ID = 5;private String foo;…@Override public int getFactoryId() { return 1; }@Override public int getClassId() { return ID; }
@Overridepublic 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 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
ƒ …
Info-Hub PT: Was tut es?
15
∧ Verteilung von Bahnproduktionsdaten
▪ Gesamter Bahnverkehr CH
▪ Grenzüberschreitender Bahnverkehr
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
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