hazelcast

25
Hazelcast Ramon Spahr, Korhan Gülseven SBB Developer Day 2015

Upload: korhan-guelseven

Post on 18-Jan-2017

182 views

Category:

Software


0 download

TRANSCRIPT

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 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 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