projekt alcatraz java rmi / spread - gruppe a4. agenda architektur des gesamtsystems ablauf zwischen...
TRANSCRIPT
Projekt Alcatraz
Java RMI / Spread - Gruppe A4
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
3© 2009 FH Technikum Wien
Architektur
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
Registrierungs Form Client
5© 2009 FH Technikum Wien
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
Zeitlicher Ablauf
7© 2009 FH Technikum Wien
EVERY CLIENT
RMI - REGISTRY
SERVER
BIND
LOOKUP SERVER
REGISTER
START THE GAME
UNDEFINED TIMESPAN
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
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
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
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:
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
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;
}
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
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
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
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