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. "
Sistemas Distribuídos: Conceitos, Características e Desafios
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