Sd Cliente Servidor

24
SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS (CLIENTE (CLIENTE – SERVIDOR) SERVIDOR) CLIENTE CLIENTE - SERVIDOR SERVIDOR Segundo Tanenbaum, uma das estruturas mais comuns para os sistemas distribuídos é a do CLIENTE-SERVIDOR. 09/10/2012 Caracterização Endereçamento Primitivas Bloqueantes / Não-bloqueantes Bufferizadas / Não-bufferizadas Confiabilidade 2

Transcript of Sd Cliente Servidor

Page 1: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

CLIENTE CLIENTE -- SERVIDORSERVIDOR

Segundo Tanenbaum, uma das estruturas mais comuns para os

sistemas distribuídos é a do CLIENTE-SERVIDOR.

09/10/2012

� Caracterização

� Endereçamento

� Primitivas

• Bloqueantes / Não-bloqueantes

• Bufferizadas / Não-bufferizadas

� Confiabilidade

2

Page 2: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Muitos aplicativos de negócios a serem escritos hoje, utilizam o

modelo cliente-servidor.

DEFINIÇÃO:DEFINIÇÃO:

09/10/2012

Implica em um processamento cooperativo de requisições submetidas por um

cliente para o servidor que as processa e retorna os resultados para o cliente.

Neste modelo o processamento da aplicação é dividido entre o cliente e o

servidor. O processamento é iniciado e parcialmente controlado pelo cliente e

tanto cliente quanto o servidor cooperam para executar com sucesso uma

aplicação.

3

Page 3: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

CLIENTE CLIENTE -- SERVIDOR:SERVIDOR:

Para evitar o overhead de protocolos como nos modelos OSI e TCP/IP, o

modelo cliente-servidor se baseia num protocolo simples, sem conexão, chamado

pedido- resposta (request-reply).

As camadas 1 (Física) e 2 (Enlace de Dados) do modelo OSI, são

responsáveis por enviar e receber pacotes entre clientes e servidores.

09/10/2012

responsáveis por enviar e receber pacotes entre clientes e servidores.

A camada 5 (Sessão) define um conjunto de requisições e respostas.

Os serviços de comunicação são implementados através de chamada do

sistema (system calls).

4

Page 4: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Também denominado de “front-end” e “workstation”, é um processo que interage

com o usuário através de uma interface gráfica ou não, permitindo consultas ou

comandos para a recuperação de dados e análise, e representando o meio pela qual os

CLIENTE CLIENTE

09/10/2012

resultados são apresentados.

O PROCESSO CLIENTE APRESENTA ALGUMAS CARACTERÍSTICAS DISTINTAS:

�� ÉÉ umum processoprocesso ativoativo nana relaçãorelação clientecliente--servidorservidor ..�� IniciaInicia ee terminatermina asas conversaçõesconversações comcom osos servidores,servidores, solicitandosolicitando serviçosserviços distribuídosdistribuídos ..�� NãoNão sese comunicacomunica comcom outrosoutros clientesclientes ..�� TornaTorna aa rederede transparentetransparente aoao usuáriousuário..

5

Page 5: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Também denominado “back-end”, fornece um determinado serviço que

fica disponível para todo cliente que o necessita. A natureza e o escopo dos

serviços são definidos pelo objetivo da aplicação cliente-servidor.

SUAS PROPRIEDADES DISTINTAS SÃO:

SERVIDOR: SERVIDOR:

09/10/2012

�� ÉÉ oo processoprocesso reativoreativo nana aplicaçãoaplicação cliente/servidorcliente/servidor ..�� PossuiPossui umauma execuçãoexecução contínuacontínua ..�� RecebeRecebe ee responderesponde àsàs solicitaçõessolicitações dosdos clientesclientes ..�� NãoNão sese comunicacomunica comcom outrosoutros servidoresservidores enquantoenquanto estiverestiver fazendofazendo oo papelpapel dede

servidorservidor ..�� PrestaPresta serviçosserviços distribuídosdistribuídos ..�� AtendeAtende aa diversosdiversos clientesclientes simultaneamentesimultaneamente ..

6

Page 6: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

SERVIDOR:SERVIDOR:

O servidor pode atender a vários clientes ao mesmo tempo fornecendo

funções ou serviços; em alguns casos, o cliente pode acessar vários servidores.

ALGUNS EXEMPLOS DE SERVIDORES E SEUS SERVIÇOS:ALGUNS EXEMPLOS DE SERVIDORES E SEUS SERVIÇOS:

09/10/2012

�� ServidoresServidores dede arquivosarquivos�� ServidoresServidores dede bancobanco dede dadosdados�� ServidoresServidores dede transaçõestransações�� ServidoresServidores dede objetosobjetos�� Servidores WebServidores Web�� Servidores de Servidores de EE--mailmail

ALGUNS EXEMPLOS DE SERVIDORES E SEUS SERVIÇOS:ALGUNS EXEMPLOS DE SERVIDORES E SEUS SERVIÇOS:

7

Page 7: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

� Simplicidade

� Eficiência(em muitos casos)

VANTAGENS:VANTAGENS:

DESVANTAGENS:DESVANTAGENS:

09/10/2012

� Um servidor poderá ficar sobrecarregado caso receba mais solicitações

simultâneas dos clientes do que pode suportar;

� Este modelo não possui a robustez de uma rede baseada em P2P. Na arquitetura

cliente-servidor, se um servidor crítico falha, os pedidos dos clientes não poderão ser

cumpridos.

8

Page 8: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

MOTIVAÇÃO:MOTIVAÇÃO:

� Distribuição da carga de trabalho de componentes de sistema.

� Esta distribuição da carga de trabalho toma diferentes formas dependendo da

aplicação em particular.

ARQUITETURA RESULTANTE:ARQUITETURA RESULTANTE:

� Flexível

� Versátil

09/10/2012

� A parte cliente e a parte servidor podem operar em diferentes plataformas.

� Tanto a plataforma do cliente como a do servidor podem ser atualizadas sem que

se tenha que atualizar a outra plataforma.

� A interface gráfica geralmente reside no cliente (ex: web-browsers).

� Compartilhamento de recursos.

CARACTERÍSTICAS:CARACTERÍSTICAS:

� Versátil

� Custo adequado

9

Page 9: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Um cliente para mandar mensagens a um servidor, primeiro precisa saber

o endereço do servidor, desse modo, é preciso estabelecer um esquema de

identificação.

Existem Algumas formas de endereçamento.

ENDEREÇAMENTOENDEREÇAMENTO

09/10/2012

As principais sãoAs principais são::

� Endereçamento por máquina.processo� Endereçamento por broadcast� Endereçamento por servidor de nomes

Existem Algumas formas de endereçamento.

10

Page 10: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

MÁQUINA.PROCESSOMÁQUINA.PROCESSO

1. A máquina cliente conhece a localização do servidor, então utiliza uma

combinação entre número da máquina e o número do processo para enviar uma

solicitação de endereço ao servidor .

2. O servidor então responde enviando o endereço a máquina cliente.

09/10/2012

2. O servidor então responde enviando o endereço a máquina cliente.

Principais problemas: Não é transparente e utiliza um processo por máquina.

11

cliente servidor2

1. Request(Pedido) para 243.0

2. Reply(Resposta) para 199.12

1 243

0

199

12

Page 11: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

BROADCASTBROADCAST

1. A máquina cliente envia um pacote broadcast de localização para toda a rede

com o objetivo de localizar o servidor e obter um endereço.

2. O servidor responde ao cliente informando seu endereço.

3. A máquina cliente envia uma solicitação de endereço.

4. O servidor envia um endereço para a máquina cliente.

09/10/2012

4. O servidor envia um endereço para a máquina cliente.

Principal Problema: Sobrecarga no sistema

12

cliente servidor

3

4

1 2

1. Broadcast

2. “Here I am”

3. Pedido

4. Resposta

Page 12: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Neste esquema os servidores são indicados por um identificador de alto nível

(nome ASCII). Quando um cliente executa uma requisição a um servidor pela

primeira vez, uma mensagem especial é enviada para um servidor de mapeamento

ou servidor de nomes solicitando o número da máquina onde está o servidor.

SERVIDORSERVIDOR DE DE NOMESNOMES

09/10/2012

Principal Problema: Centralização.

clienteservidor

de nomes

1

2

servidor

4

3

13

Page 13: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS PRIMITIVAS BLOQUEANTESBLOQUEANTES (SÍNCRONAS)(SÍNCRONAS)

O send, enquanto a mensagem está sendo enviada ao

servidor, o processo cliente fica bloqueado.

09/10/2012

O receive fica bloqueado até que alguma mensagem

chegue ou até um timeout.

14

Page 14: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS PRIMITIVAS BLOQUEANTESBLOQUEANTES (SÍNCRONAS)(SÍNCRONAS)

O processo fica bloqueado durante a transferência de mensagem.

Melhor opção para envio de mensagens em condições normais.

Vantagens:

09/10/2012

Vantagens:

� Simples de entender

� Simples de implementar

� Performance para envio de mensagem

Desvantagens:

� CPU fica ociosa durante a transmissão

15

Page 15: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS NÃOPRIMITIVAS NÃO--BLOQUEANTESBLOQUEANTES

O send retorna o controle imediatamente, antes da mensagem

ser realmente enviada.

09/10/2012

O receive passa para o kernel o ponteiro para o buffer e retorna

imediatamente, antes de receber a mensagem.

“Em algumas abordagens o receive não-bloqueante é aquele que só recebe quando

já existem mensagens e fica bloqueado até completar a recepção”.

16

Page 16: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS NÃOPRIMITIVAS NÃO--BLOQUEANTESBLOQUEANTESPrimitivas não-bloqueantes com cópia

O kernel copia a mensagem para um buffer interno e então libera oprocesso para continuar.

Desvantagens:Performance

09/10/2012

Vantagens:Sobrepor processamento e transmissão de mensagens

Primitivas não-bloqueantes com interrupçãoInterrompe o processo que enviou a mensagem quando o bufferestiver livre para reutilização.

Desvantagens:Programação Difícil

Vantagens:Performance17

Page 17: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS PRIMITIVAS BUFFERIZADASBUFFERIZADAS

Existe um buffer para armazenar mensagens inesperadas.

09/10/2012

A primitiva de bufferização mais empregada define

estruturas de dados chamadas mailbox.

18

Page 18: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS PRIMITIVAS BUFFERIZADASBUFFERIZADAS

Primitivas bufferizadas: Mailboxes

Um processo que está interessado em receber mensagens

avisa o kernel para criar uma mailbox informando o endereço de

origem das mensagens.

Todas as mensagens são colocadas na mailbox e uma chamada

09/10/2012

Todas as mensagens são colocadas na mailbox e uma chamada

a receive simplesmente remove mensagens dela.

Vantagens:

Reduz ainda mais a chance de mensagens serem descartadas.

Desvantagens:

Mailboxes são finitas e podem necessitar de estratégias

análogas as adotadas anteriormente.

19

Page 19: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

PRIMITIVAS PRIMITIVAS NÃONÃO--BUFFERIZADASBUFFERIZADAS

O buffer para armazenar a mensagem deve ser especificado pelo programador.

Existem duas estratégias a serem empregadas no caso de um send do cliente,

sem um receive do servidor:

� Descartar mensagens inesperadas

Vantagens:

09/10/2012

Vantagens:

Implementação

Desvantagens:

O cliente pode ficar reenviando mensagens

Podem ocorrer casos em que o cliente desista de enviar a mensagem

� Temporariamente manter mensagens inesperadas

Vantagens:

Reduz a chance da mensagem ser descartada

Desvantagens:

Introduz problema de gerenciamento e armazenamento de mensagens inesperadas20

Page 20: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Não se pode de maneira alguma sofrer perda ou adulteração nos dados.

Deve-se manter a integridade total dos dados.

Três diferentes alternativas podem ser Três diferentes alternativas podem ser utilizadas utilizadas para questões de para questões de confiabilidade:confiabilidade:

CONFIABILIDADECONFIABILIDADE

09/10/2012

1. Assumir que as primitivas não são confiáveis, alterando a semântica

do send .

� O sistema não dá garantias (email).

� Requisitar que o kernel da máquina recebedora envie um ack de volta para

o enviante.

confiabilidade:confiabilidade:

21

Page 21: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

2. Primitivas confiáveis com mecanismos de acknowledgment do tipo:

Request - Ack - Reply - Ack

� Somente quando o Ack é recebido, o processo é liberado.

� O acknowledgement é feito entre kernels (transparente para o cliente ou

servidor).

09/10/2012

Cliente Servidor

1

3

Kernel Kernel4

2

1. Request

2. Ack

3. Reply

4. Ack

22

Page 22: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

3. Primitivas confiáveis com mecanismos de acknowledgment do tipo:

Request - Reply - Ack

� O Reply serve como um ack

� o cliente fica bloqueado até a mensagen de reply chegar

� se a mensagem de reply demorar, o cliente reenvia a requisição

� em alguns kernels não é necessário o ack

09/10/2012

1

2Cliente Servidor

Kernel Kernel3

1. Request

2. Reply

3. Ack

23

Page 23: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

Outras Questões:Outras Questões:

As redes têm um tamanho máximo de pacote, mensagens maiores devem ser

quebradas.

O acknowledgment pode ser utilizado por pacote ou por mensagem,

dependendo da taxa de erros da rede.

09/10/2012

dependendo da taxa de erros da rede.

24

Page 24: Sd Cliente Servidor

SISTEMAS DISTRIBUÍDOSSISTEMAS DISTRIBUÍDOS(CLIENTE (CLIENTE –– SERVIDOR)SERVIDOR)

REFERÊNCIAS BIBLIOGRÁFICAS:REFERÊNCIAS BIBLIOGRÁFICAS:

http://www.margalho.pro.br/aulas/sd/sd03.pdf

http://saloon.inf.ufrgs.br/twiki-data/Main/MaterialDeApoio/cap2DosTan-cliente-servidor-v3-

ta60-nov2005.pdf

http://elderstroparo.blogspot.com.br/2010/05/cliente-servidor.html

09/10/2012

http://www.cin.ufpe.br/~avmm/arquivos/provas%20software/resuminho2.pdf

ftp://ftp.inf.ufrgs.br/pub/geyer/SOII/slides/SlidesAlunos/SD/SD03-cliente-servidor-v10-mac-

nov2011-red.pdf

http://www4.pucsp.br/~dcc-tec2/Semana_02_Comunicacao.pdf

http://www.acso.uneb.br/leandro/NOVOSITE/academic/docs/sdII/004.pdf

http://www.cin.ufpe.br/~cagf/sd/aula06.ppt

25