Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Testen verteilter Algorithmen in Zookeeper und Curator

No description
by

van Thinh Le

on 10 July 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Testen verteilter Algorithmen in Zookeeper und Curator


Testen verteilter Algorithmen in Zookeeper und Curator
Motivation
Apache Zookeeper
Framework zur Koordinierung von verteilten Systemen:
entwickelt in Java
Zookeeper selbst ist ein verteiltes System
Kern: Zookeeper Ensemble und x Zookeeper Clients
Warum sind automatische Tests wichtig?
Sicherung der Softwarequalität

Verteilte Systeme sind komplex:
Koordinierung und Synchronisierung von Zugriffen
Konsistenzmodell
Fehlertoleranz und Fehlerbehandlung
Präsentationsinhalt
Beispiele verteilter Algorithmen:
Shared Locks
Apache Zookeeper
Zookeeper
Ensemble
Zookeeper
Follower
Zookeeper
Client
(Server)
Zookeeper
Leader
Interner Aufbau
Baum von Znodes
Leader Election in ZK
1. Nach Start schlägt jeder Server sich selbst als
Leader vor
2. Server voten für denjenigen mit höchster zxid
3. Der neue Leader synchronisiert seine Daten mit
seinen Followern
4. Bereit für Zugriffe und Änderungen
Testbegriffe
Unit Tests


Funktionale Tests
Testunterstützung
TestingServer und TestingCluster Klassen
von Curator
Mocking mit Mockito
Write Lock Rezept
/
writelock
2. Beim sperren wird ein Ephemeral Node erzeugt mit
einer Sequenznummer
#SEQ: 10
#SEQ: 11
Interner Ablauf
1.Write Lock Request
3. "Denied"
4. Lock Allowed Event
Write Lock Test
Znode mit Metadaten
#SEQ: 10
#SEQ: 11
#SEQ: 12
#SEQ: 11
#SEQ: 10
Leader Election Fail Test
Leader
Thread
Leader
Election
Follower
Follower
Follower
Follower
Follower Vorgehen
1. Wartet bis der Leader sich bei ihm meldet (mit Timeout)
Leader Vorgehen
2. Setzt die globale Leader ID auf -1

3. Deblockiert seine Follower

4. Fährt runter um Absturz zu simulieren
Leader
Election
Leader Election Fail Test
Leader
Thread
Leader
Election
Leader
Follower
Follower
Follower
Follower Vorgehen
1. Wartet so lange bis der Leader notify() aufruft
Leader Vorgehen
2. Setzt die globale Leader ID auf -1

3. Ruft notify() auf und deblockiert seine Follower

4. Fährt runter um Absturz zu simulieren
Follower
Zusammenfassung
- Testen verteilter Algorithmen ist nicht trivial


- funktionale Tests brauchen einen gewissen Overhead (Testserver, mehrere Threads, etc.)
Aber: Tests sind sehr wichtig !!
1. Motivation

2. Testbegriffe

3. Apache Zookeeper (ZK)

4. verteiltes Locking (ZK Writelock) + Test

5. Leader Election in ZK + Test

6. Testunterstützung
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
17
Mockito Beispiel
CuratorZookeeperClient

curator
= mock(
CuratorZookeeperClient
.
class
);

RetryPolicy

retryPolicy
=
new

RetryOneTime
(1);

when(
curator
.getRetryPolicy()).thenReturn(
retryPolicy);
16
Ephemeral Node
oder
Znode
Barrieren
Full transcript