Processos, Threads e o Modelo Cliente/Servidor



Documentos relacionados
Arquiteturas. capítulo

Sistemas Distribuídos: Conceitos e Projeto Estilos Arquitetônicos e Arquitetura Cliente/Servidor

Processos ca 3 pítulo

ach 2147 desenvolvimento de sistemas de informação distribuídos

Sistemas Distribuídos Capítulo 3 - Aula 3

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Sistemas Distribuídos

Fundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads

Camada de Aplicação da Arquitetura TCP/IP

Prof. Marcelo Cunha Parte 6

Fundamentos de Sistemas Operacionais

Introdução à Informática. Aula 05. Redes de Computadores. Prof. Fábio Nelson

SISTEMAS DISTRIBUÍDOS

O que é um sistema distribuído?

Nuvem e Virtualização Redes Programáveis

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

Estruturas de Sistemas Operacionais

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

Java para Web & EJB. Teoria, prática e questões Módulo Introdução e Servlets

Características de Sistemas Distribuídos

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Bruno Antunes da Silva UFSCar - Sorocaba

SISTEMAS DISTRIBUÍDOS

Backup e Restauração Banco de Dados. Evandro Deliberal

Disciplina: Redes de Computadores I (R1)

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

ARQUITETURA DE SISTEMAS OPERACIONAIS. VISÃO GERAL DE UM SISTEMA OPERACIONAL Prof. André Luís Alves E. M. DR. LEANDRO FRANCESCHINI

Características de Sistemas Distribuídos

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Gerenciamento de Redes: Protocolo SNMP

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

Prof. Samuel Henrique Bucke Brito

Sistema centralizado O Paradigma Cliente/Servidor

Matéria: Sistema Computacional - SC. Prof.: Esp.: Patrícia Dias da Silva Peixoto

TELECOMUNICAÇÕES Prof. Ricardo Rodrigues Barcelar

Cliente-servidor Código móvel Agentes de software Processos pares. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

Sistemas Operacionais

Arquitectura de Sistemas Paralelos e Distribuídos Modelos de Sistemas

Gerenciador de Banco de Dados

Arquiteturas de Sistemas Distribuídos

PTC Aula Princípios das aplicações de rede 2.2 A Web e o HTTP. (Kurose, p ) (Peterson, p ) 21/03/2017

Programação com Sockets

Aula 03-04: Modelos de Sistemas Distribuídos

Flávia Rodrigues. Silves, 26 de Abril de 2010

Arquiteturas. Capítulo 2

Introdução aos Sistemas Operacionais

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MASSIVOS DISTRIBUÍDOS. Marcelo Henrique dos Santos

SISTEMAS DISTRIBUÍDOS ARQUITETURAS. Slides cedidos pela Professora Aline Nascimento

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Redes de Computadores. Disciplina: Informática Prof. Higor Morais

SISTEMAS DISTRIBUÍDOS PROCESSOS. Slides cedidos pela professora Aline Nascimento

Curso: Redes de Computadores

Data Warehouse ETL. Rodrigo Leite Durães.

Redes de Computadores

Sistemas Distribuídos Aula 3

Sistemas Distribuídos

Arquitecturas de Software Enunciado de Projecto

Arquitetura de Software para Computação Móvel

Arquitetura de Computadores. Processamento Paralelo

Gerenciamento de Redes. Alan Santos

Componente de aplicação. Figura 1 - Elementos funcionais de uma aplicação sendo executados de forma distribuída

Servidor de Armazenamento em Nuvem

Programação Concorrente

Experiência 04: Comandos para testes e identificação do computador na rede.

Programação Paralela e Distribuída

SIDs: ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Fundamentos de Redes e Sistemas Distribuídos Aula 03 Camadas

Redes de Computadores

Vamos fazer um pequeno experimento

1- Confiabilidade ( 2 ) Proteção contra perdas e estragos. 2- Integridade ( 3 ) Proteção contra interferência de cortes de funcionamento

Sistemas Distribuídos Aula 10

REDES DE COMPUTADORES

Sistemas Operacionais Aula 3

Desenvolvimento de Aplicações Distribuídas

Objetos e Componentes Distribuídos: EJB e CORBA

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

Cleverson A. Fargiani

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO

Transcrição:

Processos, Threads e o Modelo Cliente/Servidor Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 29 de novembro de 2011 Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 1 / 58

Agenda 1 Threads em Sistemas Distribuídos 2 Migração de Código 3 Modelo Cliente/Servidor 4 Distribuição Horizontal e Vertical do Modelo Cliente/Servidor 5 Questões de Projeto de Aplicações Servidoras Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 2 / 58

Threads em Sistemas Distribuídos Threads em Sistemas Distribuídos Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 3 / 58

Threads em Sistemas Distribuídos Introdução Processos formam um importante bloco de construção em sistemas distribuídos; Operações envolvendo processos (criação, destruição, comunicação) são relativamente caras. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 4 / 58

Threads em Sistemas Distribuídos Definição de Thread Mecanismo que permite a um processo ter mais de um fluxo de controle; Threads compartilham o mesmo espaço de endereçamento. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 5 / 58

Threads em Sistemas Distribuídos Threads em Sistemas não Distribuídos: Benefícios O processo inteiro não necessita ficar bloqueado ao realizar uma chamada bloqueante ao sistema; Exemplo de uso: planilha de cálculo Pode-se explorar paralelismo em sistemas multiprocessados; Simplifica o desenvolvimento de aplicações inerentemente concorrentes; Melhor desempenho para aplicações complexas que tradicionalmente eram implementadas através de múltiplos processos comunicando-se através de mecanismos IPCs Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 6 / 58

Threads em Sistemas Distribuídos Threads em Sistemas Distribuídos: Clientes multithreaded Clientes multithreaded. Exemplo: Web Browsers: Documento HTML consiste de um arquivo de texto e vários outros de imagens, ícones, etc... Pode-se esconder a grande latência na comunicação apresentando cada objeto assim que estiver disponível: estabelecimento de múltiplas conexões Melhoria no desempenho geral pode ser obtido no caso de servidores Web replicados em várias máquinas. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 7 / 58

Threads em Sistemas Distribuídos Threads em Sistemas Distribuídos: Múltiplos 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és de threads independentes; Se as RPCs são destinadas a servidores diferentes, pode-se esperar um ganho linear, se comparado a realizar uma RPC após a outra. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 8 / 58

Threads em Sistemas Distribuídos Servidores multithreaded: Objetivos Melhor desempenho: Iniciar uma thread para tratar uma requisição custa menos que iniciar um novo processo; Servidores que possuem uma única thread não são escaláveis a sistemas multiprocessados; Pode-se esconder a latência da rede, reagindo a uma nova requisição enquanto os resultados da anterior estiverem sendo entregues. Melhor estrutura: Muitos servidores demandam fortemente E/S. A utilização de chamadas bloqueantes simplifica a estrutura do código; Programas multithreaded tendem a ser menores e mais fáceis de entender, por possuírem um fluxo de controle simplificado. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 9 / 58

Threads em Sistemas Distribuídos Servidores multithreaded Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 10 / 58

Threads em Sistemas Distribuídos Sincronização de Programas Concorrentes Semáforos; Monitores. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 11 / 58

Migração de Código Migração de Código Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 12 / 58

Migração de Código Migração de Código Carzaniga et al. define mobilidade de código como a capacidade de mudar dinamicamente as ligações entre o código e a localização onde executa. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 13 / 58

Migração de Código Migração de Código: Motivações Melhoria do desempenho global: processos podem ser movidos de máquinas muito carregadas para máquinas com cargas mais leves. Carga é usualmente expressa em termos do comprimento da fila de processos da CPU ou de sua utilização; Diminuição da carga na rede: Exemplo: uma aplicação cliente que requeira muitas operações em banco de dados ou validação de formulário no cliente; Exploração de processamento paralelo: Exemplo: busca de informações na Web através de várias instâncias de um agente móvel; Extensão dinâmica da funcionalidade de aplicações: Exemplo: descoberta dinâmica de recursos e vinculação do código cliente apenas quando for necessário o acesso ao servidor; Em grades oportunistas, liberação dos recursos da máquina. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 14 / 58

Migração de Código Migração de Código: Cuidados relacionados à Segurança Confiar cegamente em um código carregado dinamicamente nem sempre é uma boa ideia... Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 15 / 58

Migração de Código Migração de Código: Necessidades Para efetuar a migração de um processo, algumas informações de estado (também chamadas de contexto) devem ser salvas e transportadas para sua nova localização; Fuggetta descreve que um processo consiste basicamente de três segmentos: segmento de código, segmento de recursos e segmento de execução. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 16 / 58

Migração de Código Alternativas para Migração de Código Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 17 / 58

Migração de Código Alternativas para Migração de Código Migração Forte: mecanismo que migre os três segmentos e reinicia o processo exatamente no mesmo estado e na mesma posição de código em que ele estava antes da migração Migração Fraca: somente o segmento de código é transferido e talvez alguns dados de inicialização. O programa transferido é sempre executado a partir de seu estado inicial; Migração é iniciada pelo emissor (proativa): a aplicação deixa o local onde está executando e migra para uma outra localidade na rede por iniciativa própria (e.g. programas de busca em bases de dados na web); Migração iniciada pelo receptor (reativa): a iniciativa da migração parte de uma aplicação executando na máquina de destino (e.g. applets Java). Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 18 / 58

Migração de Código Migração Forçada Expressa a habilidade do sistema em suportar a migração de um processo a qualquer momento, mediante a solicitação de uma entidade externa; Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 19 / 58

Migração de Código Etapas do Processo de Migração Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 20 / 58

Migração de Código Etapas do processo de migração 1 O fluxo de execução é interrompido; 2 O estado da entidade a ser migrada é capturado; 3 O código e o estado da entidade migrada são transportados para a máquina de destino; 4 O código e o estado da entidade migrada são restaurados; 5 A execução é reiniciada. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 21 / 58

Migração de Código Migração de Recursos Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 22 / 58

Migração de Código Migração de Recursos 1 Recurso compartilhado: após o término do processo de migração o acesso ao recurso continua disponível (e.g. uma impressora de rede); 2 Recurso já disponível: Exemplo: uma aplicação gera uma série de arquivos de saída em uma unidade de fita. Após a migração, a nova máquina na qual a aplicação executa também tenha disponível uma unidade de fita. A aplicação poderá continuar a gerar os arquivos de saída no novo dispositivo; 3 Recurso referenciado: a referência ao recurso utilizado é migrada juntamente com o seu estado e seu código. Assim, ao chegar em seu destino, ele deve tentar se reconectar através da rede ao recurso na antiga máquina. Exemplo: uma base de dados; 4 Recurso despachado: o recurso deverá ser migrado inteiramente junto com o estado e o código da aplicação. Exemplo: arquivos utilizados pela aplicação. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 23 / 58

Migração de Código Tipos de Recursos Fixos: os recursos não podem ser migrados. Exemplo: hardware local; Vinculados: os recursos podem, a princípio, serem migrados mas a um alto custo; Não vinculados: os recursos podem facilmente serem movidos junto com o objeto. Exemplo: uma cache. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 24 / 58

Migração de Código Vinculação Objeto-Recurso Por identificador: o objeto requer uma instância 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. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 25 / 58

Migração de Código Ações de Migração Relativas aos Recursos Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 26 / 58

Migração de Código Migração em Sistemas Heterogêneos Principal problema: A máquina alvo pode não ser adequada para execução do código migrado; O contexto do processo/thread é dependente do hardware local, sistema operacional e ambiente de execução. Solução: utilização de uma máquina abstrata implementada em diferentes plataformas; Soluções atuais: Uso de linguagens interpretadas que executam em uma máquina virtual, como Java; Uso de VMMs (Virtual Machine Monitors), o que permite a migração completa do sistema operacional junto com as aplicações. Exemplo: substituição de uma máquina em um cluster, um ambiente de computação de longo tempo de execução. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 27 / 58

Modelo Cliente/Servidor Modelo Cliente/Servidor Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 28 / 58

Modelo Cliente/Servidor Introdução ao Modelo Cliente/Servidor Uma questão fundamental em sistemas distribuídos é a definição de como devemos organizar os processos; Um modelo bastante popular organiza os processos em clientes que requisitam serviços de servidores. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 29 / 58

Modelo Cliente/Servidor Comunicação Cliente Servidor Através de um protocolo simples sem conexão Utilizado quando a rede é razoavelmente confiável, como a maioria das LANs; Vantagem: eficiência; Desvantagem: dificuldades de tornar a aplicação resistente a falhas de transmissão; Se o cliente não recebe resposta, ele não tem como detectar se a mensagem original foi perdida ou se isto ocorreu com a resposta; O cliente pode reenviar a requisição; Para requisições como retorne o saldo da minha conta isto não gera problemas mas para mensagens do tipo transfira 10.000,00 da minha conta o reenvio da requisição seria desastroso. Através de protocolo confiável orientado a conexão Desvantagem: desempenho relativamente baixo; Funciona muito bem em WANs; Exemplo: praticamente todas as aplicações na Internet utilizam conexões TCP/IP. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 30 / 58

Modelo Cliente/Servidor Exemplo CS: Arquivo de Cabeçalho Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 31 / 58

Modelo Cliente/Servidor Exemplo CS: um Servidor Simples Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 32 / 58

Modelo Cliente/Servidor Exemplo CS: um Cliente Simples Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 33 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 34 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Camadas de uma Aplicação Uma aplicação CS pode ser estruturada em três níveis: 1 Interface com o usuário 2 Processamento 3 Dados Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 35 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Camada de Interface com o Usuário Consiste dos programas que permitem a interação dos usuários com a aplicação; Pode ser muito simples, utilizando uma interface a caractere simples ou mais sofisticado utilizando interfaces gráficas; Exemplo simples: interface de terminal onde o mainframe controla toda a interação inclusive o monitor e teclado; Exemplo sofisticado: Interface de sistema que permite ao usuário arrastar o ícone que representa o arquivo para uma lixeira provocando sua exclusão. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 36 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Camada de Processamento Contêm a funcionalidade principal da aplicação; Exemplo: uma ferramenta de busca na Internet; Ela deve transformar a string que o usuário digitou em uma ou mais consultas a um grande banco de dados e formatar os resultados obtidos em páginas HTML a serem apresentadas para o usuário. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 37 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Exemplo: Ferramenta de Busca Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 38 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Camada de Dados Na sua forma mais simples consiste de um sistema de arquivos mas é comum que sejam utilizados banco de dados; Além de apenas armazenar dados pode também também tratar sua consistência e realizar funções como gerar uma notificação quando uma dada condição ocorrer; Estas ações são muitas vezes implementadas através de stored procedures. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 39 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Um Segundo Exemplo Considere um sistema de suporte à decisão para uma corretora de valores: Uma camada frontal implementa a interface com o usuário; Uma camada de dados armazena os dados financeiros; Uma camada de processamento realiza a análise dos dados, o que eventualmente exige métodos e técnicas sofisticados de estatística e inteligência artificial. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 40 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Arquiteturas Multi-divididas A distinção entre os três níveis lógicos sugere várias possibilidades para a distribuição física de uma aplicação C/S; A organização mais simples requer apenas dois tipos de máquinas: 1 Cliente: que executa os programas que compreendem a interface com o usuário; 2 Servidor: que implementa as camadas de processamento e de dados. Esta organização é conhecida como Cliente/Servidor em duas camadas; No entanto, diversas outras arquiteturas podem ser utilizadas. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 41 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Possíveis Organizações Cliente/Servidor Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 42 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Alternativas de Organização Cliente/Servidor (a) Na alternativa (a), executa-se no cliente só a parte da interface dependente do terminal; Na alternativa (b), todo o software de interface com usuário executa no cliente; Exemplo da alternativa (c): verificação de consistência do preenchimento de um formulário feito no cliente; Na alternativa (d), a aplicação executa na máquina cliente, indo para o servidor somente as operações sobre as base de dados. Exemplo: muitas aplicações bancárias; Na alternativa (e), o disco local no cliente mantêm 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áceis de gerenciar. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 43 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Arquitetura em Três Camadas A divisão vista anteriormente apresenta diversas possibilidades de distinção entre máquinas clientes e servidoras; No entanto, um servidor pode também agir como cliente, resultando em uma arquitetura em três níveis: Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 44 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Arquitetura em Três Camadas Nesta arquitetura, programas que formam o nível de processamento residem em um servidor separado; Um exemplo típico é o processamento de transações, onde o monitor de transações coordena as transações em servidores de dados possivelmente diferentes; Outro exemplo é a organização usual de sites na Web, onde o servidor Web age como ponto de entrada para um site, passando requisições para um servidor de aplicação no qual ocorre o processamento propriamente dito. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 45 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Servidores de Aplicação São softwares que fornecem uma infraestrutura de serviços para a execução de aplicações distribuídas; São executados em servidores e são acessados pelos clientes através de uma conexão de rede; Vantagem: simplificam o desenvolvimento de aplicações através dos serviços implementados, fazendo com que os desenvolvedores possam concentrar a maior parte do tempo na implementação da lógica de negócio; Serviços típicos: integração com bancos de dados, segurança, garantia de disponibilidade, balanceamento de carga e tratamento de exceções; 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, Appaserver, Base4 e Zope. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 46 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Distribuição Horizontal A distribuição do modelo CS em múltiplas camadas vista anteriormente é conhecida por distribuição vertical; O modelo CS pode também ser distribuído horizontalmente, dividindo-se o cliente ou servidor em partes logicamente equivalentes; Um exemplo popular é um servidor Web replicado em várias máquinas de forma a prover um balanceamento da carga de trabalho. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 47 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Distribuição Horizontal de Servidor Web Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 48 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Cluster de Servidores Conjunto de máquinas conectadas por uma rede de alta largura e baixa latência onde cada máquina executa um ou mais servidores; Normalmente organizado logicamente em três camadas: 1 Comutador: responsável pelo roteamento das requisições de clientes; 2 Servidores de aplicação / computação; 3 Sistema distribuído de arquivos / banco de dados. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 49 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Cluster de Servidores Logical switch (possibly multiple) Application/compute servers Distributed file/database system Client requests Dispatched request First tier Second tier Third tier Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 50 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Comutadores de Camada de Transporte O comutador aceita requisições de conexão TCP; Ele identifica o melhor servidor para tratar a requisição e repassa o pacote a ele; O servidor enviará a resposta ao cliente requisitante, mas insere o endereço IP do comutador como endereço fonte no cabeçalho do pacote IP, realizando uma falsificação (spoofing). Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 51 / 58

Distribuição Horizontal e Vertical do Modelo Cliente/Servidor Comutadores de Camada de Transporte Logically a single TCP connection Response Server Client Request Switch Request (handed off) Server Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 52 / 58

Questões de Projeto de Aplicações Servidoras Questões de Projeto de Aplicações Servidoras Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 53 / 58

Questões de Projeto de Aplicações Servidoras Organização de Servidores Servidor interativo: o próprio servidor manipula a requisição e, se necessário, retorna uma resposta ao cliente; Servidor concorrente: repassa para uma thread ou processo em separado a requisição e imediatamente espera pela próxima requisição. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 54 / 58

Questões de Projeto de Aplicações Servidoras Vinculação Cliente-Servidor Através de portas conhecidas designadas pela Autoridade para Atribuição de Números na Internet (Iana). Ex: FTP-21, HTTP-80 Através de um daemon que registra os servidores em execução; Através de um super-servidor, que escuta em várias portas e repassa a requisição a um servidor específico. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 55 / 58

Questões de Projeto de Aplicações Servidoras Vinculação Cliente-Servidor Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 56 / 58

Questões de Projeto de Aplicações Servidoras Interrupção do Servidor Exemplo: usuário deseja interromper a transferência de um enorme arquivo para o servidor FTP; Uma abordagem é o usuário sair abruptamente da aplicação cliente, o que automaticamente interromperá a conexão com o servidor; O servidor encerrará a conexão antiga, entendendo que o cliente falhou; Esta prática é muito adotada na Internet atual... Outra alternativa é 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. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 57 / 58

Questões de Projeto de Aplicações Servidoras Servidores Com e Sem Estado 1 Sem Manter Estado: Não é mantida nenhuma informação a respeito dos clientes e suas requisições; Exemplo: um servidor Web tipicamente não armazena estado. Após a requisição ser processada, o servidor Web esquece completamente do cliente; Cada requisição deve ser auto-contida; Fácil recuperação em caso de falha. 2 Mantendo Estado: O servidor mantêm informações 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ção das operações disponibilizadas; Em caso de falha, deve-se recurar o estado do servidor. Francisco Silva (UFMA/LSD) Cliente/Servidor 29 de novembro de 2011 58 / 58