Top Banner
Hazelcast bei der SBB 24.Mai 2016 - jug.ch Korhan Gülseven [email protected]
40

Hazelcast bei der SBB (jug.ch)

Jan 18, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hazelcast bei der SBB (jug.ch)

Hazelcast bei der SBB24.Mai 2016 - jug.ch

Korhan Gü[email protected]

Page 2: Hazelcast bei der SBB (jug.ch)

Hazelcast ist

∧ Ein Produkt

▪ In-Memory Data Grid in Java

▪ Open Source (Apache License 2.0) https://github.com/hazelcast

▪ 6 MB Jar ohne Dependencies

▪ Kommerzielle Versionen & Subscription Plans: Enterprise & HD

∧ Eine Firma

▪ Gründung 2008

▪ Von Istanbul nach Palo Alto (HQ)

▪ Ca. 80 Angestellte

▪ Büros in Istanbul, Ankara, London, New York, Indien

Page 3: Hazelcast bei der SBB (jug.ch)

Hazelcast ist

Mission Statement:«Our main goal is to simplify development ofscalable and highly available systems»

∧ Features

▪ Distributed Data-Grid

▪ Distributed Computing

▪ Messaging

∧ Aus Entwicklersicht

▪ Einfach, vielseitig, schnell

▪ API vom Feinsten

Page 4: Hazelcast bei der SBB (jug.ch)

Topologie: Embedded

Page 5: Hazelcast bei der SBB (jug.ch)

Topologie: Embedded

Page 6: Hazelcast bei der SBB (jug.ch)

Topologie: Client/Server

Page 7: Hazelcast bei der SBB (jug.ch)

Partitionierung

∧ Hazelcast speichert die Daten in Partitionen

∧ Die Daten werden in Partitionen gleichmässig verteilt

∧ Bestimmung Partition: hash(key-data) % partition-count

∧ Replicas dienen der Ausfallsicherheit

Page 8: Hazelcast bei der SBB (jug.ch)

Partitionierung

Page 9: Hazelcast bei der SBB (jug.ch)

Partitionierung

Page 10: Hazelcast bei der SBB (jug.ch)

Partitionierung

Page 11: Hazelcast bei der SBB (jug.ch)

Partitionierung

Page 12: Hazelcast bei der SBB (jug.ch)

Partitionierung

Partition Migrationƒ Automatisch durch Hazelcastƒ Dynamisch, ohne Unterbruch der

laufenden Operationenƒ Horizontale Skalierung ohne

Unterbruch

Page 13: Hazelcast bei der SBB (jug.ch)

Serialisierung

∧ Serialisierung ist wichtig

∧ In-Memory Format

▪ Binary

▪ Object

∧ Default: Serializable (jdk), Externalizable (jdk), DataSerializableIdentifiedDataSerializable, Portable

∧ Custom: StreamSerializer, ByteArraySerializer (pluggable z.B. Kyro)

Page 14: Hazelcast bei der SBB (jug.ch)

Serialisierung

Page 15: Hazelcast bei der SBB (jug.ch)

Data Affinity

Page 16: Hazelcast bei der SBB (jug.ch)

Distributed Data Structures

∧ Standard

▪ Map, Multimap, Replicated Map

▪ Set, List, Queue, Ringbuffer

∧ Messaging (pub/sub)

▪ Topic

∧ Concurrency Utilities

▪ Lock, Semaphore, IdGenerator, AtomicLong, CountDownLatch

∧ Persistence APIs für Maps und Queues

▪ Optional

▪ read-through, write-through (sync), write-behind (async)

Page 17: Hazelcast bei der SBB (jug.ch)

Distributed Map

Page 18: Hazelcast bei der SBB (jug.ch)

Distributed Query

∧ Criteria API

∧ Distributed SQL

∧ Indizes

∧ MapReduce & Aggregators (avg, sum, min, max, eigene..)

Page 19: Hazelcast bei der SBB (jug.ch)

Distributed Computing: Motivation

Page 20: Hazelcast bei der SBB (jug.ch)

Distributed Computing: Motivation

Latenz, Bandbreite

(De)Serialisierung

(De)Serialisierung

CPU, Speicher

Page 21: Hazelcast bei der SBB (jug.ch)

Distributed Computing: Motivation

Page 22: Hazelcast bei der SBB (jug.ch)

Distributed Computing

∧ Implementierung von ExecutorService (java.util.concurrent) für verteilteUmgebungen (Callable, Runnable)

∧ Entry Processor, um Daten lokal und atomar zu modifizieren.

Page 23: Hazelcast bei der SBB (jug.ch)

Distributed Computing: EntryProcessor

Page 24: Hazelcast bei der SBB (jug.ch)

Distributed Computing: ExecutorService

Page 25: Hazelcast bei der SBB (jug.ch)

Distributed Computing: ExecutorService

Page 26: Hazelcast bei der SBB (jug.ch)

Messaging

∧ publish/subscribe à la JMS, aber kein JMS-Provider

∧ Topics können dynamisch angelegt werden

∧ Leichtgewichtig, da keine dedizierte Messaging-Middleware

Page 27: Hazelcast bei der SBB (jug.ch)

Messaging

Page 28: Hazelcast bei der SBB (jug.ch)

Features / Editions

http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html

Page 29: Hazelcast bei der SBB (jug.ch)

Features: Was sonst

∧ Event Listeners (Member, Client, Entry..)

∧ Clients (Java, C++, .NET, REST)

∧ JCache (JSR-107) Implementierung

∧ Integration: Hibernate (2nd Level Cache), Web Session Replication, SpringFramework

∧ Enterpriseyness:

▪ Transactions (XA, JEE Integration über JCA)

▪ WAN Replication

▪ Security

▪ ..

Page 30: Hazelcast bei der SBB (jug.ch)

Management Center

Page 31: Hazelcast bei der SBB (jug.ch)

Cargo Information System – CIS Infra

«Ein System zum Planen, Verwalten und Durchführen des Güterverkehrs. Liefertaktuelle, lückenlose Informationen vor, während und nach dem Transport, nichtnur innerhalb der SBB, sondern auch gegenüber Kunden und anderen Bahnenkönnen mit diesem Informatik-System Informationen gegeben werden.»

∧ Laufende Migrationsprojekte Mainframe ∧ Java

∧ Viele Umsysteme, viele Schnittstellen

∧ Performance-hungrig

Page 32: Hazelcast bei der SBB (jug.ch)
Page 33: Hazelcast bei der SBB (jug.ch)

InterCity 839

Zürich HB00:01

Bern23:02

Page 34: Hazelcast bei der SBB (jug.ch)

Soll-Zeiten (Rail Control System)

Zürich HB00:01

Bern23:02

-12h

Page 35: Hazelcast bei der SBB (jug.ch)

Prognose-Zeiten (RCS)

-2h

Zürich HB00:01

Bern23:02

Page 36: Hazelcast bei der SBB (jug.ch)

Ist-Zeiten (RCS)

+0.4h

Zürich HB00:01

Bern23:02

Page 37: Hazelcast bei der SBB (jug.ch)
Page 38: Hazelcast bei der SBB (jug.ch)
Page 39: Hazelcast bei der SBB (jug.ch)

~ 35K Zugfahrten~ 1M Punkte2GB Heap

Laufend 350x5(Views) Updates

Page 40: Hazelcast bei der SBB (jug.ch)

http://lazysundaymag.com/?p=322