projekt alcatraz java rmi / spread - gruppe a4. agenda architektur des gesamtsystems ablauf zwischen...

17
Projekt Alcatraz Java RMI / Spread - Gruppe A4

Upload: walburga-lautz

Post on 05-Apr-2015

123 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Projekt Alcatraz

Java RMI / Spread - Gruppe A4

Page 2: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Agenda

Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle tolerieren Remote Interface Definition Server Remote Interface Definition Client

2© 2009 FH Technikum Wien

Page 3: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

3© 2009 FH Technikum Wien

Architektur

Page 4: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Ablauf Server

4© 2009 FH Technikum Wien

RMI Registry and SPREAD Deamon running

Is Master ServerBIND SPREAD

WAITANZ == Maximu

m

START GAME

ANZ >1

REGISTER

FALSE ANZ<4

FORCE START

TRUE

FALSE

TRUE

TRUE

Start Server

Backup Server

I‘M BACKUP I HAVE TO WAIT

FALSE

Page 5: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Registrierungs Form Client

5© 2009 FH Technikum Wien

Page 6: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Ablauf Client

6© 2009 FH Technikum Wien

START CONNECT REGISTER

WAIT

MANUAL START

PLAYEND

USER ENTERS DATA LOOKUP

REGISTER

START BUTTON

ANZ == MAX START GAME ON CLIENTSFINISH

ANZ== 1

ANZ> 1 START GAME ON CLIENTS

Page 7: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Zeitlicher Ablauf

7© 2009 FH Technikum Wien

EVERY CLIENT

RMI - REGISTRY

SERVER

BIND

LOOKUP SERVER

REGISTER

START THE GAME

UNDEFINED TIMESPAN

Page 8: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Client YClient X

Client 2 Client

8© 2009 FH Technikum Wien

RMI: Player, Prisoner, Row und Column were sent

RMI: Player, Prisoner, Row und Column were sent

Zug 1

Do Remote Move

WAIT

Do Local Move

Zug 2

Do RemoteMove

WAIT

Do Local Move

RMI: NextOne()

RMI: NextOne()

Zug 3 WAIT

Page 9: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Client 2 Client

Fehlerfall:– Spielpartner antwortet nicht Timeout

Spielabbruch

– Der zu ziehende Spieler zieht nicht Human Error – Der Client ist manuell zu beenden

– Spielzug Übertragung im Transaction Modus Der nächste in der Reihe bekommt seinen Zug erst, wenn

bei alle anderen Clients der Zug erfolgreich zugestellt

wurde.

9© 2009 FH Technikum Wien

Page 10: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Serverausfälle

10© 2009 FH Technikum Wien

W

Start Server

Join spread group as slave

Initial Backup

Master Already Exists

Bind to rmi-Registry

Client has Looked Up

Master Server

New Clients would be

announced to each BackupNormal

Backup Server

Request Client-Objects from Master

Spread

Yes

NoClient want to register

Page 11: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

11© 2009 FH Technikum Wien

Serverausfälle

Failure of Master

Detected by Backup

Backup becomes

MasterElection of new Master

MasterSends Update to Group

Verwendung von Active Replication über Spread Election Mode = Der erste der es erkennt Verwendung von Verteilten Transaktion erst wenn

jeder die Änderung erhalten hat, gilt sie

• Failure des Backup Servers Kein Problem. Restart durch Admin

• Failure des Master Servers:

Page 12: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Interface IBackupServer

public interface IBackupServer extends Remote

{

public Boolean IsAlive() throws RemoteException;

public Boolean IsMaster() throws RemoteException;

public void syncGroup(Object[] data) throws Exception;

}

12© 2009 FH Technikum Wien

Page 13: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Interface IGameServer

13© 2009 FH Technikum Wien

public interface IGameServer extends Remote

{

public boolean startGameNow() throws RemoteException;

public void registerClient(IClient client) throws RemoteException, IImNotMasterServerException;

}

Page 14: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Klasse GameServer

Attribute:– Liste der aktive Server(inklusive MasterServer)– Referenz auf MasterServer– Liste von Games

Game wird die einzelnen Clients enthalten Implementiert AdvancedMessageListener Interface

dadurch bekommt man Änderungen in der Server Gruppe mit

14© 2009 FH Technikum Wien

Page 15: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Interface IGameClient 1/2

public Boolean IsAlive() throws RemoteException;

public void doRemoteMove(Player player, Prisoner prisoner, int rowOrCol, int row, int col) throws RemoteException;

public void nextOne() throws RemoteException;

public void doStartGame(List<IClient> others,String firstPlayerId) throws RemoteException;

15© 2009 FH Technikum Wien

Page 16: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Interface IGameClient 2/2

public String getPlayerName() throws RemoteException;

public void setPlayerId(String playerId) throws RemoteException;

public String getPlayerId() throws RemoteException;

16© 2009 FH Technikum Wien

Page 17: Projekt Alcatraz Java RMI / Spread - Gruppe A4. Agenda Architektur des Gesamtsystems Ablauf zwischen Server und Client Ablauf Client 2 Client Serverausfälle

Klasse GameClient

Attribute– IsCurrentActivePlayer– Liste von Clients(Mitspieler)– Liste von Servern(kann auch nur einer sein)– Spielername– SpielerID – wird vom Server vergeben

Leitet von UnicastRemoteObject abdadurch ist der Proxy serialisierbar und somit als Parameter über RMI versendbar

System.setSecurityManager(new RMISecurityManager()); Server Namen bzw Adressen werden in einem XML-Config

File gespeichert

17© 2009 FH Technikum Wien