• Nenhum resultado encontrado

Processos, Threads e o Modelo Cliente/Servidor

N/A
N/A
Protected

Academic year: 2021

Share "Processos, Threads e o Modelo Cliente/Servidor"

Copied!
58
0
0

Texto

(1)

Processos, Threads e o Modelo Cliente/Servidor

Francisco Jos´e da Silva e Silva

Laborat´orio de Sistemas Distribu´ıdos (LSD) Departamento de Inform´atica / UFMA

http://www.lsd.deinf.ufma.br

29 de novembro de 2011

(2)

1 Threads em Sistemas Distribu´ıdos

2 Migra¸c˜ao de C´odigo

3 Modelo Cliente/Servidor

4 Distribui¸c˜ao Horizontal e Vertical do Modelo Cliente/Servidor

(3)

Threads em Sistemas Distribu´ıdos

(4)

Introdu¸c˜ao

Processos formam um importante bloco de constru¸c˜ao em sistemas

distribu´ıdos;

(5)

Defini¸c˜ao de Thread

Mecanismo que permite a um processo ter mais de um fluxo de controle;

Threads compartilham o mesmo espa¸co de endere¸camento.

(6)

Threads em Sistemas n˜ao Distribu´ıdos: Benef´ıcios

O processo inteiro n˜ao necessita ficar bloqueado ao realizar uma chamada bloqueante ao sistema;

Exemplo de uso: planilha de c´alculo

Pode-se explorar paralelismo em sistemas multiprocessados; Simplifica o desenvolvimento de aplica¸c˜oes inerentemente concorrentes;

Melhor desempenho para aplica¸c˜oes complexas que tradicionalmente

eram implementadas atrav´es de m´ultiplos processos comunicando-se

(7)

Threads em Sistemas Distribu´ıdos: Clientes multithreaded

Clientes multithreaded. Exemplo: Web Browsers:

Documento HTML consiste de um arquivo de texto e v´arios outros de

imagens, ´ıcones, etc...

Pode-se esconder a grande latˆencia na comunica¸c˜ao apresentando cada objeto assim que estiver dispon´ıvel: estabelecimento de m´ultiplas conex˜oes

Melhoria no desempenho geral pode ser obtido no caso de servidores Web replicados em v´arias m´aquinas.

(8)

Threads em Sistemas Distribu´ıdos: M´ultiplos RPCs

Considere um cliente que realiza diversos RPCs, cada um para uma thread diferente;

Ele deve esperar o retorno de cada resultado;

Alternativamente, poder-se-ia realizar as RPCs atrav´es de threads independentes;

Se as RPCs s˜ao destinadas a servidores diferentes, pode-se esperar um

(9)

Servidores multithreaded: Objetivos

Melhor desempenho:

Iniciar uma thread para tratar uma requisi¸c˜ao custa menos que iniciar um novo processo;

Servidores que possuem uma ´unica thread n˜ao s˜ao escal´aveis a sistemas multiprocessados;

Pode-se esconder a latˆencia da rede, reagindo a uma nova requisi¸c˜ao enquanto os resultados da anterior estiverem sendo entregues.

Melhor estrutura:

Muitos servidores demandam fortemente E/S. A utiliza¸c˜ao de chamadas bloqueantes simplifica a estrutura do c´odigo;

Programas multithreaded tendem a ser menores e mais f´aceis de entender, por possu´ırem um fluxo de controle simplificado.

(10)
(11)

Sincroniza¸c˜ao de Programas Concorrentes

Sem´aforos; Monitores.

(12)
(13)

Migra¸c˜ao de C´odigo

Carzaniga et al. define mobilidade de c´odigo como a capacidade de mudar

dinamicamente as liga¸c˜oes entre o c´odigo e a localiza¸c˜ao onde executa.

(14)

Migra¸c˜ao de C´odigo: Motiva¸c˜oes

Melhoria do desempenho global: processos podem ser movidos de m´aquinas muito carregadas para m´aquinas com cargas mais leves. Carga ´e usualmente expressa em termos do comprimento da fila de processos da CPU ou de sua utiliza¸c˜ao;

Diminui¸c˜ao da carga na rede: Exemplo: uma aplica¸c˜ao cliente que requeira muitas opera¸c˜oes em banco de dados ou valida¸c˜ao de formul´ario no cliente;

Explora¸c˜ao de processamento paralelo: Exemplo: busca de

informa¸c˜oes na Web atrav´es de v´arias instˆancias de um agente m´ovel;

Extens˜ao dinˆamica da funcionalidade de aplica¸c˜oes: Exemplo:

descoberta dinˆamica de recursos e vincula¸c˜ao do c´odigo cliente apenas quando for necess´ario o acesso ao servidor;

(15)

Migra¸c˜ao de C´odigo: Cuidados relacionados `a Seguran¸ca

Confiar cegamente em um c´odigo carregado dinamicamente nem

sempre ´e uma boa ideia...

(16)

Migra¸c˜ao de C´odigo: Necessidades

Para efetuar a migra¸c˜ao de um processo, algumas informa¸c˜oes de estado (tamb´em chamadas de contexto) devem ser salvas e transportadas para sua nova localiza¸c˜ao;

Fuggetta descreve que um processo consiste basicamente de trˆes

segmentos: segmento de c´odigo, segmento de recursos e segmento de

(17)

Alternativas para Migra¸c˜ao de C´odigo

(18)

Alternativas para Migra¸c˜ao de C´odigo

Migra¸c˜ao Forte: mecanismo que migre os trˆes segmentos e reinicia o

processo exatamente no mesmo estado e na mesma posi¸c˜ao de c´odigo

em que ele estava antes da migra¸c˜ao

Migra¸c˜ao Fraca: somente o segmento de c´odigo ´e transferido e talvez alguns dados de inicializa¸c˜ao. O programa transferido ´e sempre executado a partir de seu estado inicial;

Migra¸c˜ao ´e iniciada pelo emissor (proativa): a aplica¸c˜ao deixa o local onde est´a executando e migra para uma outra localidade na rede por iniciativa pr´opria (e.g. programas de busca em bases de dados na web);

Migra¸c˜ao iniciada pelo receptor (reativa): a iniciativa da

(19)

Migra¸c˜ao For¸cada

Expressa a habilidade do sistema em suportar a migra¸c˜ao de um processo

a qualquer momento, mediante a solicita¸c˜ao de uma entidade externa;

(20)
(21)

Etapas do processo de migra¸c˜ao

1 O fluxo de execu¸c˜ao ´e interrompido;

2 O estado da entidade a ser migrada ´e capturado;

3 O c´odigo e o estado da entidade migrada s˜ao transportados para a

m´aquina de destino;

4 O c´odigo e o estado da entidade migrada s˜ao restaurados; 5 A execu¸c˜ao ´e reiniciada.

(22)
(23)

Migra¸c˜ao de Recursos

1 Recurso compartilhado: ap´os o t´ermino do processo de migra¸c˜ao o

acesso ao recurso continua dispon´ıvel (e.g. uma impressora de rede);

2 Recurso j´a dispon´ıvel: Exemplo: uma aplica¸c˜ao gera uma s´erie de

arquivos de sa´ıda em uma unidade de fita. Ap´os a migra¸c˜ao, a nova m´aquina na qual a aplica¸c˜ao executa tamb´em tenha dispon´ıvel uma unidade de fita. A aplica¸c˜ao poder´a continuar a gerar os arquivos de sa´ıda no novo dispositivo;

3 Recurso referenciado: a referˆencia ao recurso utilizado ´e migrada

juntamente com o seu estado e seu c´odigo. Assim, ao chegar em seu

destino, ele deve tentar se reconectar atrav´es da rede ao recurso na

antiga m´aquina. Exemplo: uma base de dados;

4 Recurso despachado: o recurso dever´a ser migrado inteiramente

junto com o estado e o c´odigo da aplica¸c˜ao. Exemplo: arquivos utilizados pela aplica¸c˜ao.

(24)

Tipos de Recursos

Fixos: os recursos n˜ao podem ser migrados. Exemplo: hardware local;

Vinculados: os recursos podem, a princ´ıpio, serem migrados mas a um alto custo;

N˜ao vinculados: os recursos podem facilmente serem movidos junto

(25)

Vincula¸c˜ao Objeto-Recurso

Por identificador: o objeto requer uma instˆancia espec´ıfica do recurso. Exemplo: um banco de dados espec´ıfico;

Por valor: o objeto requer o valor de um recurso. Exemplo: entradas na cache;

Por tipo: o objeto requer somente que um dado tipo de objeto esteja dispon´ıvel. Exemplo: monitor colorido.

(26)
(27)

Migra¸c˜ao em Sistemas Heterogˆeneos

Principal problema:

A m´aquina alvo pode n˜ao ser adequada para execu¸c˜ao do c´odigo migrado;

O contexto do processo/thread ´e dependente do hardware local, sistema operacional e ambiente de execu¸c˜ao.

Solu¸c˜ao: utiliza¸c˜ao de uma m´aquina abstrata implementada em diferentes plataformas;

Solu¸c˜oes atuais:

Uso de linguagens interpretadas que executam em uma m´aquina virtual, como Java;

Uso de VMMs (Virtual Machine Monitors), o que permite a migra¸c˜ao completa do sistema operacional junto com as aplica¸c˜oes. Exemplo: substitui¸c˜ao de uma m´aquina em um cluster, um ambiente de computa¸c˜ao de longo tempo de execu¸c˜ao.

(28)
(29)

Introdu¸c˜ao ao Modelo Cliente/Servidor

Uma quest˜ao fundamental em sistemas distribu´ıdos ´e a defini¸c˜ao de como devemos organizar os processos;

Um modelo bastante popular organiza os processos em clientes que requisitam servi¸cos de servidores.

(30)

Comunica¸c˜ao Cliente Servidor

Atrav´es de um protocolo simples sem conex˜ao

Utilizado quando a rede ´e razoavelmente confi´avel, como a maioria das LANs;

Vantagem: eficiˆencia;

Desvantagem: dificuldades de tornar a aplica¸c˜ao resistente a falhas de transmiss˜ao;

Se o cliente n˜ao recebe resposta, ele n˜ao tem como detectar se a mensagem original foi perdida ou se isto ocorreu com a resposta; O cliente pode reenviar a requisi¸c˜ao;

Para requisi¸c˜oes como ”retorne o saldo da minha conta” isto n˜ao gera problemas mas para mensagens do tipo ”transfira 10.000,00 da minha conta” o reenvio da requisi¸c˜ao seria desastroso.

Atrav´es de protocolo confi´avel orientado a conex˜ao

Desvantagem: desempenho relativamente baixo; Funciona muito bem em WANs;

(31)

Exemplo CS: Arquivo de Cabe¸calho

(32)
(33)

Exemplo CS: um Cliente Simples

(34)
(35)

Camadas de uma Aplica¸c˜ao

Uma aplica¸c˜ao CS pode ser estruturada em trˆes n´ıveis:

1 Interface com o usu´ario

2 Processamento

3 Dados

(36)

Camada de Interface com o Usu´ario

Consiste dos programas que permitem a intera¸c˜ao dos usu´arios com a aplica¸c˜ao;

Pode ser muito simples, utilizando uma interface a caractere simples ou mais sofisticado utilizando interfaces gr´aficas;

Exemplo simples: interface de terminal onde o mainframe controla toda a intera¸c˜ao inclusive o monitor e teclado;

(37)

Camada de Processamento

Contˆem a funcionalidade principal da aplica¸c˜ao; Exemplo: uma ferramenta de busca na Internet;

Ela deve transformar a string que o usu´ario digitou em uma ou mais

consultas a um grande banco de dados e formatar os resultados

obtidos em p´aginas HTML a serem apresentadas para o usu´ario.

(38)
(39)

Camada de Dados

Na sua forma mais simples consiste de um sistema de arquivos mas ´e comum que sejam utilizados banco de dados;

Al´em de apenas armazenar dados pode tamb´em tamb´em tratar sua consistˆencia e realizar fun¸c˜oes como gerar uma notifica¸c˜ao quando uma dada condi¸c˜ao ocorrer;

Estas a¸c˜oes s˜ao muitas vezes implementadas atrav´es de stored procedures.

(40)

Um Segundo Exemplo

Considere um sistema de suporte `a decis˜ao para uma corretora de valores:

Uma camada frontal implementa a interface com o usu´ario;

Uma camada de dados armazena os dados financeiros;

Uma camada de processamento realiza a an´alise dos dados, o que

(41)

Arquiteturas Multi-divididas

A distin¸c˜ao entre os trˆes n´ıveis l´ogicos sugere v´arias possibilidades para a distribui¸c˜ao f´ısica de uma aplica¸c˜ao C/S;

A organiza¸c˜ao mais simples requer apenas dois tipos de m´aquinas:

1 Cliente: que executa os programas que compreendem a interface com o

usu´ario;

2 Servidor: que implementa as camadas de processamento e de dados.

Esta organiza¸c˜ao ´e conhecida como Cliente/Servidor em duas camadas;

No entanto, diversas outras arquiteturas podem ser utilizadas.

(42)
(43)

Alternativas de Organiza¸c˜ao Cliente/Servidor (a)

Na alternativa (a), executa-se no cliente s´o a parte da interface dependente do terminal;

Na alternativa (b), todo o software de interface com usu´ario executa no cliente;

Exemplo da alternativa (c): verifica¸c˜ao de consistˆencia do preenchimento de um formul´ario feito no cliente;

Na alternativa (d), a aplica¸c˜ao executa na m´aquina cliente, indo para o servidor somente as opera¸c˜oes sobre as base de dados. Exemplo: muitas aplica¸c˜oes banc´arias;

Na alternativa (e), o disco local no cliente mantˆem parte dos dados. Exemplo: browser web mantendo uma cache;

Recentemente tem-se evitado as alternativas (d) e (e) devido a problemas de gerenciamento e por tornar o sofware cliente dependente da plataforma subjacente do cliente;

Clientes gordos (abordagens (d) e (e));

Clientes magros (abordagens (a) a (c)): mais f´aceis de gerenciar.

(44)

Arquitetura em Trˆes Camadas

A divis˜ao vista anteriormente apresenta diversas possibilidades de distin¸c˜ao entre m´aquinas clientes e servidoras;

(45)

Arquitetura em Trˆes Camadas

Nesta arquitetura, programas que formam o n´ıvel de processamento residem em um servidor separado;

Um exemplo t´ıpico ´e o processamento de transa¸c˜oes, onde o monitor de transa¸c˜oes coordena as transa¸c˜oes em servidores de dados

possivelmente diferentes;

Outro exemplo ´e a organiza¸c˜ao usual de sites na Web, onde o servidor

Web age como ponto de entrada para um site, passando requisi¸c˜oes

para um servidor de aplica¸c˜ao no qual ocorre o processamento propriamente dito.

(46)

Servidores de Aplica¸c˜ao

S˜ao softwares que fornecem uma infraestrutura de servi¸cos para a execu¸c˜ao de aplica¸c˜oes distribu´ıdas;

S˜ao executados em servidores e s˜ao acessados pelos clientes atrav´es de uma conex˜ao de rede;

Vantagem: simplificam o desenvolvimento de aplica¸c˜oes atrav´es dos servi¸cos implementados, fazendo com que os desenvolvedores possam concentrar a maior parte do tempo na implementa¸c˜ao da l´ogica de neg´ocio;

Servi¸cos t´ıpicos: integra¸c˜ao com bancos de dados, seguran¸ca, garantia de disponibilidade, balanceamento de carga e tratamento de exce¸c˜oes; Exemplos: WebLogic Server (BEA), JBoss (Red Hat), WebSphere Application Server (IBM), JRun (Adobe), Apache Geronimo (Apache Software Foundation), Oracle OC4J (Oracle Corporation), Sun Java System Application Server (Sun Microsystems), Glassfish,

(47)

Distribui¸c˜ao Horizontal

A distribui¸c˜ao do modelo CS em m´ultiplas camadas vista anteriormente ´e conhecida por distribui¸c˜ao vertical;

O modelo CS pode tamb´em ser distribu´ıdo horizontalmente,

dividindo-se o cliente ou servidor em partes logicamente equivalentes; Um exemplo popular ´e um servidor Web replicado em v´arias m´aquinas de forma a prover um balanceamento da carga de trabalho.

(48)
(49)

Cluster de Servidores

Conjunto de m´aquinas conectadas por uma rede de alta largura e

baixa latˆencia onde cada m´aquina executa um ou mais servidores; Normalmente organizado logicamente em trˆes camadas:

1 Comutador: respons´avel pelo roteamento das requisi¸c˜oes de clientes; 2 Servidores de aplica¸c˜ao / computa¸c˜ao;

3 Sistema distribu´ıdo de arquivos / banco de dados.

(50)

Cluster de Servidores

Logical switch (possibly multiple)

Application/compute servers Distributed file/database

system

Client requests

Dispatched request

(51)

Comutadores de Camada de Transporte

O comutador aceita requisi¸c˜oes de conex˜ao TCP;

Ele identifica o melhor servidor para tratar a requisi¸c˜ao e repassa o pacote a ele;

O servidor enviar´a a resposta ao cliente requisitante, mas insere o endere¸co IP do comutador como endere¸co fonte no cabe¸calho do pacote IP, realizando uma falsifica¸c˜ao (spoofing ).

(52)

Comutadores de Camada de Transporte

Switch Client

Server

Server Request (handed off)Request

Response Logically a

(53)

Quest˜oes de Projeto de Aplica¸c˜oes

Servidoras

(54)

Organiza¸c˜ao de Servidores

Servidor interativo: o pr´oprio servidor manipula a requisi¸c˜ao e, se necess´ario, retorna uma resposta ao cliente;

(55)

Vincula¸c˜ao Cliente-Servidor

Atrav´es de portas conhecidas designadas pela Autoridade para

Atribui¸c˜ao de N´umeros na Internet (Iana). Ex: FTP-21, HTTP-80

Atrav´es de um daemon que registra os servidores em execu¸c˜ao; Atrav´es de um super-servidor, que escuta em v´arias portas e repassa a requisi¸c˜ao a um servidor espec´ıfico.

(56)
(57)

Interrup¸c˜ao do Servidor

Exemplo: usu´ario deseja interromper a transferˆencia de um enorme arquivo para o servidor FTP;

Uma abordagem ´e o usu´ario sair abruptamente da aplica¸c˜ao cliente, o que automaticamente interromper´a a conex˜ao com o servidor;

O servidor encerrar´a a conex˜ao antiga, entendendo que o cliente falhou;

Esta pr´atica ´e muito adotada na Internet atual...

Outra alternativa ´e permitir o envio de dados fora da banda; Neste caso o servidor pode escutar em uma porta de controle separada da qual passam os dados normais.

(58)

Servidores Com e Sem Estado

1 Sem Manter Estado:

N˜ao ´e mantida nenhuma informa¸c˜ao a respeito dos clientes e suas requisi¸c˜oes;

Exemplo: um servidor Web tipicamente n˜ao armazena estado. Ap´os a requisi¸c˜ao ser processada, o servidor Web esquece completamente do cliente;

Cada requisi¸c˜ao deve ser auto-contida; F´acil recupera¸c˜ao em caso de falha.

2 Mantendo Estado:

O servidor mantˆem informa¸c˜oes persistentes sobre seus clientes; Exemplo: um servidor de arquivo que sabe quais clientes possuem quais arquivos abertos;

Normalmente leva a um melhor desempenho na execu¸c˜ao das opera¸c˜oes disponibilizadas;

Referências

Documentos relacionados

Chora Peito Chora Joao Bosco e Vinicius 000 / 001.. Chão De Giz Camila e

O objetivo, tal como visto anteriormente, era traçar um modelo de quadro descritivo para a emissão da ‘Opinião Desfavorável’ em português do Brasil que pudesse servir de suporte

3259 21 Animação e dinamização de actividades lúdico-expressivas - expressão musical 50 3260 22 Animação e dinamização de actividades lúdico-expressivas -

189 utilizaram apenas o marcador CD45RO e CD45RA para verificar células de memória e naive, assim como em nosso estudo, não encontraram diferenças na subpopulação de linfócitos

Porcas de fixação intercambiáveis, porcas de fixação estilo refrigerante e discos do refrigerante estão disponíveis e devem ser pedidos separadamente; consulte a página

Na Tabela 6 estão expressas as equações obtidas a partir das relações entre condutividade elétrica (CE), sólidos totais (ST), sólidos fixos (SF) e sólidos

The structure h Ω, Σ, Π i is a particular case of a paraconsistent algebra of sets, as investigated in [ 32 ], and the results therein (particularly Theorems 4 and 5) can be adapted

[r]