Skip to content

← Sistemas Distribuídos

Evolução e Definição de Sistemas Distribuídos

Um pouco de história · Definições clássicas · Desafios dos sistemas distribuídos modernos

Um pouco de história

  • 1945 … ~1985
  • Computação centralizada
  • Computadores grandes e caros
  • Já existiam sistemas com distribuição de processamento
    • Múltiplos processadores
    • Basicamente de controle centralizado
  • Baixa (nenhuma) interação e conectividade
Eniac 1946
O ENIAC

Criado pelos engenheiros John Eckert e John Mauchly na Universidade da Pensilvânia durante os anos de 1937-1943, o ENIAC tinha como objetivo principal computar dados balísticos de artilharia em altas velocidades para ajudar as tropas aliadas na Segunda Guerra Mundial. No entanto, o ENIAC só foi concluído após o fim da guerra, sendo então utilizado nos primeiros anos da Guerra Fria, tendo contribuído para o projeto da bomba de hidrogênio.

O ENIAC pesava cerca de 30 toneladas e ocupava cerca de 180m², era tão grande que tinha de ser disposto em U com três painéis sobre rodas, para que os operadores pudessem se mover em torno dele. Foram gastos cerca de US$ 500.000,00 em sua construção.

Evolução

Durante esse período aconteceu uma evolução tecnológica sem precedentes, com mudanças radicais:

  • ↑ capacidade de processamento
  • ↓ custo ($)

O que gerou uma evolução contínua:

  • ↑ capacidade de processamento e desempenho de redes
  • ↓ custos

Durante a década de 1980, um novo conceito surgiu:

  • Redes de computadores (locais)
    • Facilitar a comunicação entre computadores
  • Microprocessadores → PC
    • Aumento no número de computadores

Já no início dos anos 90:

  • Sistemas abertos
  • Interoperabilidade
Sistemas abertos e a Internet dos anos 90

Sistemas abertos são aqueles projetados com base em padrões abertos e interoperáveis, permitindo que diferentes componentes, desenvolvidos por fornecedores distintos, trabalhem juntos de maneira integrada. Ex.: POSIX, TCP/IP, HTTP, LDAP, HTML, APIs.

Ainda nos anos 90 teve início uma evolução das redes de larga escala: redes públicas (governamentais), a Internet, e a queda do custo de conexão, impulsionada pelos computadores pessoais. Setores inteiros passaram a depender dessa infraestrutura: finanças e comércio (e-commerce, online banking), a sociedade da informação (motores de busca, Wikipédia, redes sociais), indústrias criativas e educação (jogos online, conteúdo gerado por usuário), saúde (informática em saúde, monitoramento de pacientes), transporte e logística (GPS, mapas), ciência (grades computacionais para colaboração) e gestão ambiental (sensoriamento de terremotos, enchentes, tsunamis).

Definição de Sistemas Distribuídos

Tanenbaum

"... is a collection of independent computers that appear to the users of the system as a single computer."

Coulouris

"... hardware or software components located at networked computers communicate and coordinate their actions only by passing messages."

Os principais desafios dos sistemas distribuídos atuais estão em:

  • Sistemas abertos
  • Heterogeneidade
  • Segurança
  • Escalabilidade
  • Tratamento de falhas
  • Concorrência
  • Transparência
  • Qualidade de serviço
Livros de referência

COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos: Conceitos e Projeto. 5. ed. São Paulo: Pearson, 2013.

TANENBAUM, A. S.; VAN STEEN, M. Distributed Systems: Principles and Paradigms. 4. ed. Upper Saddle River: Pearson Prentice Hall, 2023.

Desafios dos Sistemas Distribuídos Modernos

Sistemas abertos

  • Pode ser estendido ou reimplementado.
  • Compartilhamento de recursos, disponibilizados a vários clientes.
  • Especificação das interfaces publicadas e disponíveis (RFC/IETF, W3C...).
  • Sistemas distribuídos abertos são projetados com padrões públicos e comunicação uniforme.
  • Uso de hardware ou software heterogêneo, com independência de fornecedores.

Heterogeneidade

Fontes de heterogeneidade:

  • Rede
  • Hardware
  • Sistemas operacionais
  • Linguagem de programação
  • Implementações
  • Representação de dados

Como é mascarada:

  • Middleware: camada de software que mascara a heterogeneidade, fornecendo um modelo computacional uniforme.
  • Migração/mobilidade de código: programas transferidos e executados em outro local, como máquinas virtuais de processo (JVM, CLR), JavaScript.

Segurança

  • Enviar dados sigilosos, em uma ou mais mensagens, de forma segura.
  • Informações compartilhadas de alto valor exigem:
    • Confidencialidade: acessos autorizados.
    • Integridade: alteração dos dados.
    • Disponibilidade: interferência de acesso.
    • Autenticidade: é realmente quem diz ser.
  • Desafios em aberto: negação de serviço (DoS), segurança de código móvel.

Escalabilidade

  • Funcionamento efetivo e eficaz em escalas diferentes de componentes (rede local, intranet, Internet…).
  • Escalável: permanece eficiente mesmo com aumento significativo de recursos ou usuários.
  • Desafios de projeto para crescer:
    • Controlar o custo de acesso aos recursos: replicação.
    • Controlar a perda (gargalo) de desempenho: estruturas e algoritmos hierárquicos ou descentralizados.
    • Impedir que os recursos se esgotem: IPv6.
Crescimento da Internet

Tratamento de falhas e redundância

  • Falhas em sistemas distribuídos são parciais, particularmente difíceis.
  • Detecção de falhas: gerenciar a ocorrência de falhas que não podem ser detectadas; algumas podem ser detectadas por checksum.
  • Mascaramento de falhas: retransmissão de mensagem ou armazenamento replicado.
  • Tolerância a falhas: fornecer o serviço na presença de falhas (ex.: timeout de webserver).
  • Recuperação de falhas: projetar software que possa recuperar o estado de dados permanentes (rollback).

Redundância é a regra para tornar serviços tolerantes a falhas:

  • Existir mais de uma rota para comunicação.
  • Replicação de tabelas, componentes de hardware ou bancos de dados.
  • Sistemas distribuídos buscam alto grau de disponibilidade em falhas de hardware através de grande redundância.

Concorrência

  • Suporte a concorrência por meio de processos ou threads concorrentes.
  • Acesso compartilhado a vários recursos exige controle de acesso e conteúdo.
  • Recursos em um SD devem ser projetados para operar de forma segura, prevendo os casos e impedindo perda de recursos por acesso compartilhado.

Transparência

  • Ocultar a separação dos componentes de um sistema distribuído.
  • O sistema deve ser percebido como um todo, e não como uma coleção de recursos, tanto para usuários finais quanto para programadores de aplicativos.
  • A transparência possui grande influência sobre o projeto do software em um sistema distribuído.

Qualidade de serviço

  • Principais propriedades não funcionais: confiabilidade, segurança, desempenho.
  • Aspectos importantes na qualidade de serviço:
    • Adaptatividade: atender sistemas variáveis.
    • Disponibilidade: de recursos.
  • Aplicativos manipulam informações em relação ao tempo: QoS busca satisfazer os prazos finais.

Compartilhamento de recursos

  • Usuários estão acostumados com o compartilhamento de recursos (impressoras, arquivos, mecanismos de busca...).
  • Hardware: redução de custos.
  • O foco maior está nas abstrações de mais alto nível: informações necessárias ao trabalho, aplicações ou atividades sociais.
  • Padrões de compartilhamento variam: acesso a busca na web, trabalho colaborativo apoiado por computadores.

O termo "serviço" é utilizado como parte de um sistema computacional que gerencia recursos:

  • Serviço de sistema de arquivos.
  • Serviço de impressão.
  • Serviço de pagamento eletrônico.

Acesso ao serviço se dá pelas operações que ele fornece (exporta): leitura, escrita, exclusão (caso de arquivos). Os recursos ficam encapsulados dentro de computadores, acessíveis de outros por uma interface de comunicação.


Próxima página: 03: Modelos Físicos →