Programação Concorrente e Distribuída

Tipos de Sistemas Distribuídos

Aula 08 — Arquiteturas centralizadas, descentralizadas, híbridas e sistemas pervasivos
Prof. Newton S. B. Miyoshi
newton.miyoshi@baraodemaua.br
Centro Universitário Barão de Mauá — Ribeirão Preto

Arquitetura baseada em Eventos

Componentes publicam e assinam eventos em um event bus, que entrega notificações
Componentes se comunicam indiretamente: publicam eventos num event bus, e outros componentes que assinaram esse evento recebem a notificação.
Parte 1

Arquiteturas de Sistemas

Centralizadas, descentralizadas e híbridas.

Arquitetura Centralizada — Modelo Cliente/Servidor

Diagrama de tempo: cliente envia request, espera (wait) enquanto o servidor processa (provide service), e recebe a reply
O cliente envia uma request, aguarda enquanto o servidor processa, e recebe a reply.

Arquitetura Centralizada Multi-dividida

Arquitetura de 2 níveis multi-dividida — fat clients ou thin clients, dependendo de onde ficam as camadas de interface, aplicação e dados.

Distribuição vertical de UI, Aplicação e Banco de dados entre máquina cliente e servidor, em diferentes combinações

Arquitetura Descentralizada — Peer-to-Peer

  • Distribuição horizontal — papéis não muito bem definidos entre cliente e servidor.
  • Tipos de arquitetura P2P:
    • Estruturadas.
    • Não estruturadas.
    • Hierarquicamente organizadas.

Arquiteturas Peer-to-Peer

Logo do Blockchain
Infográfico explicando como funciona a blockchain: transação, broadcast para a rede P2P, validação pelos nós e criação de um novo bloco

Arquitetura Híbrida (P2P / centralizada)

  • Combinação de centralizada + descentralizada:
    • Centralizada: diretório / nó coordenador.
    • Descentralizada: compartilhamento de recursos.
  • CDN — Content Delivery Network: compartilhamento de recursos de modo não simétrico.
  • BitTorrent.
Servidor original distribuindo conteúdo para edge servers ao redor do mundo, que atendem os usuários próximos

Sistemas de Servidores de Borda

  • Servidores que estão na borda da internet — ex.: ISPs (Provedores de Internet).
  • É o meio pelo qual clientes se conectam à internet.
  • Podem atuar como nós de compartilhamento de recurso e processamento — armazenamento e processamento.
  • Cloud-computing distribuída → Fog Computing (Computação em Névoa).
Pirâmide Cloud/Fog/Edge: milhares de data centers na nuvem, milhões de nós fog, bilhões de dispositivos na borda
Cloud: milhares de data centers. Fog: milhões de nós intermediários. Edge: bilhões de dispositivos.

Sistemas Distribuídos Colaborativos

  • Início do processo como no modelo centralizado — cliente/servidor, nó entra na rede de colaboração.
  • Uma vez dentro da rede, todo o processo passa a ser descentralizado.
  • Ex.: BitTorrent, Skype.

Exemplo BitTorrent

Cliente consulta um web server por um torrent file, que aponta para um tracker com a lista de nós que têm partes do arquivo
O cliente localiza o torrent file, que aponta para um tracker com a lista de nós (K de N) que têm partes do arquivo.
Cliente trocando pedaços do arquivo com seeder e leechers dentro de um swarm, coordenado pelo tracker
Dentro do swarm, cliente, seeder (100% do arquivo) e leechers (download parcial) trocam pedaços entre si.
Parte 2

Sistemas de Computação Distribuída

Cluster, Grid e Cloud.

Tipos de Sistema de Computação Distribuída

Alta performance

Cluster e Grid

Compartilhamento de recurso

Cloud

Alta performance

Computação em Cluster

  • Homogeneidade — hardware semelhante entre os nós.
  • Conexão via LAN de alta velocidade.
  • Software geralmente com o mesmo SO, fortemente acoplado.
  • Voltado a computação paralela.

Computação em Cluster

Um master node com aplicação de gerenciamento e vários compute nodes rodando componentes da aplicação paralela, conectados por rede padrão e de alta velocidade
Um master node gerencia vários compute nodes, conectados por redes padrão e de alta velocidade.

Cluster na prática

Alta performance

Computação em Grade (Grid Computing)

  • Heterogeneidade e colaborativo — diferentes empresas/organizações, hardware diferente.
  • Ex.: PlanetLab, RNP.
  • Mudança para orientação a serviços — OGSA (Open Grid Services Architecture).
Grid na prática

SETI@home

Interface do SETI@home Enhanced, mostrando o progresso da análise de sinais de rádio em busca de vida extraterrestre
Voluntários cedem o processamento ocioso de seus computadores para analisar sinais de rádio em busca de vida extraterrestre.
Grid na prática

Folding@home

Interface do Folding@home, mostrando pontos ganhos contribuindo com a simulação de dobramento de proteínas
Mesma ideia, aplicada à simulação do dobramento de proteínas — relevante para pesquisa de doenças.
Compartilhamento de recurso

Cloud

Camadas Infrastructure/Platform/Software as a Service, com exemplos: Amazon EC2/S3, Azure/Google App Engine, Google Docs/Gmail/YouTube
Infraestrutura, plataforma e software como serviço — cada camada abstrai a de baixo.
Parte 3

Sistemas Distribuídos Pervasivos

Quando o sistema se dissolve no ambiente.

Sistemas Pervasivos

  • Componentes dispersos em um ambiente — difícil separar usuário e componentes de sistema.
  • Sensores, dispositivos pequenos movidos a bateria, IoT.
  • Tipos:
    • Sistemas de computação ubíqua.
    • Redes de sensores (sem fio).

Sistemas de Computação Ubíqua

Ubíquo = onipresente, difundido.

DistribuiçãoInteração Percepção do contextoAutonomia Inteligência

Ex.: sistemas de casa inteligente, sistemas de apoio a diversas indústrias.

Redes de Sensores (sem fio)

  • Uso de diferentes sensores, geralmente conectados em uma rede sem fio.
  • Duas abordagens extremas para organizar a rede:
    • Sensores não cooperam — só enviam dados a um banco centralizado.
    • Cada sensor tem banco próprio e processa, enviando só o resultado.

Redes de Sensores — envio direto

Rede de sensores enviando os dados brutos diretamente ao site do operador
Cada sensor apenas envia seus dados brutos direto ao operador.

Redes de Sensores — processamento local

Operador envia uma query à rede de sensores; cada sensor processa e armazena dados, enviando apenas as respostas
O operador envia uma query; cada sensor processa e armazena localmente, enviando só as respostas.
Atividade em grupo

Encontre exemplos reais

Busque pelo menos 2 exemplos reais de sistemas que se encaixam nos tipos vistos em aula. Para cada um, explique o objetivo do sistema, em que tipo ele se encaixa, e a vantagem/desvantagem do tipo ou arquitetura.

ClusterGridComputação ubíqua Redes de sensoresP2P / híbrida

Grupos de até 4 alunos — subir no Classroom.

Referências bibliográficas

  • TANENBAUM, A. S.; VAN STEEN, M. Distributed Systems. 3. ed. 2018. ISBN 978-90-815406-2-9. distributed-systems.net
  • GRAMA, A.; GUPTA, A.; KARYPIS, G.; KUMAR, V. Introduction to Parallel Computing. 2. ed. karypis/parbook
  • PALACH, J. Parallel Programming with Python. Packt Publishing, 2014.