Klient serwer 8

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


Wyszukiwarka

Podobne podstrony:
5.1.13 Sieć klient-serwer, 5.1 Okablowanie sieci LAN
klient serwer
Klient serwer
1 Model klient serwerid 9461 Nieznany (2)
Systemy klient serwer
Różnice sieci Klient Serwer Sieć równorzędna
5.1.13 Sieć klient-serwer, 5.1 Okablowanie sieci LAN
klient serwer
Mateusz Grauman Klient Serwer
PZ klient serwer
Klientelizm, kumoterstwo, nepotyzm
obsluga klienta 1
ING Lojalność wobec klientów na podstawie ING Banku Śląskiego S A
Analiza rentowności klientów przedsiębiorstwa Kospan
serwer wydruku
Logistyczna obsługa klienta Kempny

więcej podobnych podstron