Definições:
“Coleção de computadores independentes que aparecem
para os usuários do sistema como um único computador.”
Tanenbaum & van Steen
“Um sistema em que componentes de hardware
e software localizados em computadores em rede se comunicam e
coordenam suas ações por passagem de mensagens.”
(Coulouris et al)
Motivação do uso de SD: É motivado pelo desejo/necessidade de compartilhar recursos. Esses
recursos, têm um significado amplo, podem ser caracterizados com um conjunto de coisas que
podem ser compartilhadas de maneira útil em sistema de computadores interligado em rede.
Abrange de hardwares (discos e impressoras) até entidades definidas pelo software ( arquivos,
BD’s, e obejtos de dados - fluxo de quadros de vídeo e conexão de aúdio de uma chamada).
Problemáticas que envolvem os SD’s:
● Concorrência de componentes: A coordenação de programas concorrentes (funcionam
ao mesmo tempo em pc’s diferentes) em execução e que compartilham recursos.
● Falta de relógio global: Quando os programas cooperam entre si, eles coordenam suas
ações trocando mensagens. A coordenação depende de uma noção compartilhada de
tempo - sincronia. Não existe uma noção global única do tempo.
● Falhas de componentes independentes: Falhas na rede resultam no isolamento dos pc’s
que estão conectados à ela, sem implicar obrigatoriamente na parada de
funcionamento. A falha não é imediatamente percebido por outros componentes com os
quais ele se comunica.
Desafios:
● Heterogeneidade: Permitir acesso à serviços e execução de aplicativos por meio de um
conjunto heterogêneo de componenentes (rede, hardware, SO, linguagens de
programação e implementação por diferentes desenvolvedores).
Solução: O middleware é uma camada de software que fornece uma abstração de
programação e mascara as heterogeneidades. Trata diferenças em nível de SO e de hardware.
Além disso, fornece um modelo computacional uniforme para ser usado pelos programadores
de serviços e aplicativos distribuídos. E os protocolos de comunicação da internet resolvem a
heterogeneidade das redes.
● Sistemas Abertos: É quando um sistema computacional pode ser estendido e
reimplementado de várias maneiras. Um SD é determinado como aberto de acordo com
o grau com que novos serviços sejam adicionados e disponibilizados para uso por uma
variedade de programas clientes. Podem ser ampliados em nível de hardware
(computadores) e software (serviços). Possuem uma vantagem em relação à
independência de fornecedores individuais.
Solução: As interfaces principais dos softwares dos componenentes do sistema são
publicadas (divulgadas) e ficam disponíveis para os desenvolvedores de softwares. Assim são
capazes de projetar aplicativos baseados em padronização de mecanismos de comunicação,
criando compatibilidade entre os componenentes.
● Segurança: A segurança de recursos de informações possue três componenentes:
-Confidencialidade: proteção contra exposição para pessoas não autorizadas.
-Integridade: proteção contra alteração ou dano não permitidas.
-Disponibilidade: proteção contra interefrência com os meios de acesso aos recursos.
Solução: criptografia, autenticação etc.
● Escalabilidade: É quando um sistema permanece eficiente mesmo quando há um
aumento significativo no número de recursos e usuários.
Desafios:
-Controlar o custo dos recursos físicos;
-Controlar a perda de desempenho;
-Impedir que recursos de software se esgotem;
-Evitar gargalos de desempenho;
● Tratamento de falhas: As falhas em um SD são parciais, ou seja, afetam alguns
recursos e outros continuam funcionando.
Tratamento de falhas;
-Detecção de falhas;
-Ocultação de falhas;
-Tolerância a falhas;
-Recuperação d falhas;
-Redundância;
Obs: A disponibilidade de um sistema é a medida de proporção de tempo em que ele
está pronto para uso.
● Concorrência: Em um ambiente concorrente as operações devem ser sincronizadas de
modo que os dados permaneçam consistentes.
● Transparência: É definida basicamente como a ocultação de algum
aspecto/característica. São identificadas 8 tipos de transparências:
-Acesso: recursos remotos e locais são acessados com as mesmas operações;
-Localização: acesso aos recursos sem saber sua localização física ou em rede.
-Concorrência: vários processos operam concorrentemente, usando recursos
compartilhados sem interferência entre eles.
-Replicação: várias instâncias(cópias) de recursos são usados para aumentar a
confiabilidade e o desempenho, sem conhecimento das réplicas por parte dos usuários ou
programadores de app’s.
-Falhas: ocultação de falhas, possibilitando que usuários e programas aplicativos
concluam suas tarefas independente de falhas do software ou hardware.
-Mobilidade: permite a movimentação de recursos e clientes dentro de um sistema, sem
afetar a operação de ambos.
-Desempenho: permite ao sistema ser reconfigurado para melhorar o desempenho a
medida que as cargas variam.
-Escalabilidade: permite que o sistema e os aplicativos se expandam em escala, sem
alterar a estrutura do sistema ou algoritmos de aplicativo.
As duas transparências mais importantes são a de acesso e localização, por isso podem ser
citadas também conjunto como transparência de rede.
- Modelos Arquiteturais
Definição:
“Arquitetura de um sistema é sua estrutura em termos de componentes
especificados separadamente e suas inter-relações.”
(Coulouris et al)
Os modelos de arquitetura cliente-servidor e peer-to-peer são os mais utilizados em sistemas
distribuídos.
● Arquitetura cliente-servidor: Tanto o cliente como o servidor desempenham tarefas bem
definidas. O servidor além de gerenciar, controla o acesso aos recursos disponíveis no
sistema e o cliente interage com o servidor, que pode estar em máquinas distintas,só
para acessar os recursos que o mesmo gerencia. E o servidor pode ser cliente de
outros servidores, um exemplo seria o mecanismo de busca na web.
- Variações do modelo cliente-servidor:
❏ Serviços providos por múltiplos servidores: O servidor, que oferece um serviço,
pode interagir com outros servidores para oferecer uma melhor visão do serviço para o
cliente.
❏ Cache e Servidor Proxy: A cache, guarda os dados recentemente utilizados em um
local mais próximo do cliente ou de um conjunto de clientes. No entanto, processo
compartilhado por vários clientes serve como cache para os recursos disponibilizados
por outros servidores remotos.
❏ Cliente magro e cliente gordo: no cliente magro, tanto o processamento como o
gerenciamento de dados é realizado no servidor. A responsabilidade do cliente é de
executar a apresentação através do software. No cliente gordo, o responsável pelo
gerenciamento de dados é o servidor. a lógica de aplicação é implementada no cliente
através do software como também as interações com o usuário do sistema.
● Arquitetura Perr-To-Peer(P2P): Nessa arquitetura não existe distinção entre cliente e
servidor, de maneira simplificada ele permite o compartilhamento de recursos, sem a
necessidade de um servidor central. O problema do modelo é que o usuário, pode se
desconectar a qualquer momento e se ele for a única máquina com o arquivo haverá
um problema no compartilhamento.
● BitTorrent: Diferentemente do Peer-To-Peer, no BitTorrent a troca de arquivos é feita
entre os usuários da mesma, mas nesse tipo de transferência há um servidor central
que concentra diversas informações para agilizar o processo de troca de dados, esses
servidores são os trackers. O tracker sempre permanece atuando na conexão para
agilizar o download e indicar de qual máquina o usuário pode baixar o arquivo. Múltiplos
segmentos de um arquivo são baixados simultaneamente. Quando a máquina já tem
parte do arquivo disponível ela começa a enviar dados para que outros possam baixar
o arquivo o quanto antes.