background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 1 

 

Architektura klient serwer 

6.  Architektura typu Klient – Serwer 
 
 
Architektura klient - serwer
 to sposób przetwarzania informacji 
gdzie proces 

żądający usług i proces dostarczający usług są 

wyodr

ębnione. Jest ona szczególnie wygodna w systemach 

sieciowych i rozproszonych. 
 
 
 

• 

Klient – proces potrzebuj

ący pewnej usługi i zlecający ja 

serwerowi. 

• 

Serwer – proces dostarczaj

ący usługi zlecanej przez klienta. 

 
 

S1

Serwery

K1

Klienci

K2

Kn

S2

S3

Serwer S1 jest

klientem serwera S3

 

Ilustracja architektury klient – serwer. 

 
Procesy klientów i serwerów mog

ą być zlokalizowane na tych 

samych b

ądź innych komputerach. Proces serwera może być 

klientem serwera innej us

ługi.  

 
 
Komunikacja 
Podzia

ł ze względu na separację bajtów: 

• 

Strumieniowa (np. TCP) 

• 

Komunikaty (np. UDP) 

 
Podzia

ł ze względu na synchronizację nadawcy i odbiorcy: 

• 

Synchroniczna 

- zwykle 

• 

Asynchroniczna  

- rzadko 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 2 

 

Architektura klient serwer 

Je

żeli stosowane są funkcje send (),receive () to do realizacji 

zlecenia potrzebne s

ą cztery wywołania tych funkcji: 

 

Aplikacja klienta

send(...)

Aplikacja serwera

receive(...)

oczekiwanie

receive(...)

send(...)

oczekiwanie

realizacja

zlecenie

odpowiedź

 

 

Komunikacja wy

ślij-odbierz 

 
 
W systemach rozproszonych Mach, Amoeba,  Chorus, QNX 
zaprojektowane s

ą protokoły specjalnie przeznaczone dla 

przetwarzania klient – serwer. 
 

• 

DoOperation(port_serwera, zamowienie, 

odpowiedź) 

• 

GetRequest(port_serwera, zamowienie) 

• 

SendReply(port_klienta, odpowiedź) 

 

Aplikacja klienta

DoOperation(...)

Aplikacja serwera

oczekiwanie

GetRequest(...)

SendReply(...)

oczekiwanie

realizacja

zamowienie

odpowiedź

 

Komunikacja zamówienie-odpowied

ź 

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 3 

 

Architektura klient serwer 

Operacja DoOperation(...) dla ka

żdego zamówienia wytwarza jego 

unikalny numer sprawdzany przy odbiorze. Umo

żliwia to 

sprawdzenie czy odpowied

ź jest na dane w parametrze 

zamówienie czy spó

źnioną odpowiedzią na wcześniejsze zlecenie. 

 

typ komunikatu

(zamówienie / odpowied

ź)

identyfikator zamówienia

(liczba naturalna)

parametry zamówienia

 

Struktura komunikatu zamówienie-odpowied

ź 

 
B

łędy komunikacji klient – serwer: 

• 

Komunikaty mog

ą być gubione – (awaria sieci ) 

• 

Procesy mog

ą ulegać awarii 

• 

Nie wyst

ępują uszkodzenia danych 

 
 
Klient nie ma mo

żliwości odróżnienia awarii komunikacji od awarii 

serwera. Gdy serwer nie odpowiada wykonuje N powtórze

ń. 

Pytania:  

• 

po jakim czasie powtarza

ć 

• 

ile razy powtarza

ć 

 
Popularnym protoko

łem obsługi komunikacji klient – serwer jest 

Sun RPC (

ang. Remote Procedures Calls). Do realizacji RPC 

stosowane s

ą trzy protokoły 

• 

R  

- Zamówienie (

ang. Request

• 

RR   - Zamówienie – odpowied

ź (ang. Request-Reply

• 

RRA  - Zamówienie – odpowied

ź – potwierdzenie (ang. 

Request-Reply-Acknowledge)  

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 4 

 

Architektura klient serwer 

klient

serwer

serwer

klient

serwer

klient

protokól  R

protokól  RR

protokól  RRA

 
Powtarzanie zamówie

ń 

Funkcja DoOperation() powtarza zamówienie gdy po pewnym 
czasie brak odpowiedzi. Dopiero gdy po N krotnym powtórzeniu 
brak odpowiedzi zwraca informacj

ę do klienta że serwer jest 

niedost

ępny. 

 
Pomijanie powtórzonych zamówie

ń 

Gdy klient (lub funkcja DoOperation()) retransmituje zamówienie 
serwer mo

że wielokrotnie otrzymać te samo zamówienie. 

Serwer powinien odró

żniać retransmisję komunikatu od 

powtórzenia zamówienia. Gdy zamówienia s

ą numerowane 

serwer powinien zignorowa

ć powtórzone komunikaty tego 

samego zamówienia. 
 
Utracone komunikaty z odpowiedziami. 
Komunikaty z odpowiedzi

ą mogą ulec zagubieniu. Wtedy klient  

(lub funkcja DoOperation()) retransmituje zamówienie. Co si

ę 

zdarzy gdy serwer wykona operacj

ę wielokrotnie? 

 
 
Operacja idempotentna
 (ang. idempotent operation
Operacja idempotentna to taka operacja której wielokrotne 
wykonanie powoduje taki sam skutek jakby by

ła wykonana 

jednokrotnie. 
 
 
 
Operacje idempotentne: dodawanie do zbioru 
Operacje nie idempotentne: dodawanie liczb 
 

Rejestr odpowiedzi 
Aby w przypadku retransmisji tego samego zamówienia serwer nie 
musia

ł wykonywać operacji ponownie stosuje się rejestr 

odpowiedzi. 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 5 

 

Architektura klient serwer 

Rejestr taki powinien zawiera

ć: 

• 

Identyfikator zamówienia 

• 

Identyfikator klienta  

• 

Odpowied

ź 

• 

Czas bie

żący 

 
Po przyj

ściu kolejnego zamówienia odpowiedź na poprzednie 

mo

żna wykasować. Co zrobić gdy klient wysyła ostatnie 

zamówienie i nie informuje serwera 

że się kończy? – limit czasowy 

rejestru odpowiedzi. 

 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 6 

 

Architektura klient serwer 

Rodzaje architektury klient serwer: 

1.  Serwer po

łączeniowy / bezpołączeniowy 

2.  Serwer sekwencyjny / wspó

łbieżny 

3.  Serwer stanowy / bezstanowy 

 

Serwer bezpo

łączeniowy / połączeniowy 

 

Aplikacja klienta

send(...)

Aplikacja serwera

receive(...)

receive(...)

send(...)

 

Serwer bezpo

łączeniowy 

 

Aplikacja klienta

Send(...)

Aplikacja serwera

connect(...)

Receive(...)

close

Receive(...)

Send(...)

close

Rejestracja

accept(...)

Rozlączenie

SIGIO
SIGURG
SIGPIPE

Handler

 

Serwer po

łączeniowy 

Powinny by

ć obsługiwane dwa wątki sterowania: 

1.  Normalny 
2.  Obs

ługi zdarzeń związanych ze zmianą stanu połączenia 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 7 

 

Architektura klient serwer 

Serwer iteracyjny / współbieżny 
 
Serwer iteracyjny 
Serwer iteracyjny – serwer zdolny do obs

ługi jednego zlecenia 

klienta w danym odcinku czasu 
 
t – czas obs

ługi jednego zlecenia 

N – liczba zlece

ń klientów 

T - Czas obs

ługi N zleceń  

 

T = t * N 

 

Klient 1

Serwer

Zlecenie 1

Zlecenie 2

Klient 2

T1

T2

 

Dzia

łanie serwera iteracyjnego 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 8 

 

Architektura klient serwer 

 
Serwer wspó

łbieżny 

Serwer wspó

łbieżny – serwer zdolny do współbieżnej obsługi 

zlece

ń wielu klientów. Składa się z pewnej liczby procesów lub 

w

ątków realizujących zlecenia klientów.  

Klient 1

Serwer

Odpowiedz 1

Zlecenie 1

Odpowiedź 2

Zlecenie 2

Klient 2

T1

T2

W1

W2

Wątek 1 Wątek 2

 

Dzia

łanie serwera współbieżnego 

 

T = t  
 

 
 

K1

KN

Klienci

Wykonawca

N

Wykonawca

1

Zarządca

 
Serwer wspó

łbieżny typu zarządca / wykonawca  

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 9 

 

Architektura klient serwer 

 
Przykład – serwer współbieżny typu zarządca / wykonawca  w 
systemie  QNX 
 
Serwer wspó

łbieżny ze stałą liczbą procesów realizujących 

zlecenia.  
 
Serwer wspó

łbieżny składa się z: 

1.  Procesu g

łównego SG przyjmującego zlecenia i 

synchronizuj

ącego działanie innych procesów. 

2.  Procesów S1,…Sl realizuj

ących usługi klientów K1…Kn. Każdy 

z procesów realizuj

ących usługi  może być wykonywany na 

oddzielnych  maszynach. 

 
 

Klienci

Proces

SG

S6

K1

KN

S2

S7

Wolne procesy

kolejka SQ

K1 K5

K3

Nieobsluzeni klienci

kolejka KQ

S1

Sl

Procesy

wykonawcze

Proces przyjmujący

zgoszenia

 

Struktura serwera wspó

łbieżnego 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 10 

 

Architektura klient serwer 

 
Zasada dzia

łania serwera współbieżnego: 

1.  Proces g

łówny serwera tworzy L procesów usługowych (być 

mo

że na oddzielnych maszynach). 

 
2.  Procesy us

ługowe wykonują operację MsgSend do procesu 

g

łównego i są zablokowane na operacji MsgReply gdyż nie 

udzielono im odpowiedzi. Ich identyfikatory PID s

ą umieszczone 

w kolejce SQ – wolnych procesów us

ługowych. 

 
3.  Gdy przychodz

ą zlecenia od klientów to odbiera je proces 

g

łówny SG. Wykonuje on następujące działania: 

-  Z kolejki SQ pobierany jest wolny proces us

ługowy Sj i 

przydziela mu si

ę do obsługi klienta Ki. 

-  Proces us

ługowy odblokowuje się udzielając mu odpowiedzi 

MsgReply . W parametrach odpowiedzi przekazywane s

ą 

parametry zlecenia. 

-  PID nie obs

łużonego  klienta umieszcza się w kolejce KQ. 

 
4.  Gdy do procesu SG przychodzi komunikat od procesu 

us

ługowego Sj że zakończył on obsługę klienta Ki to: 

-  PID procesu obs

ługowego Sj dodawany jest do kolejki SQ. 

-  PID procesu klienta Ki usuwany jest z kolejki KQ. 
-  Wynik dostarczony przez proces us

ługowy odbierany jest z 

bufora funkcji MsgReceive. 

-  Procesowi klienta Ki udzielana jest odpowied

ź za pomocą 

funkcji MsgReply a wyniki przekazywane jako parametry . 

-  Proces klienta Ki jest odblokowany na czym ko

ńczy się jego 

obs

ługa. 

 
 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 11 

 

Architektura klient serwer 

 
 
 

pid_t SQ[MAX_PROC]; //Kolejka procesów usługowych 
pid_t KQ[MAX_KLI];  //Kolejka nieobsłużonych klientów 
 

 
main(void) { 
  pid_t pid; 

  
  // Utworzenie procesów usługowych S1,S2… ------ 
  for(j=0;j<MAX_PROC;j++) { 

      // Utwórz proces wykonawczy Sj 
      pid = spawnl(P_NOWAIT,”proc”, ”proc”,atoi(j),NULL); 
      Umieść proces Sj w kolejce SQ; 

  }  
 

  do { // Pętla główna ------------------------------ 
    pid = MsgReceive(0,&msg,sizeof(msg),…); 
    // Komunikaty od procesów usługowych ----------- 

    if( Komunikat od procesu Sj) { 
     if(Realizacja zlecenia Ki przez Sj) { 
        Odblokuj klienta Ki i usuń do Ki z KQ; 

        MsgReply(Ki,…); 
     } 
     Umieść proces Sj w kolejce SQ; 

    } 
    // Komunikaty od procesów Klientów ------------ 

    if( Komunikat od klienta Ki) { 
       Pobierz z SQ proces Sj; 
       Przekaż mu zlecenie od Ki; 

       Odblokuj serwer Sj – Reply(Sj,…); 
       Wstaw Ki do KQ; 
    }    

  } while(……); 
}

 

Szkic kodu serwera wspó

łbieżnego 

 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 12 

 

Architektura klient serwer 

Serwer bezstanowy / stanowy 
 
Serwer bezstanowy
 (ang. stateless server) - serwer, który nie 
przechowuje 

żadnych informacji o kliencie. Zwracając się do 

serwera bezstanowego, klient musi ka

żdorazowo określić komplet 

informacji dotycz

ących usługi. 

 
Serwer stanowy (ang. Stateful server) – serwer przechowuje 
informacje o kliencie. S

ą dwa typy informacji przechowywanej 

przez serwer: 
-  Informacja globalna 
-  Informacja o stanie sesji 
  
Informacja globalna – informacja przechowywana przez ca

ły okres 

aktywno

ści serwera.  

 
Przyk

ład – protokół licznikowy 

Gdy dowolny klient zwraca si

ę do serwera to licznik zwiększany 

jest o jeden. Warto

ść tego licznika zwracana jest do klienta. 

 
 
Informacja o stanie sesji (

ang. Session state information

Dla pewnych protoko

łów i aplikacji serwer musi przechowywać 

pewne informacje o stanie sesji. 
 
Informacja o stanie sesji obejmuje: 

1.  Nazw

ę pliku,  

2.  bie

żący numer bloku,  

3.  rodzaj akcji (pobieranie, wysy

łanie) 

 
W serwerze bezstanowym informacja o stanie sesji 
przechowywana jest u klienta. 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 13 

 

Architektura klient serwer 

Nazwa pliku

Serwer FTP

Klient FTP

Identyfikator pliku -  ID

Numer bloku NR

Identyfikator pliku -  ID

Wyslij(ID, blok 0)

Dane z pliku ID  bloku 0

Wyslij( ID, blok 1)

Dane z pliku ID  bloku 1

 

Protokó

ł FTP – serwer bezstanowy 

 
W serwerze stanowym informacja o stanie sesji przechowywana 
jest w serwerze. 
 

Nazwa pliku

Serwer FTP

Klient FTP

ID1

NR1

wynik

Wyslij następny blok

Dane z pliku ID  bloku 0

Wyslij następny blok

Dane z pliku ID  bloku 1

ID2

NR2

Numer bloku

Ident. pliku

klient 1

klient 2

 

Protokó

ł FTP – serwer stanowy 

 
 

PDF created with pdfFactory trial version 

www.pdffactory.com

background image

J. U

łasiewicz      Programowanie aplikacji współbieżnych  i rozproszonych                 14 

 

Architektura klient serwer 

 
Przyk

ład - serwery usług systemu QNX6 Neutrino 

System QNX sk

łada się z mikrojądra i zbioru serwerów rożnych 

us

ług zwanych administratorami. Pewne serwery mogą być 

klientami innych serwerów. 
 

PA1

PA2

PAn

Procesy aplikacyjne

Administrator

plików

szeregowanie

wątków

IPC komunikacja

międzyprocesowe

timery

obsługa  przerwań

synchroni-

zacja

MIKROJĄDRO

przerwania

Administrator

sieci

Administrator

procesów

procnto

Administratory
systemowe

 

 
 

procnto 

Zarz

ądzanie pamięcią, wątkami i 

procesami 

devb-eide 

Proces obs

ługi dysków stałych typu IDE 

devb-fdc 

Proces  obs

ługi stacji dyskietek 

devc-par 

Proces  obs

ługi portu równoległego 

devc-ser8250  Proces  obsługi portu szeregowego 

RS232 

devc-con 

Proces  obs

ługi konsoli 

io-net 

Ogólny administrator sieci 

io-graphics 

Proces  obs

ługi karty graficznej 

Photon 

Proces  interfejsu graficznego 

Tabela 6-1 Ważniejsze procesy systemowe systemu QNX6 

Neutrino 

 
 
 
 

PDF created with pdfFactory trial version 

www.pdffactory.com