Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Distribuídos Prof. Carlos Viana Introdução • Como já vimos, hoje os sistemas computacionais são baseados em aplicações que funcionam de forma distribuída, o mundo é globalizado e como tal, as aplicações devem seguir o conceito de distribuição. Introdução • “Um sistema distribuído é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente” (Tanenbaum/Van Steen) Introdução • Para suportar computadores e redes heterogêneas e, simultaneamente, oferecer uma visão de sistema único, os sistemas distribuídos costumam ser organizados por meio de uma camada de software. • Que é situada logicamente entre uma camada de nível mais alto, composta de usuários e aplicações, e uma camada subjacente, que consiste em sistemas operacionais e facilidades básicas de comunicação. Introdução Meta • Na hora de pensarmos em desenvolver um sistema distribuído, temos que pensar em alguns aspectos importantes para que ele valha a pena, ele tem que atender a quatro metas importantes: – Fácil acesso aos recursos; – Transparência da distribuição; – Ser aberto; – Ser extensível; Acesso a recursos • “A principal meta de um sistema distribuído é facilitar aos usuários, e as aplicações, o acesso a recursos remotos e seu compartilhamento de maneira controlada e eficiente.” (Tanenbaum/Van Steen) Acesso a recursos • Estes recursos podem ser: – Impressoras; – Computadores; – Facilidades de armazenamento; – Dados; – Páginas web; – Redes; – Etc; Exemplo • É mais barato que uma impressora seja compartilha por diversos usuários de um pequeno escritório do que comprar e manter uma impressora direcionada a cada usuário. Impressora Rede Transparência da Distribuição • Uma meta importante de um sistema distribuído é a capacidade de se apresentar como um sistema único, mesmo que seus processos estejam em computadores diferentes. Site Decolar .com Tipos de Transparência Transparência de Acesso • Trata da forma de acesso aos recursos pelos usuários de máquinas com arquiteturas diferentes, os sistemas operacionais devem entrar em acordo de como os dados podem ser representados. • Exemplo: – Em um sistema distribuído, podemos encontrar sistemas operacionais diferentes, que tenham suas próprias convenções pra nomes de arquivos. Transparência de Localização • Refere-se ao fato de um usuário não poder dizer a localização física de um recurso no sistema. A nomeação desempenha um papel importante para conseguir transparência de localização. • Por exemplo: – http://www.joaquimnabuco.edu.br/index.html , só por esta URL não é possível definir onde esta o servidor principal. Transparência de Migração • Pegando um gancho no exemplo anterior, o URL também não dá nenhuma dica se o index.html sempre esteve nesta localização ou foi transferido para lá recentemente. • Então, os recursos podem ser movimentados sem afetar o modo como podem ser acessados. Transparência de Relocação • É a possibilidade de relocar recursos enquanto estão sendo usados sem que os usuários ou aplicações percebam. • Exemplo: – Rede de comunicação de celular, onde a comunicação é garantida, mesmo que o usuário esteja em movimento; Transparência de Replicação • A replicação esta associada ao fato de existir várias copias de um recurso, para isto, cada replica deve ter o mesmo nome e os sistemas devem ser capazes, também de suportar transparência de localização. • Exemplo: – Disponibilizar uma cópia perto do lugar onde ele vai ser acessado, para aumentar a disponibilidade (cache). – Uso de um sistema de replicação de dados entre sites de produção e contingência; Replicação Banco Dados Transparência de Concorrência • Quando estamos em um sistema distribuído os recursos são compartilhados, neste sentido pode haver a concorrência de um determinado recurso compartilhado, isto acontece muito em sistemas de comunicação. • Exemplo: – Dois usuários independentes, em que cada um pode ter armazenado seus arquivos no mesmo servidor de arquivos ou acessar a mesma tabela em um banco de dados. Transparência de Concorrência • Neste sentido, é importante que o acesso ao recurso fique em estado consistente, isto pode ser conseguido através do sistema de travas de acesso, o que dá ao usuário, um por vez, acesso exclusivo ao recurso desejado. Transparência à Falhas • É a capacidade de um sistema distribuído deve ter de ser recuperar de uma falha sem que o usuário perceba que ela ocorreu. • Esta é uma tarefa muito difícil de ser executada, quase impossível, o grande desafio esta em conseguir distinguir se um recurso esta parado ou muito lento. • Exemplo: – Quando solicitamos uma página web e o tempo de espera do browser se esgota e ele avisa que a página não esta disponível, o usuário não tem como saber se realmente o servidor esta fora do ar. Grau de Transparência • Embora a transparência total em sistemas distribuídos seja um ponto importante, há situações em que esta total transparência não seja aconselhável. • Por exemplo, solicitar que seu jornal eletrônico apareça em sua caixa postal antes das 7 horas da manhã, hora local, enquanto você esteja no outro lado do mundo, onde o fuso horário é diferente. Grau de Transparência • A transparência em projetos distribuídos é uma das metas principais, mais dever ser levado em consideração outros aspectos, como o desempenho e facilidade de compreensão. Abertura • Uma meta importante aos sistemas distribuídos é a abertura, os sistemas devem ser capazes de atender as regras de padronização e semântica dos serviços. • Por exemplo, em redes de computadores há regras padronizadas que regem o formato, o conteúdo e o significado de mensagens enviadas e recebidas. Abertura Abertura • Em sistemas distribuídos estas regras são descritas por meio de interfaces, que são descritas por meio de uma linguagem de definição de interface (Interface Definition Language – IDL). • Exemplo: – OMG IDL; – JAVA IDL; Abertura • “Completude e neutralidade são importantes para interoperabilidade e portabilidade” (Blair e Stefani, 1998) Abertura • Interoperabilidade: Caracteriza até que ponto duas implementações de sistemas ou componentes de sistemas diferentes devem coexistir e trabalhar em conjunto, com base na mera confiança mutua, através de um padrão comum. Abertura • Portabilidade: Caracteriza até que ponto uma aplicação A pode ser executada, sem modificação, em um sistema distribuído diferente B. Extensível • Define a capacidade de se adicionar novos componentes ou substituir componentes existentes sem afetar os que continuam no mesmo lugar. • Exemplo: – Ser fácil adicionar partes que são executadas em um sistema operacional diferente, ou até mesmo substituir todo um sistema de arquivo. Escabilidade • A escabilidade de um sistema pode ser medido segundo, no mínimo, três dimensões diferentes (Neuman, 1994): – Tamanho: Fácil adicionar mais usuários e recursos; – Geografia: Onde os usuários e recursos podem estar distantes uns dos outros; – Administração: Fácil de gerenciar, mesmo que abranja muitas organizações administrativas; Problemas Escabilidade • Relação ao tamanho: – Servidores Centralizados: um único servidor para todos usuários; – Dados Centralizados: uma única lista telefônica on-line;;– Algoritmos Centralizados: Fazer roteamento com base em informações completas; • Uma máquina tem informação completa sobre o estado do sistema, ou as máquinas tomam decisões baseadas em informações de outros nós, ou uma falha de um nó pode arruinar o algoritmo, ou assume-se que existe um relógio global. • Mas por vezes é inevitável ter centralização (dados confidenciais de bancos, etc.). Problemas Escabilidade • Relação à distância geográfica: • Em LAN´s é comum usar comunicação síncrona: – Um Cliente envia o pedido e fica bloqueado à espera de uma resposta. • Numa WAN a comunicação pode durar três ordens de grandeza mais (centenas de milisegundos): – Se uma aplicação tem componentes centralizados fica também limitada em termos geográficos. Problemas Escabilidade • Relação à facilidade de administração: • São necessários dois tipos de medidas de segurança quando o sistema distribuído se expande para um novo domínio: – O sistema tem de se proteger de ataques vindos do novo domínio; – O domínio tem de se proteger de ataques vindos do sistema distribuído; Técnicas de escalabilidade • Há basicamente apenas três técnicas para ampliar sistemas: – Ocultar latências de comunicação; – Distribuição; – Replicação; Ocultar latência na comunicação • Ocultar latência na comunicação é importante para conseguir escabilidade geográfica; • Usar comunicação assíncrona para evitar bloquear processos à espera de receber respostas; – Tratamento de respostas como eventos; – Usar várias tarefas em paralelo para continuar processamento; Ocultar latência na comunicação Distribuição • Distribuir entre vários computadores os serviços e dados. Decompondo os componentes em partes menores, que são distribuídas por todo o sistema distribuído: – Exemplos: DNS e Web; • Nenhum servidor prestará todos os serviços nem possuirá todos os dados: – Se um servidor falhar, nem tudo está perdido. Distribuição Replicação • Aumenta a disponibilidade dos serviços e melhora o balanceamento de carga no sistema. Aumenta a disponibilidade do serviço nas zonas da rede onde há réplicas. • Cache é uma forma de replicação controlada pelo cliente. A existência de várias cópias pode levar a problemas de consistência. • Se for necessário ter garantias fortes de consistência tem de se atualizar as cópias imediatamente (ex: Internet banking). Replicação Ciladas • Sistemas distribuídos são diferentes do software tradicional porque os componentes estão dispersos por uma rede; • Não levar essas dispersão em conta durante o projeto é o que torna tantos sistemas desnecessariamente complexos; Ciladas • Segundo Peter Deutsch, existem as seguintes premissas falsas e que todos adotam ao desenvolver uma aplicação distribuída: – A rede é confiável; – A rede é segura; – A rede é homogênea; – A topologia não muda; – A latência é zero; – A largura de banda é infinita; – O custo do transporte é zero; – Há só um administrador; Ciladas • Observe que estas premissas se referem a sistemas distribuídos: confiabilidade, segurança, heterogeneidade e topologia de rede; latência e largura de banda; custo de transporte e ,por fim, domínios administrativos; Traceroute • Traceroute é uma ferramenta que permite descobrir o caminho feito pelos pacotes desde a sua origem até o seu destino. Ele é usado para testes, medidas e gerenciamento da rede. • O traceroute pode ser utilizado para detectar falhas como, por exemplo, gateways intermediários que descartam pacotes ou rotas que excedem a capacidade de um datagrama IP. • Com esta ferramenta, o atraso da "viagem" do pacote entre a origem e gateways intermediários são reportados, permitindo determinar a contribuição de cada gateway para o atraso total da "viagem" do pacote desde a origem até o seu destino. Traceroute • O comando traceroute envia pacotes de pesquisa UDP (UDP probe packets) com um pequeno "time-to-live" máximo (variável Max_ttl), e então, espera por pacotes de resposta "ICMP TIME_EXCEEDED" dos gateways que estão no caminho. • Os pacotes UDP começam com um valor Max_ttl de 1 hop, que é incrementado de 1 hop a cada vez, até que uma mensagem "ICMP PORT_UNREACHABLE" é retornada. Esta mensagem indica que o host destino foi localizado ou que o comando traceroute atingiu o valor máximo de hops permitido para o "trace". Traceroute • traceroute [-m Max_ttl] [-n] [-p Port] [-q Nqueries] [-r] [-s SRC_Addr] [-t TypeOfService] [- v] [-w WaitTime] Host [PacketSize] • O único parâmetro obrigatório para o comando traceroute é o nome ou o o número IP do host destino. O tamanho do pacote UDP (UDP probe packet) é de 38 bytes, mas pode ser aumentado especificando o tamanho do pacote (em bytes) após o nome ou número IP do destino. Duvidas
Compartilhar