sistemas_distribuidos.pdf

22
SISTEMAS DISTRIBUIDOS ARQUITETURA DE SISTEMAS COMPUTACIONAIS Joselito Coutinho e Alécio Soares UNIVERSIDADE LUSÓFONA DE CABO VERDE

Upload: joselito-coutinho

Post on 21-Dec-2015

13 views

Category:

Documents


3 download

TRANSCRIPT

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