Distributed Systems - Exercises
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Distributed Systems - Exercises

  • 298 views
Uploaded on

We define a distributed system as one in which hardware and software are located on computer networks and communicate and coordinate their actions through the messaging system. According to Andrew......

We define a distributed system as one in which hardware and software are located on computer networks and communicate and coordinate their actions through the messaging system. According to Andrew Tanenbaum, is a "collection of independent computers that appears to the user as a single, consistent system" since the second George Coulouris, is a "collection of autonomous computers interconnected by a computer network and equipped with software that allows sharing of system resources: hardware, software and data. "

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
298
On Slideshare
298
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
5
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Sistemas Distribuídos Michel Alves dos Santos ∗ 4 de maio de 2011 1 Introdução. Conceitue Sistemas Distribuídos, aponte a principal motivação de sua adoção, liste pelo menos três características e aponte alguns desafios relativos a sua implementação. Definimos um sistema distribuído como um sistema no qual componentes de hardware e software são localizados em redes de computadores e se comunicam e coordenam suas ações através da transferência de mensagens. Segundo Andrew Tanenbaum, é uma “coleção de computadores independentes que se apresenta ao usuário como um sistema único e consistente”, já segundo George Coulouris, é uma “coleção de computadores autônomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados”. A principal motivação para a adoção de Sistemas Distribuídos é o compartilhamento de recursos. Abaixo são listadas três características inerentes a Sistemas Distribuídos: • Concorrência de Componentes; • Ausência de Clock Global; • Independentes de falhas de componentes; Alguns desafios que podem ser apontados em relação a sua implementação são: • Heterogeneidade de seus componentes; • Abertura/Openness (componentes podem ser adicionados ou substituídos) • Segurança: como prover segurança para sistemas híbridos/heterogêneos • Escalabilidade (deve funcionar bem quando o número de usuários aumenta) • Manipulação/Tratamento/Recuperação de falhas • Concorrência de componentes • Transparência ∗ Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: michel.mas@gmail.com, michelalavessantos@hotmail.com. Disciplina: Sistemas Distribuídos. Docente Responsável: Willy Tiengo. 1
  • 2. 2 Comunicação. Por que a comunicação entre Sistemas Distribuídos é realizada através da transferência de mensagens? Para que ocorra comunicação entre duas entidades inseridas nesse contexto, o que devemos estabelecer? A comunicação é realizada através da transferência de mensagens devido a ausência de memória global compartilhada entre os componentes. Para que ocorra comunicação entre duas ou mais entidades inseridas nesse contexto devemos estabelecer um protocolo(padrão, especificação) de comunicação. 3 Camadas de Software e Hardware em Sistemas Distribuídos. Conceitue Middleware, cite pelo menos dois produtos comerciais relacionados com esse conceito e disponha os seguintes elementos em um diagrama de 4 níveis, colocando-os em ordem de comunicação dentro do contexto de Sistemas Distribuídos: [Middleware], [Aplicações e Serviços], [Computadores e Hardware de Rede], [Sistema Operacionais]. Middleware é uma camada de software cujo propósito é mascarar heterogeneidade e prover um modelo de programação conveniente para fornecedores e programadores de aplicação. É utilizado para mover ou transportar informações e dados entre programas de diferentes protocolos de comunicação, plataformas e dependências do sistema operacional. É composto por um conjunto de processos ou objetos em um grupo de computadores, que interagem entre si de forma a implementar comunicação e oferecer suporte para compartilhamento de recursos e aplicativos distribuídos. Exemplos de produtos comerciais relacionados com esse conceito são: • Java RMI (Remote Method Invocation) • CORBA (Common Object Request Broker Architecture) • Ginga (Gerenciador de funções de interatividade em TV digital) Logo abaixo podemos visualizar como a comunicação entre os elementos providos e os próprios elementos estão dispostos em um diagrama de níveis: Figura 1: Disposição dos elementos fornecidos em um diagrama de 4 níveis levando em consideração a ordem de comunicação dos mesmos dentro do contexto de Sistemas Distribuídos. 2
  • 3. 4 Arquitetura de Sistemas. Identifique os tipos de sistemas fornecidos logo abaixo levando em consideração a arquitetura que os mesmos apresentam e provendo um exemplo ou situação de aplicação de cada um deles. a. Um servidor respondendo a vários clientes e requisitando/respondendo a outro(s) servidor(es). b. Um conjunto de servidores que executam de forma sincronizada um determinado serviço mantendo cópia (réplica) do conjunto de objetos sobre os quais o serviço é baseado ou particionando-os entre as máquinas componentes dessa estratégia. c. A requisição de informações e as respostas para essas requisições são executadas através de um intermediário que também pode possuir a função de armazenamento temporário dessas informações(cache) com o intuito de agilizar o processo de resposta de pedidos recentes para os quais a informação original não tenham sido alterada na fonte. d. Tanto informação como meio de sincronização e acesso se encontram compartilhados, fazendo com que todos requisitem e respondam com um grau de hierarquia equilavente. Todos os serviços que estão sendo executados (cada qual em seu host/máquina) detêm o código da aplicação e o código de coordenação das ações de compartilhamento. 3
  • 4. Do ponto de vista da Arquitetura de Sistemas o primeiro refere-se a arquitetura Cliente-Servidor. O servidor central poderia estar no papel de um servidor web provendo páginas/conteúdo para vários clientes. Ao mesmo tempo, o servidor web estaria no papel de cliente no momento da requisição de informações a um servidor DNS. Servidores Web e a maioria dos serviços Internet são clientes do serviço DNS. Já no segundo sistema teríamos uma simplificação de um arquitetura de Serviços Providos por Múltiplos Servidores, que se utiliza da replicação como estratégia para aumentar a performance, a disponibilidade e melhorar a tolerância à falhas. Um bom exemplo seria a estrutura de serviços web provida pela google.com que é mapeada sobre diversos servidores. Um outro exemplo seria o serviço NIS usado para autenticação de usuários em rede. Cada servidor NIS tem sua própria réplica do arquivo de senhas contendo uma lista de nomes de login de usuários e senhas criptografadas. Para o terceiro sistema teríamos uma arquitetura de Serviços de Procura e Armazenamento Temporário - Proxy Server and Cache. Esse tipo de arquitetura é muitas vezes usada para prover segurança e respostas rápidas para requisições recentemente realizadas, pois ocorre armazenamento temporário de todos os objetos que foram requisitados através desse serviço. Caso o objeto requisitado esteja em cache e o mesmo não tenha sofrido nenhuma atualização em seu servidor de origem então o objeto armazenado temporariamente no servidor proxy será imeditamente remetido ao cliente. Um bom exemplo de utilização de servidores proxy é o serviço Squid disponível para Sistemas Operacionais UNIX e Like UNIX. Finalmente o último sistema diz respeito a Arquitetura Peer-to-Peer. A arquitetura Peer-to-Peer é uma arquitetura de sistemas distribuídos caracterizada pela descentralização das funções na rede, onde cada nodo realiza tanto funções de servidor quanto de cliente. O seu design garante que cada usuário contribua com recursos para o sistema, apesar de que eles podem diferir nos recursos que contribuem. Todos os nodos em um sistema peer-to-peer possuem as mesmas capacidades funcionais e responsabilidades. Alguns exemplos dessa arquitetura são as redes de compartilhamento Gnutella, Napster, P2PTV e BitTorrent. 5 Considere um ambiente no qual a descoberta de um determinado serviço (residente em um host/máquina) é feita através da disseminação de mensagens em broadcast. Considere ainda que ao interceptar a mensagem de requisição o servidor que abriga o serviço solicitado responda com um “i am here”. Explique porque o esquema apresentado não é adequado e como poderíamos melhorar a performance desse ambiente em relação a descoberta de um serviço. O esquema apresentado não é adequado pois as solicitações em broadcast podem degradar a performance da rede como um todo(impacto direto na escalabilidade do mesmo). Uma solução e a introdução de um servidor controlador, que a priori conheceria todos os endereços dos serviços, ou seja, a implantação de um serviço de nomeação. 4