Download - sistemas_distribuidos.pdf
SISTEMAS DISTRIBUIDOS ARQUITETURA DE SISTEMAS COMPUTACIONAIS
Joselito Coutinho e Alécio Soares
UNIVERSIDADE LUSÓFONA DE CABO VERDE
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
SISTEMAS DISTRIBUIDOS
Arquitetura de Sistemas Computacionais
Docente: Neida Martinho
Joselito Coutinho e Alécio Soares
Junho 2014
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Conteúdo 1. Introdução ........................................................................................................................ 4
2. Sistemas Distribuídos ...................................................................................................... 5
2.1. Objetivo de um sistema distribuído ....................................................................... 6
2.2. Evolução dos sistemas distribuídos ........................................................................ 6
3. Arquitetura dos sistemas distribuídos ........................................................................... 7
3.1. Arquiteturas de múltiplos processadores .............................................................. 7
3.2 Arquiteturas cliente-servidor ................................................................................. 8
3.3 Arquiteturas de objetos distribuídos ..................................................................... 8
4. Caraterísticas dos Sistemas Distribuídos ...................................................................... 9
4.1 Compartilhamento de recursos .............................................................................. 9
4.2 Confiabilidade.......................................................................................................... 9
4.3 Desempenho ...................................................................................................................... 10
4.4 Sistemas de rede X Sistemas Distribuídos ...................................................................... 11
5. Outros aspetos dos Sistemas Distribuídos: ................................................................. 11
5.1 Segurança .......................................................................................................................... 12
5.2 Transparência ................................................................................................................... 12
5.3 Tolerância a falhas ............................................................................................................ 13
6. As camadas de um sistema distribuído........................................................................ 13
7. Vantagens e desvantagens de Sistemas distribuídos. ................................................. 14
7.1 Vantagens de um sistema distribuído ............................................................................. 14
7.2 Desvantagens de um sistema distribuído ........................................................................ 14
8. Tipos (Exemplos) de Sistemas Distribuídos ................................................................ 15
8.1 Internet .............................................................................................................................. 15
8.2 Processadores Multinucleares (Mulicore) ....................................................................... 16
8.3 Clusters .............................................................................................................................. 16
8.4 Cluster Beowulf ................................................................................................................. 17
8.5 Corba 17
8.6 Computação voluntária .................................................................................................... 18
8.7 Peer-to-peer ....................................................................................................................... 18
8.8 Cliente / Servidor .............................................................................................................. 19
8.9 Grids (Grelhas) ................................................................................................................... 19
9. Sistema de ficheiros distribuído ................................................................................... 20
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
9.1 Motivos para utilizar o DFS .................................................................................... 20
9.2 Tipos de DFS ............................................................................................................ 20
10. Conclusão ....................................................................................................................... 21
11. Bibliografia .................................................................................................................... 21
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
1. Introdução
Vivemos numa era onde fazemos uso de sistemas distribuídos com tanta frequência que
às vezes não nos apercebemos da complexidade dos mesmos por serem tão bem
estruturados e eficientes. O presente trabalho visa um estudo da temática dos Sistemas
Distribuídos. Contém uma explanação de seus objetivos, sua arquitetura, e
características no geral entre outros tópicos pertinentes.
“A junção e aplicação de dois grandes grupos de tecnologias, redes de computadores e
microprocessadores com poder de processamento cada vez maior, permitiram a criação
da base do que convencionalmente se chama de sistemas distribuídos”.
(TANENBAUM, 1995).
Segundo Tanenbaum, 1995, a possibilidade de construção de sistemas distribuídos em si
não constitui uma boa ideia. O autor afirma que, devido a existência das tecnologias
atuais, é possível ter as soluções de sistemas distribuídos com todas as eficiências
necessárias devido ao grande poder de processamento existente nos processadores atuais
e uso das diversas redes existentes.
Este trabalho não visa um estudo completo nem muito pormenorizado mas sim estudar
o básico para se conhecer esse magnifico avanço tecnológico.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
2. Sistemas Distribuídos
Semelhante aos Sistemas de Rede, estes sistemas são menos autônomos, com seus
componentes, interagindo o suficiente para dar a impressão de um único sistema. São
vantagens dos Sistemas Distribuídos:
Eficiente compartilhamento de recursos e da carga de trabalho;
Distribuição mais eficiente permite computação mais rápida;
Capacidade de Redundância;
Sistema de Tolerância a Falhas.
Sistemas distribuídos são mais flexíveis e seus componentes possuem maior autonomia
se assemelhando muito a sistemas de rede, porém com o controle de um único Sistema
Operacional, conforme figura abaixo.
Figura 1-Rede de Comunicação
Pode-se dizer que sistemas distribuídos definam-se por, Coleção de computadores
independentes, que cooperam para resolver uma tarefa, mas aparecem como um único
computador para os usuários do sistema, ou seja, uma coleção de computadores
independentes que aparenta ser um único computador aos seus usuários. (A. Tanenbau
[1995])
Conceitos relacionados a hardware e software, estão diretamente relacionados com os
sistemas distribuídos, isto é, um conjunto de componentes hardware (computadores) e
software, interligados através de uma infraestrutura de comunicações, que cooperam e
se coordenam entre si para se apresentam aos seus utilizadores como um conjunto
único, integrado e coerente.
Exemplos:
Os serviços a funcionarem sobre a Internet (E-mail, WWW, FTP);
Os serviços a funcionarem sobre Intranets (E-mail, servidor de ficheiros,
servidor de impressão);
Sistemas de automatização de processos dentro e entre as empresas (Faturação,
relações com os utilizadores, instalações, reparações, Sistemas de saúde,
impostos);
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Sistemas de controlo de processos industriais em fábricas (Linhas de
montagem);
Dispositivos ou máquinas especiais controlados através de conjuntos de
computadores embebidos (Um avião ou um carro);
Os sistemas distribuídos estão generalizados, a maioria dos sistemas baseados em redes
de computadores, em que se executam aplicações envolvendo a cooperação e
coordenação de várias componentes distribuídas, podem ser classificados como
sistemas distribuídos, têm características, requisitos e metodologias de conceção
especiais devido à distribuição, precisam que seus componentes possuam a mesma
tecnologia para obter a ilusão de um sistema único. Esta tecnologia única pode ser
obtida através de hardware ou de software que implemente a portabilidade dos
sistemas.
Um Sistema Operacional único para todos os computadores pode permitir o
balanceamento da carga de trabalho e dos recursos e controlar a redundância dos dados.
Muitas vezes utilizado como sinônimo de Sistemas Distribuídos, o Cluster é o principal
exemplo de sistema distribuído e oferece um compartilhamento de armazenamento,
sendo uma arquitetura intermediária entre sistemas de multiprocessamento utilizada
para computação de alto desempenho com alta confiabilidade.
Clustering assimétrico: Um servidor executa a(s) aplicação(ções) enquanto os
outros ficam em espera.
Clustering simétrico: Todos os hosts estão executando a(s) aplicação(ções).
2.1. Objetivo de um sistema distribuído
O objetivo é criar a ilusão que a aplicação (ou as aplicações) está sendo processada(s) em um
único sistema, permitindo a sensação que tudo isso ocorre sem o compartilhamento de áreas de
memória, no entanto, a sincronização é feita a partir de trocas de mensagens. Faz parte do
objetivo a situação da aplicação ser processada de modo que o ambiente que opera forneça
situações favoráveis ao compartilhamento de recursos, sabendo que diferentes recursos estarão
disponíveis em unidades de processamento diferentes.
2.2. Evolução dos sistemas distribuídos
A decisão de utilizar um sistema distribuído hoje está ligada ao avanço da capacidade de
processamento de sistemas e a possibilidade dos sistemas de obter trabalho conjunto e
cooperativo de sistemas multiprocessador. A evolução dos sistemas distribuídos tem
sido guiada pela evolução tecnológica e expansão da utilização e interligação das redes
de computadores. A evolução das redes de computadores tende a potenciar novas
soluções distribuídas, em particular, o aumento da largura de banda disponível permite
uma maior integração de componentes distribuídas.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Essa evolução pode ser resumida em poucos passos durante a evolução tecnológica:
Primeiros computadores;
Computadores dos anos 50 e 60 (Sistema multiusuário de tempo compartilhado,
Redes de computadores, Sistemas centralizados);
Primeiros computadores com sistemas operacionais;
Surgimento das redes de computadores;
Nos anos 70 início das pesquisas em sistemas distribuídos;
Estações de trabalho mono usuário (SUN, XEROX e Apple);
Redes locais (Ethernet (XEROX), Cambridge Ring);
Sistema Operacional UNIX (1974);
Primeiros sistemas distribuídos experimentais;
Nos anos 80 inicio implementação dos SD;
Microprocessadores com alto poder computacional;
Redes Locais de maior velocidade;
O protocolo TCP/IP torna-se um padrão;
Sistemas Distribuídos (V-System, Amoeba, Sun NFS, March, Sprite,
Chorus, Andrew File System).
3. Arquitetura dos sistemas distribuídos
3.1. Arquiteturas de múltiplos processadores
O sistema é dividido em vários processos.
Os processos podem (mas não necessariamente devem) ser executados por
processadores diferentes.
Quando no mesmo processador, estão sob o controle de um escalonador.
O uso de muitos processadores otimiza o desempenho do sistema. O dispatcher
é o controlador que distribui os processos para os processadores.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
3.2 Arquiteturas cliente-servidor
Os clientes precisam estar informados sobre os servidores disponíveis
Clientes não conhecem clientes
Clientes e servidores são processos separados (falamos de processos distintos e
não necessariamente de computadores diferentes)
A arquitetura mais simples é chamada arquitetura cliente-servidor de duas
camadas.
As arquiteturas cliente-servidor de duas camadas podem ter duas formas:
Modelo cliente-magro: Todo processamento da aplicação e o
gerenciamento de dados são realizados no servidor. O cliente é responsável
simplesmente por executar o software de apresentação. (Ex.: Sistema de
compras na Web)
Modelo cliente-gordo: Neste modelo, o servidor é somente responsável pelo
gerenciamento de dados. O software do cliente implementa a lógica da
aplicação e as interações com o usuário do sistema (Ex.: Caixas ATM)
3.3 Arquiteturas de objetos distribuídos
Remove a distinção entre cliente e servidor.
Os componentes fundamentais do sistema são objetos que fornecem uma
interface para um conjunto de serviços fornecidos.
Em outras palavras, um objeto pode solicitar serviços e fornecer serviços.
Existe um middleware como mediador da comunicação entre os objetos
(requisitor de objetos)
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
4. Caraterísticas dos Sistemas Distribuídos Ter um Sistema Distribuído não significa que ele é a melhor solução. É preciso
observar as características desejadas, como ter um fácil acesso aos seus recursos,
ocultar o fato dos recursos estarem distribuídos em uma rede, ser flexível e poder ser
expandido. Os principais objetivos de um sistema distribuído são:
Compartilhamento de Recursos;
Confiabilidade;
Desempenho.
4.1 Compartilhamento de recursos
A principal meta dos Sistemas Distribuídos é facilitar o acesso a recursos remotos
(hardware, dados, páginas Web, etc...) e seu compartilhamento. A razão óbvia para o
compartilhamento dos recursos é a economia. O compartilhamento também facilita a
colaboração e a troca de informações entre usuários separados geograficamente,
permitindo que trabalhem em conjunto em organizações virtuais.
É mais barato compartilhar uma impressora (ou outro componente) por diversos
usuários do que ter uma impressora para cada usuário. Também é economicamente
justificável compartilhar equipamentos de mais alto custo como supercomputadores ou
mesmo estações de tratamento de imagens e unidades de armazenamento de alto
desempenho e capacidade.
4.2 Confiabilidade
De modo geral espera-se que os sistemas distribuídos sejam mais confiáveis do que
sistemas centralizados, uma vez que existe redundância de recursos. Podemos definir a
confiabilidade como a probabilidade de um sistema estar operando ou funcionando em
certo intervalo de tempo. Para ser confiável, um sistema deve possuir alta
disponibilidade e segurança. É comum utilizar mecanismos de redundância (de
hardware ou software) para melhorar essa confiabilidade do sistema.
Algumas tarefas devem ser executadas de maneira contínua não podendo sofrer
interrupções como aquelas associadas ao sistema financeiro (Bancos, bolsa de valores),
telemedicina e sistemas críticos (tempo real), entre outras. Um sistema para ser
confiável não significa que ele é seguro. A segurança do sistema está ligada a
integridade dos dados e a confiabilidade está associada à operação correta.
Sendo um defeito mecânico ou algorítmico, uma falha ocorre quando o comportamento
do processador não é consistente com sua definição semântica o que gera um erro que
pode causar a paralisação do sistema.
Há dois tipos de falhas dependendo de seu comportamento:
Fail-stop: Em uma falha de parada, o sistema para de funcionar após mudar para o
estado no qual a falha pode ser detetada. É um modo de falha muito simples cujos danos
visíveis são o sistema parar de funcionar na qual o estado interno e os dados contidos
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
neste estado são perdidos. Como estes problemas são visíveis e facilmente detetados, a
sua prevenção é facilitada.
Falha Bizantina: No caso das falhas bizantinas o sistema continua trabalhando, mas
não produz os resultados corretos. Esta falha é tipicamente associada à comunicação
entre os componentes do sistema e normalmente são causadas por erros não detetados
em algum software do sistema e seus danos nem sempre são facilmente visíveis.
Consequentemente são muito mais difíceis de serem detetadas, dificultando sua
prevenção e correção.
Outro aspeto da confiabilidade é a disponibilidade, que pode ser vista como a
probabilidade do sistema estar operando em um determinado instante do tempo e é
essencial para que um sistema seja confiável. Tanto a confiabilidade quanto a
disponibilidade para sistemas críticos são representadas na forma 99,9999% do tempo.
Na prática, esta característica indica o tempo que o sistema pode funcionar
ininterruptamente sem ser afetado por falhas, manutenção preventiva ou corretiva, etc.
4.3 Desempenho
Em geral, espera-se que uma aplicação distribuída apresente um desempenho melhor
que aquele atribuído a um sistema centralizado. O desempenho é uma grandeza que
pode ser avaliada de diferentes formas dependendo do tipo de aplicação, uma vez que
este fator desempenho pode estar associado a diferentes conceitos ou aspetos. Possíveis
variáveis para medidas de desempenho são:
Tempo de resposta do servidor
Throughput (número de jobs por unidade de tempo)
Quantidade de recursos consumidos pela rede
Resultados de benchmarks
Tempo de transmissão de dados
Um sistema com múltiplos processadores fracamente acoplados pode obter um
desempenho que seria impossível em um sistema com um processador, uma vez que
podem reunir uma quantidade muito superior de processadores do que um sistema
fortemente acoplado, mas raramente N processadores tem um desempenho N vezes
maior que um processador (escalabilidade), uma vez que depende de troca de
mensagens.
Por outro lado, um sistema com N processadores custa menos do que um processador
com N vezes mais velocidade, especialmente quando é possível aproveitar máquinas
potencialmente ociosas e realizar tarefas em paralelo, aumentando o throughput do
sistema. Deste ponto de vista, os sistemas distribuídos apresentam uma melhor relação
de preço/desempenho.
Uma solução distribuída também pode fazer uso de paralelismo de execução para
melhorar o desempenho da aplicação, implicando que um determinado problema pode
ser parcialmente resolvido em diferentes máquinas do sistema simultaneamente.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Neste sentido, existem diferentes níveis de paralelismo:
Paralelismo de Granularidade Fina (fine-grained)
Paralelismo de Granularidade Grossa (coarse-grained)
A granularidade consiste na avaliação do nível de detalhamento do comportamento de
um elemento que é exposto. Quanto mais bem detalhado é o comportamento do seu
objeto é exposto, mais fina é sua granularidade.
Atualmente, a granularidade tem recebido particular atenção devido à sua importância
na Arquitetura Orientada à Serviços (SOA) por ser um fator decisivo na definição de
uma abordagem por componentes do sistema que permite maior flexibilidade
(Orientado a Reusabilidade) ou na padronização que permite maior produtividade
(Orientado a Negócios).
4.4 Sistemas de rede X Sistemas Distribuídos
Apesar da semelhança, estes sistemas apresentam uma diferença fundamental. Em um
sistema de rede o usuário tem ciência do ambiente de rede e deve conhecer a
localização do recurso desejado.
Um sistema distribuído possui a característica de “transparência” o usuário
requisitante do recurso não vê o ambiente de rede. A localização do recurso é efetuada
pelo sistema sem necessidade de conhecimento de intervenção do usuário.
5. Outros aspetos dos Sistemas Distribuídos:
Em uma visão mais ampla podemos considerar que os sistemas distribuídos fazem parte
do nosso dia-a-dia e possuem um projeto bastante simples. Mesmo dessa forma é
necessário considerar alguns tópicos que podem ser tornar um desafio no projeto de um
sistema distribuído:
- Heterogeneidade;
- Abertura;
- Segurança;
- Transparência;
- Escalabilidade;
- Tolerância a Falhas;
- Concorrência;
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
5.1 Segurança
Muitas das informações disponíveis nos sistemas distribuídos têm um alto valor
intrínseco para seus usuários, portanto sua segurança é consideravelmente importante. A
segurança para recursos de informação possui três componentes:
Confidencialidade: Proteção contra revelação para pessoas não autorizadas;
Integridade: Proteção contra alteração ou corrupção;
Disponibilidade: Proteção contra interferência em relação ao acesso ao recurso.
A proteção dos recursos compartilhados é um dos grandes problemas dos sistemas
distribuídos, uma vez que o acesso a esses recursos deve ser facilitado para atingir seu
objetivo de compartilhamento.
A codificação dos dados (criptografia) pode prover proteção adequada na transmissão
dos dados, mas ainda é difícil evitar ataques como o de Recusa de Serviço (Denial of
Service - DoS).
Em ataques de Recusa de Serviço (DoS) grandes quantidades de requisições sem
sentido são feitas a um serviço de modo que um usuário que realmente necessita do
serviço não consegue obtê-lo.
5.2 Transparência
Uma das principais necessidades dos Sistemas Distribuídos é tornar o ambiente de rede
invisível provendo a visão de um ambiente único para o usuário. Um Sistema
Distribuído que é capaz de se apresentar a usuários e aplicações como se fosse um único
sistema de computador é denominado transparente (Tanembaum). O objetivo é tornar
certos aspetos da distribuição invisíveis ao programador de forma que ele precise se
preocupar apenas com o projeto de sua aplicação particular.
O usuário não deve ter conhecimento da distribuição de recursos do sistema, portanto é
importante ocultar o fato de que os processos e demais recursos estão fisicamente
distribuídos. Desta forma não é necessário se preocupar com o local onde uma aplicação
está instalada ou os detalhes de como suas operações serão acedidas por outros
componentes.
Assim, os recursos que não são diretamente relevantes para a execução de uma tarefa de
interesse num determinado instante são escondidos e passam anônimos através da
transparência.
É fácil perceber que, apesar das vantagens, a transparência nem sempre é desejada. Veja
o caso em que o usuário necessita, por exemplo, um documento impresso. É usual que o
trabalho seja executado em uma impressora próxima ao usuário, sendo mais
conveniente deixar que o usuário faça a escolha dessa impressora. Na prática, um
sistema transparente oculta alguma informação do usuário ou dos processos.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Transparência Descrição
Acesso Oculta diferenças na representação de dados e no modo de acesso
Localização O local do recurso é desconhecido
Migração e relocação O recurso pode ser movido, inclusive enquanto está em uso
Replicação
Múltiplas instâncias de um recurso podem ser utilizadas para aumentar confiabilidade e desempenho sem o conhecimento destas réplicas
Concorrência Vários usuários podem compartilhar o mesmo recurso.
Falha A falha e a recuperação de um recurso não podem afetar o sistema
Tabela 1-Tipos de transparência
5.3 Tolerância a falhas
Tolerância a Falhas é a capacidade de o sistema sobreviver à falha de alguns dos seus
elementos e está associado intimamente à transparência de falhas, confiabilidade e
disponibilidade do sistema.
Em sistemas distribuídos, espera-se que a falha de um componente do sistema não afete
de maneira significativa a tarefa sendo realizada, isto é, pode haver perda de
desempenho, mas a tarefa é realizada. Questões sobre o efeito de uma falha no sistema
são as mais difíceis de responder e sanar e dependem dos objetivos do sistema, bem
como de sua estrutura de recursos.
Tipicamente obtém-se a tolerância a falhas com a redundância de hardware e software.
Se as características de transparência discutidas anteriormente forem atingidas, é
possível migrar um recurso de hardware e software de um sistema para outro que esteja
disponível sem o conhecimento do usuário.
6. As camadas de um sistema distribuído Segundo Tanenbaum, 1995, um sistema distribuído é uma “coleção de computadores
independentes que se apresenta ao usuário como um sistema único e consistente”.
Devido à total ausência de memória compartilhada, toda a comunicação nos sistemas
distribuídos é baseada em troca de mensagens.
Sistemas Distribuídos são organizados por camadas de softwares logicamente colocadas
entre camadas superiores constituído de: usuários e aplicações, e camada de mais baixa
nível: sistema operacional.
Aplicações e Serviços: Aplicações dos usuários e serviços de auto nível;
Middleware: camada de software que esconde heterogeneidade e fornece um
modelo de programação;
Sistema Operacional: Controla a execução das aplicações dos usuários;
Computador e hardware de rede;
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Os componentes, Sistema Operacional, Computador e hardware de rede, formam juntos
o que se convencionou chamar de plataforma, ou seja, estes dois níveis inferiores de
software e hardware fornecem serviços aos níveis superiores e são implementados de
acordo e em função desta plataforma. Plataformas principais: Intel x86(Windows,
Linux, Solares), SPARC/SunOS e PowerPC/MacOS.
7. Vantagens e desvantagens de Sistemas distribuídos.
7.1 Vantagens de um sistema distribuído
Os sistemas distribuídos oferecem diversas vantagens tecnológicas em execução de
algumas tarefas se comparado com o sistema tradicional de processamento local como
por exemplo o custo/performance, o atendimento as necessidades de aplicações
essencialmente distribuídas, tendem a serem fortemente confiáveis além do crescimento
gradual de acordo com a carga de trabalho.
Eficiente compartilhamento de recursos e da carga de trabalho
Distribuição mais eficiente permite computação mais rápida
Capacidade de Redundância – Sistema de Tolerância a Falhas
Económica: aproveita máquinas potencialmente ociosas; mais barato ter vários
processadores interconectados do ter um supercomputador;
Velocidade: a capacidade de interconectar processadores possibilita que se
obtenha performances que apenas um sistema composto é capaz de atingir;
Distribuição inerente: algumas distribuições são distribuídas por natureza.
Tolerância a falhas: quando uma máquina falha, o sistema como um todo pode
continuar funcionando, apenas apresentando um diminuição no seu desempenho.
Crescimento Incremental: pode-se aumentar o poder computacional através da
inclusão de novos equipamentos.
Flexibilidade: os sistemas distribuídos são mais flexíveis do que maquinas
isoladas, por essa razão são muitas vezes utilizados até mesmo sem a
necessidade de maior desempenho. Esta flexibilidade permite que vários
usuários compartilhem dados e periféricos.
7.2 Desvantagens de um sistema distribuído
Como todo sistema, ele apresenta também alguns pontos que podem ser considerados
desvantagens como o desenvolvimento de software muito complexo, possíveis gargalos
por dependência de rede de comunicação e falta de segurança intrínseca.
Poucos softwares de auto nível disponíveis para sistemas distribuídos;
Dificuldade para evitar acesso indevido - questões de segurança;
A rede de interconexão pode causar problemas ou não dar a vazão exigida pela
demanda;
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
Software: Pouco conhecimento sobre software de sistemas distribuídos pelos
usuários;
A rede pode saturar ou cometer erros.
Necessidade de algum nível de padronização de hardware e software
Dentre as grandes vantagens por optar por um sistema distribuído, a performance foi
sem dúvida a principal entre elas, mas observando os trabalhos apresentados em
conclusões acadêmicas e leitura técnica, é possível que outro fator esteja tendo grande
influência nas decisões de projetos. Este fator é a utilização de navegadores, ou
browsers para utilização dos programas e aplicativos o que apresenta facilidades uma
vez que não requer treinamento específico para uso da interface apresentada ao usuário
final e além das aplicações poderem ser utilizadas de forma local ou via Internet.
8. Tipos (Exemplos) de Sistemas Distribuídos
8.1 Internet
Através de um protocolo de comunicação relativamente simples, é possível realizar
trocas de arquivos como: música, vídeo e demais tipos de dados com computadores
localizados em várias partes do planeta.
Considerando que os sistemas distribuídos são compostos por várias fontes de
processamento, armazenamento e transmissão de dados, os recursos referentes ao
hardware necessário para possibilitar tal capacidade de processamento e propagação
dos dados pelos sistemas distribuídos podem ser organizados de formas totalmente
diferentes entre si.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
8.2 Processadores Multinucleares (Mulicore)
Basicamente os processadores Multinucleares distribuem as tarefas entre os vários
núcleos, o que dinamiza o processamento, esse conceito passou a ser utilizado após as
empresas fabricantes de chips atingirem o clock máximo dos processadores, o que não
possibilitava um aumento de produtividade dos chips nesse aspeto, dessa maneira a
solução encontrada foi implementação de mais núcleos em um mesmo processador,
trabalhando em conjunto eles elevaram de forma estrondosa o poder de processamento
das máquinas atuais.
8.3 Clusters
É o exemplo que mais facilita o entendimento do conceito de sistemas distribuídos.
Por definição é um sistema onde dois ou mais computadores trabalham de maneira
conjunta para realizar processamento pesado. Em outras palavras, os computadores
dividem as tarefas de processamento e trabalham como se fossem um único
computador, assim como ocorre nos processadores multinucleares.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
8.4 Cluster Beowulf
O nome Beowulf vem de um herói muito valente que tinha a missão de derrotar um
monstro, em um texto inglês antigo. Esse tipo de cluster, voltado à computação paralela,
foi fundamentado em 1994, pela NASA, com a finalidade de processar as informações
espaciais que a entidade recolhia. Desde então, grandes empresas (como HP e IBM) e
universidades (como a brasileira Unesp) vêm construindo clusters deste tipo e como
cada vez mais nós!
O que distingue o Cluster Beowulf dos outros tipos são as seguintes características (que
são aplicadas de acordo com a finalidade do cluster):
A conexão dos nós pode ser feita por redes do tipo Ethernet (mais comum);
Existe um servidor responsável por controlar todo o cluster, principalmente
quanto a distribuição de tarefas e processamento (pode haver mais de um
servidor, dedicado a tarefas específicas, como monitoração de falhas). Este
servidor é chamado de Front-end;
O sistema operacional é baseado Linux, sendo necessário que ele contenha todos
os programas para cluster;
Pode-se usar computadores comuns, inclusive modelos considerados obsoletos;
Não é necessário usar equipamentos próprios para clusters. Basta equipamentos
comuns à redes e os tradicionais Pcs.
8.5 Corba
A necessidade de integração aplicações que se encontram em ambientes heterogêneos e
a necessidade de comunicação entre elas em tempo-real está fazendo com que a
computação distribuída ganhe cada vez mais espaço no mundo atual.
O DCE (Distributed Computer Environment) foi o começo dessa tendência de
computação distribuída em empresas, porém o DCE não é orientado a objeto, assim
surgiu o CORBA, que é uma arquitetura de objetos para computação distribuída.
Junto com ele veio o DCOM da Microsoft. O DCOM é o principal concorrente do
CORBA, a diferença entre essas duas tecnologias é que o CORBA roda em
multiplataforma, enquanto o DCOM só em ambientes Windows.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
8.6 Computação voluntária
Computação voluntária é um tipo de sistema distribuído em que pessoas (computadores
voluntários) provêm recursos computacionais para projetos. Estes projetos utilizam os
recursos para realizarem computação distribuída ou armazenamento de dados.
Os voluntários são normalmente anônimos. Sendo anônimos eles não são cobrados de
responsabilidades nos projetos. Eles são apenas convencidos pelos representantes dos
projetos que não sofrerão danos em seus dados pessoais ou sistema operacional.
Existem duas características básicas que faz com que a computação voluntária seja
diferente da computação em grade para desktop. A segunda demanda uma
responsabilidade para os computadores do projeto e os computadores não são anônimos.
A computação em grade é mais utilizada em organizações. Se uma organização não se
compromete com o combinado sobre seus recursos, as outras organizações têm a
possibilidade de serem informadas e penaliza-la no quesito de recursos compartilhados
para ela.
8.7 Peer-to-peer
Uma rede Peer-to-Peer (P2P) consiste num conjunto de computadores que comunicam
entre si de forma descentralizada, isto é, sem a necessidade de um nó ou nós centrais
responsáveis por gerir as ligações entre eles.
Este tipo de rede não assenta por isso na arquitetura tradicional de cliente-servidor em
que tipicamente os clientes efetuam pedidos a um servidor central e este responde aos
pedidos dos clientes.
Numa rede P2P todos os elementos são conhecidos como nós, que acumulam as funções
de cliente (efetuando pedidos a outros nós) e de servidor (respondendo a pedidos de
outros nós).
A utilização mais conhecida para este tipo de redes é a partilha de ficheiros, no entanto
este tipo de redes são utilizadas em computação e armazenamento distribuídos.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
8.8 Cliente / Servidor
Cliente-servidor é um modelo computacional que separa clientes e servidores, sendo
interligados entre si geralmente utilizando-se uma rede de computadores. Cada instância
de um cliente pode enviar requisições de dado para algum dos servidores conectados e
esperar pela resposta.
Por sua vez, algum dos servidores disponíveis pode aceitar tais requisições, processá-las
e retornar o resultado para o cliente. Apesar do conceito ser aplicado em diversos usos e
aplicações, a arquitetura é praticamente a mesma. A máquina servidor é um host que
está executando um ou mais programas de servidor que partilham os seus recursos com
os clientes.
Um cliente não compartilha de seus recursos, mas solicita o conteúdo de um servidor ou
função de serviço. Os clientes, portanto, iniciam sessões de comunicação com os
servidores que esperam as solicitações de entrada.
8.9 Grids (Grelhas)
É um ambiente computacional de alto desempenho, distribuído paralelo que permite o
compartilhamento, a seleção, a agregação de recursos autônomos e geograficamente
distribuídos.
Grid computacional: Tem o enfoque voltado para o processamento de dados.
Portanto é importante que se tenha máquinas de alto desempenho.
Grid varredor: é feita uma varredura no pc dos recursos e ciclos de CPU
ociosos, para que possam ser utilizados pela grid. Contudo, os donos dos
computadores sempre têm o controlo sobre os recursos que estão participando
do Grid.
Grid de dados: Nesse tipo de grid, diversas organizações armazenam e acedam
os dados compartilhados. Neste caso, os usuários não sabem aonde se localizam
os dados, apesar de terem acesso às informações.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
9. Sistema de ficheiros distribuído Com o Sistema de Ficheiros Distribuído (DFS), os administradores do sistema podem
facilitar aos utilizadores o acesso e a gestão de ficheiros distribuídos fisicamente em
uma rede. Com o DFS, pode fazer com que os ficheiros distribuídos por vários
servidores sejam apresentados aos utilizadores como se residissem num único local da
rede. Os utilizadores já não necessitam de saber nem de especificar a localização física
real dos ficheiros para terem acesso aos mesmos.
Por exemplo, se tiver material de marketing espalhado por vários servidores num
domínio, poderá utilizar o DFS de modo a fazer com que esse material pareça residir
todo num único servidor. Isto impede que os utilizadores tenham de ir a várias
localizações na rede para localizarem as informações de que necessitam.
9.1 Motivos para utilizar o DFS
Deve considerar a implementação do DFS se:
Estiver a pensar em adicionar servidores de ficheiros ou modificar localizações
dos ficheiros.
Os utilizadores com acesso a destinos estiverem distribuídos por um ou mais
locais.
A maior parte dos utilizadores necessitarem de ter acesso a vários destinos.
O balanceamento de carga do servidor puder ser melhorado através da
redistribuição de destinos.
Os utilizadores necessitarem de ter acesso ininterrupto aos destinos.
A sua empresa tiver Web sites para utilização interna ou externa.
9.2 Tipos de DFS
Pode implementar um sistema de ficheiros distribuído de uma de duas formas: como um
sistema de ficheiros distribuído de raiz autónoma ou de domínio.
UNIVERSIDADE LUSÓFONA – CABO VERDE Curso de Licenciatura em Engenharia Informática
Joselito Coutinho e Alécio Soares Arquitetura de Sistemas Computacionais
10. Conclusão
Ao chegar ao fim do trabalho, estamos satisfeitos com o conhecimento adquirido e tal como se
referiu no início tratamos do essencial para se entender os Sistemas Distribuídos.
Nos resta dizer que os Sistemas Distribuídos vieram para ficar e moldaram completamente a
forma como usamos os sistemas computacionais. Desde o próprio interior do computador com
processadores multinucleares, passando pelos sistemas de multiprocessadores chegando às
grandes redes computacionais à escala mundial, os sistemas distribuídos servem de base a
diversos serviços que usamos no dia-a-dia.
Não esgotamos todos os tópicos que se podem atribuir aos sistemas distribuídos pelo que
poderá ser aprofundado os próprios tópicos aqui discutidos e possivelmente outros que não
foram retratados. Graças a um dos maiores exemplos de sistemas distribuídos (a internet) nos
foi possível pesquisar e trazer estes resultados que de outra forma seria mais complicado
devido à fraca quantidade de bibliografia encontrada na biblioteca posta a nossa disposição.
Nos resta agradecer pelo desafio da parte de nossa docente, ao qual recebemos com agrado.
11. Bibliografia
Sistemas Distribuídos EVOLUÇÃO DOS SISTEMAS DISTRIBUÍDOS, Prof. PEIRO
Gregorio Perez;
Sistemas Distribuídos, GOMES, Edeyson Andrade;
Introdução aos sistemas distribuídos, PREGUIÇA, Nuno;
https://oswaldo.pro.br/sistemasdistribuídos
https://sites.google.com/site/sisdisfernandoedvaldo/exemplos-de-sistemas-distribuidos
http://ti.crinfo.com.br/?p=86
SISTEMAS DISTRIBUÍDOS, Prof. BARCELAR, Ricardo Rodrigues
http://www.ricardobarcelar.com.br