Você está na página 1de 11

Tipos de Servidores

• Com Estado X Sem Estado

• Sequenciais X Concorrentes

• Com Conexão X Sem Conexão

Thaís Batista – UFRN - DIMAp

Servidores com estado


• Servidores com estado armazenam informação
sobre cada cliente.

• Operações podem ser implementadas de forma


mais eficiente.

• Mensagens com pedidos podem ser menores.

Thaís Batista – UFRN - DIMAp

Page 1
Servidores com estado

servidor
de arquivos disco
p1-m1

cliente arq. aberto posição corrente


p1-m1 artigo.tex 20
p3-m2 p3-m2 passwd 10
p2-m1 teste.c 0
p4-m3 .login 5
tabela de estado p5-m3 script 58
p2-m1 p4-m3 .cshrc 12
p1-m1 artigo.bib 0
p3-m2 group 31
... p1-m1 a4.sty 23

Thaís Batista – UFRN - DIMAp

Servidores sem estado


• Em um servidor sem estado cada pedido deve
conter toda a informação necessária para seu
processamento.
• Servidores sem estado apresentam maior
escalabilidade.
– escalabilidade: comportamento quando o número de clientes
cresce.
• A implementação de um servidor sem estado é
muito mais simples que a de um servidor com
estado.

Thaís Batista – UFRN - DIMAp

Page 2
Servidores sem estado

p1-m1

servidor
p3-m2 disco
de arquivos

p2-m1
Cada pedido deve conter informação completa sobre
o acesso a arquivo (nome do arquivo, modo, posição, etc)
...

Thaís Batista – UFRN - DIMAp

Servidores sequenciais
servidor

loop
recebe pedido
trata pedido
envia resposta
cliente 4
fim loop
cliente 2
cliente 1
Fila de clientes cliente 3
a serem atendidos

Thaís Batista – UFRN - DIMAp

Page 3
Servidores Sequenciais

• Fáceis de programar e modificar


• Adequados para situações onde a execução do
serviço é muito rápida portanto o tempo de
resposta não é alto
• Trabalham melhor com protocolos sem conexão
mas podem ser usados também com protocolos
com conexão (o custo de estabelecer a conexão
pode não compensar)
• Em geral não guardam estado das solicitações

Thaís Batista – UFRN - DIMAp

Servidores Concorrentes
servidor

p1-m1

pode atender
p3-m2 diversos clientes
simultaneamente

p2-m1

Thaís Batista – UFRN - DIMAp

Page 4
Servidores Concorrentes
Multiprocesso
SERVIDOR CONCORRENTE
Servidor Mestre
p2-m1 requisição
iniciar de cliente
Cria
inicia Bloqueado
Escravo
comunicação termina
serviço
p5-m4

requisita
p3-m2 serviços

Servidores escravos

Thaís Batista – UFRN - DIMAp

Servidores Concorrentes
Monoprocesso
SERVIDOR CONCORRENTE
p2-m1
Servidor Único
requisição
iniciar de cliente
Bloqueado identifica cliente
trata pedido
p2-m4 termina
serviço

p5-m4

Thaís Batista – UFRN - DIMAp

Page 5
Servidores Concorrentes
Monoprocesso
• O servidor usa um único processo para oferecer
concorrência aparente para os clientes
• Apropriado para aplicações onde I/O domina
– criação de processos e troca de contextos entre processos
implica em alto custo
• O servidor usa I/O assíncrono para oferecer
concorrência aparente para os clientes
– a chegada de dados dispara a execução
– suporte para I/O assíncrono através da chamada Select
– o servidor passa o conjunto de descritores de socket como
argumento da chamada Select
• O processo servidor gerencia múltiplos sockets e
faz o papel de mestre e de escravo

Thaís Batista – UFRN - DIMAp

Algoritmo do Servidor Concorrente,


Orientado a Conexão e Monoprocesso
1. Cria um Socket
2. Associa a uma porta
3. Adiciona o descritor do socket a uma lista
4. Chama Select para observar I/O na lista de sockets
5. Se o socket original é selecionado, chama Accept
para obter a próxima conexão e adiciona o novo
socket a lista
Se algum outro socket é selecionado, chama read
para obter a próxima solicitação. Faz o
processamento e chama write para enviar a
resposta
6. Continua o processamento do passo 4
Thaís Batista – UFRN - DIMAp

Page 6
Servidores Concorrentes
multiprocesso
• O processo mestre nunca comunica-se
diretamente com o cliente

• Quanto aos processos Escravos:


– Pré-alocação de Escravos
– Alocação de Escravos sob Demanda

Thaís Batista – UFRN - DIMAp

Alocação sob Demanda


• Escravos são criados à medida que o servidor
recebe novas solicitações
• Os escravos são finalizados quando terminam de
atender uma solicitação
• Vantagem: não aloca recursos do sistema sem
necessidade
• Desvantagem: a criação do processo pode ser uma
tarefa demorada (principalmente em sistemas com
único processador)

Thaís Batista – UFRN - DIMAp

Page 7
Pré-alocação
• Consiste em criar N processos escravos quando o
mestre começa a executar
• Quando uma solicitação chega, um dos processos
escravos é escolhido para receber a solicitação e
tratá-la
• Os escravos não são finalizados quando terminam
de atender alguma solicitação
• Evita o custo de criar processos quando a
solicitação chega ao servidor
• Pode atender os clientes de forma mais rápida que
na alocação sob demanda

Thaís Batista – UFRN - DIMAp

Servidores Concorrentes
• A maior parte usa vários processos

• Trabalham melhor com protocolo com conexão


pois o custo de criação de processos não é
desprezível. Em protocolos sem conexão o
processo escravo termina após atender 1 única
solicitação).

Thaís Batista – UFRN - DIMAp

Page 8
Usando programas separados
como Escravos

Thaís Batista – UFRN - DIMAp

Tipos de Servidores

sem estado com estado

sequencial

concorrente

Thaís Batista – UFRN - DIMAp

Page 9
Servidores TCP/IP
• Servidores com estado em geral são
implementados por comunicação com conexão.
• Interações com servidores com estado em geral
são longas... necessidade de servidor concorrente!
– modelo mais comum neste caso é o servidor concorrente
multiprocesso!
sem com (conexão)

sequencial

concorrente

Thaís Batista – UFRN - DIMAp

Servidores Concorrentes
Monoprocesso
mestre Processo
Servidor

socket para sockets para conexões


Sistema
solicitação individuais Operacional
de conexão

Thaís Batista – UFRN - DIMAp

Page 10
Servidores Concorrentes
Multiprocesso
mestre Processos do
servidor

Escravo 1 Escravo 2 Escravo 3

socket para sockets para conexões


Sistema
solicitação individuais Operacional
de conexão

Thaís Batista – UFRN - DIMAp

Page 11