



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Resumo do Capítulo 1 e 2 da matéria de sistemas distribuidos
Tipologia: Resumos
1 / 7
Esta página não é visível na pré-visualização
Não perca as partes importantes!




Universidade Federal do Amazonas - UFAM Aluno: Lucas Ribeiro Almeida – Matrícula 21854941 Disciplina: Sistemas Distribuídos Professor: Eduardo James Pereira Souto RESUMO DOS CAPÍTULOS 1 e 2. Livro: Sistemas Distribuídos: princípios e paradigmas - Andrew Tanenbaum & Maarten Steen - 2° edição Capítulo 1: INTRODUÇÃO Inúmeras definições de Sistemas Distribuídos já foram dadas em várias literaturas diferentes de acordo com autor, mas entende-se como sistemas distribuídos “um conjunto de computadores independentes que se apresenta a seus usuários como sistema único e coerente ”. Assim sendo, com base no foi definido podemos entender que um sistema distribuído é constituído de componentes autônomos, para que quando estiver sendo acessado, seja por pessoas ou por outros programas, passe a ideia de unidade, ou seja de um único sistema, fazendo assim com que cada um dos componentes colaborem entre si, logo manter essas conexões bem estabelecidas e funcionando é cerne do sistema, não se atendo aos tipos de computadores, sejam eles mainframes ou nós em redes de sensores, nem a como a conexão entre os mesmo são feitas, mantendo sempre o objetivo a cerca desse tipo de sistema, que é a ocultação de como essa comunicação é feita de quem o usa. Para controle e organização dos computadores e redes heterogêneas é preciso que tudo esteja fluindo da melhor forma, visto que as aplicações e quem as usa não deve ser capaz de notar problemas em partes que estejam sendo trocadas ou consertadas, e para manter essa uniformidade os sistemas são organizados através de uma camada de software, que fica situada entre a aplicação e o sistema operacional (SO) denominada middleware, que como o próprio nome diz é a camada do meio, permitindo então que os componentes de uma aplicação que esteja distribuída se comunique uns com os outros, ao passo que o sistema oculta para o usuário da melhor forma possível as diferenças que possam existir entre computadores (hardwares) e o SO. A principal meta de um sistema distribuído é promover a facilidade aos seus usuários o acesso de recursos de forma remota assim como seu compartilhamento de
maneira controlada e eficiente, visto que fazer essas conexões entre usuários e recursos facilita na colaboração e na troca de informações. Outra meta muito importante para a construção de um sistema é, como dito anteriormente, ocultar que os processos acontecem de forma segmentada, ou seja, de forma distribuída em vários computadores, com intuito sempre de se mostrar um sistema único e coeso, que será denominado transparente, transparência essa que pode ser dividia em vários aspectos, como a transparência de acesso que oculta as diferenças na representação de dados e no modo de acesso a um recurso, a de localização que oculta o lugar em que um recurso está localizado, a de migração que oculta que um recurso possa ser movido para outra localização, de relocação que oculta que um recurso pode ser movido para uma outra em quanto está em uso, de replicação que oculta quando um recurso é replicado, de concorrência que oculta que um recurso pode ser compartilhado por diversos usuários concorrentes e a de falha que oculta a falha propriamente dita e a recuperação de um recurso. A terceira meta para a elaboração de um sistema distribuído é a de abertura, que tem como objetivo oferecer serviços de acordo com regras já padronizadas que descrevem a sintaxe e a semântica desses serviços, que em sistemas distribuídos de forma geral esses serviços são especificados através de interfaces que normalmente são descritas em linguagem de definição de interface (Interface Definition Language – IDL ), que buscam sempre capturar apenas a forma sintática dos serviços e a parte difícil é especificar com precisão o que esses serviços fazem, isto é, especificar a semântica das interfaces. A quarta meta é a escalabilidade, que mede a capacidade do sistema em lidar facilmente com uma quantidade crescente de trabalho, e que pode ser medidas em três dimensões diferentes. O sistema pode ser escalável em relação ao seu tamanho, que é capacidade de processar e adicionar um número maior de usuários e recursos ao sistema, o sistema pode ser escalável também em relação a termos geográficos que faz com que usuários e recursos possam estar longe uns dos outros sabendo assim então qual a capacidade máxima de distância entre nós e por fim o sistema pode ser escalável em termo administrativos, que busca fazer com que o sistema seja fácil de ser gerenciado ainda que englobe muitas organizações administrativas diferentes, no entanto ainda que útil o um sistema escalável em uma ou mais dimensões pode apresentar muitas vezes falhas e perdas na capacidade de desempenho à medida que ele é ampliado, e para isso existem três técnicas que são usadas com o intuito de resolver esses problemas que são a técnica de ocultar latência de comunicações que tenta ao máximo evitar a espera por requisições
diferentes, visto que em casos desses tipos encontramos sistemas distribuídos em que se espera instabilidade no lugar da estabilidade padrão, e esse tipo de sistema recebe o nome de sistemas distribuídos pervasivos, que além do que foi dito se caracterizam por seu pequeno tamanho, por uma alimentação a bateria, por mobilidade e por usarem conexão sem fio, apesar de que nem todos os dispositivos se aplicam a todas essas características, já que elas não são de caráter restritivas. Um dos tipos que ao passar dos anos tem se tornado cada vez mais popular é sistema doméstico, que é um sistema pervasivo, mas que por sua vez possa ser um dos menos restritos, estando montado aos redores de redes domésticas, como o próprio nome diz, usando geralmente um ou mais computadores pessoais, no entanto o que mais o torna importante é a integração de eletrônicos populares como TV, equipamentos de áudio e vídeo, mesmo com todos os prós até que esse sistema de solidifique muitos desafios ainda precisam ser enfrentados, um deles é que o sistema precisa ser autoconfigurável e autogerenciável, visto que a manutenção de sistemas para usuários finais não é o mais indicado. Uma segunda classe de sistemas pervasivos que tem crescido é a de tratamento eletrônico de saúde, tendo em vista o aumento do custo de tratamentos médicos, estão em desenvolvimento dispositivos que monitorem a o bem-estar de pessoas e que entre automaticamente em contato com médicos quando for necessário, e seriam constituídos de vários sensores organizados em uma rede de área corporal e de preferência sem fios, visto que essa rede deve funcionar quando a pessoas estiver em movimento, sem que a pessoa precise estar presa a fios elétricos a dispositivos móveis. E por último, um outro exemplo de sistemas pervasivos são as redes de sensores, que em muitos casos são elas partes da tecnologia que habilita a pervasividade. O que torna esse tipo de rede interessante levando em consideração a perspectiva de sistemas distribuídos é que em praticamente todos os casos elas são usadas para processar informações, e nesse sentido elas mais do que apenas fornecer serviços e de comunicação que é o objetivo principal desse tipo de rede.
Capítulo 2: Arquiteturas A organização de sistemas distribuídos trata na maior parte do tempo de componentes de software que constituem o sistema, essas arquiteturas de software nos dizem como os vários componentes devem ser organizados. A realização efetiva de um sistema distribuído implica que especifiquemos e coloquemos componentes de software em máquinas reais, assim para que isso ocorra existem diferentes possibilidades, e a especificação final de uma arquitetura de software é chamada de arquitetura de sistemas, e por sua vez usando componentes e conectores, podemos chegar a várias configurações e classificar os estilos arquitetônicos, como arquitetura em camadas, arquitetura baseada em objetos, arquitetura centrada em dados e arquitetura baseadas em eventos. A base da arquitetura em camadas é simples, como o próprio nome já nos mostra os componentes são organizados em camadas, tal como um componente em uma camada arbitrária L pode chamar outro em uma camada subjacente, mas nunca o contrário, modelo esse que é bastante usada na comunidade de redes, e que de forma geral o controle flui de camada para camada enquanto que as requisições descem pela hierarquia, ao passo que resultados fluem para cima. A arquitetura baseada em objetos é uma organização bem mais solta, e tem como ideia que cada objeto corresponde a um componente, e esses mesmos componentes são conectados por meio de chamada de procedimento de forma remota. A terceira arquitetura é a centrada em dados, que tem seu desenvolvimento em torno da ideia de que processos se comunicam por meio de um repositório comum (passivo ou ativo). E em sistemas distribuídos essa arquitetura é tão importante quanto as arquiteturas em camadas e as baseadas em objetos. A quarta arquitetura é a baseada em eventos, na qual processos se comunicam através de propagação de eventos que transportam dados, que em sistemas distribuídos são geralmente associadas a sistemas de publicar e subscrever, tendo como sua principal vantagem que em eventos os processos são fracamente acoplados, assim eles não precisam se referir de forma explicita uns aos outros, o que também são comumente conhecidos como referencialmente desacoplados. Em arquitetura de sistemas centralizadas temos o modelo cliente-servidor, onde o servidor é aquele que implementa um serviço específico e o cliente é quem requisita esse serviço e espera por uma resposta, e esse mecanismos é chamado de comportamento requisição-resposta. Considerando as aplicações e sua escalabilidade temos dentro uma
consulta de busca, chamada de tempestade broadcast, o que não é um método muito eficiente ,e uma das metas desse tipo de sistema é construir uma rede de sobreposição parecida com um gráfico aleatório. Uma terceira arquitetura peer-to-peer é a de superpares, quando se tenta buscar em uma rede não estruturada a medida que a mesma cresce pode ser algo problemático, o motivo desse problema de escalabilidade é que como não existe nenhum modo determinístico para rotear uma requisição de pesquisa até um item de dado específico, em suma, a única técnica à qual um nó pode recorrer é enviar a requisição a todos os nós, assim em uma rede de superpar nessa organização todo par comum está conectado como cliente a um superpar e toda comunicação para um par ocorre por meio daquele superpar associado ao par, e em muitos casos a relação cliente-superpar é fixa, assim sempre que um par comum se juntar à rede ele se liga a um dos superpares e continua ligado até siar da rede, assim se espera que superpares sejam processos de longa vida com alta disponibilidade e para compensar o comportamento potencialmente instável de um superpar, podem-se disponibilizar esquemas de segurança, como montar todos pares de cada superpar com um outro superpar para todos os superpares e requerer que os clientes se liguem a ambos. E por fim temos as arquiteturas híbridas, que são a junção das arquiteturas centralizadas e descentralizadas, onde irá atuar como centralizada na hora de servir o diretório e descentralizada na distribuição do conteúdo. Como um modelo arquitetura desse tipo temos sistemas distribuídos colaborativos, que inicialmente um esquema de procura pelo cliente-servidor tradicional, e subsequentemente o nó junta-se para dar um mecanismo centralizado de colaboração.