Disciplina: Sistemas Distribuídos
Sistemas de Informação
8º Período
Prof. Cristiano Vieira
2020
1
Sistemas Distribuídos
Introdução aos Sistemas
Distribuídos
AULA 1
2
Definição
Sloman, 1987
“Um sistema de processamento distribuído é tal
que, vários processadores e dispositivos de
armazenamento de dados, comportando
processos e/ou bases de dados, interagem
cooperativamente para alcançar um objetivo
comum. Os processos coordenam suas
atividades e trocam informações por
passagem de mensagens através de uma rede
de comunicação”
3
Definição
Andrew Tanenbaum
“Coleção de computadores independentes que se
apresenta ao usuário como um sistema único e
consistente (coerente)”
Coulouris
“Coleção de computadores autônomos interligados
através de uma rede de computadores e equipados
com software que permita o compartilhamento dos
recursos do sistema: hardware, software e dados”
4
5
Motivação
Crescente dependência por parte dos usuários
Demanda maior que avanços combinados de
hardware e software centralizados
Características inexistentes em sistemas
centralizados como tolerância a falhas (fault
tolerance)
6
2
O que é um Sistema Distribuído?
Um sistema distribuído é uma coleção de hosts
autônomos, conectados através de uma rede de
computadores. Cada host executa componentes e
opera um middleware de distribuição, o qual
habilita os componentes a coordenarem suas
atividades de tal forma que usuários percebam o
sistema como um ambiente computacional
único e integrado.
7
Características de Sistemas Centralizados
Um componente, com partes não autônomas
Componentes são compartilhados por todos os
usuários durante todo o tempo
Todos os recursos acessíveis (tipicamente)
Software ‘roda’ em um único processo
Ponto de controle único
Ponto de falha único
8
Características de Sistemas Distribuídos
Múltiplos componentes autônomos
Componentes não são compartilhados por todos
os usuários
Recursos podem não ser acessíveis
Software ‘roda’ em processos concorrentes e em
processadores distintos
Múltiplos pontos de controle
Múltiplos pontos de falha (!!!)
9
Um sistema distribuído
10
O que é um Sistema Distribuído?
Component1 Componentn
Component1 Componentn
Middleware
Middleware
Network Operating System
Network Operating System Hostn-1
Host2 Hardware
Hardware
Component1 Componentn
Component1 Componentn
Middleware
Middleware
Network Operating System
Network Network Operating System
Hardware Host1 Hostn
Hardware
11
Infraestrutura do Setor Bancário
Serviço de Serviços de
Informações Autorização
de Clientes
Estação de
Negócios
Serviço de Banco
de Dados de Produtos
Serviços de
Marketing
Serviços em Mainframes 12
Requisitos
Tempo para se chegar ao mercado
Desenvolvimento de novas aplicações com
tecnologia recente
Integração de novas aplicações tem se tornado
cada vez mais difícil
Escalabilidade
Administração de milhões de contas e clientes
Milhares de usuários concorrentes
Confiabilidade
13
Requisitos (cont.)
Heterogeneidade de Hardware
Mainframes (Unisys, IBM, etc.)
Servidores SUN SPARC
PCs
Heterogeneidade de Sistema Operacional
VMs, UNIX, Linux, Windows, OSX
Heterogeneidade de Linguagem de
Programação
PHP, C/C++, Visual Basic, Java
14
Tecnologia de Objetos Distribuídos
Componentes de prateleira encapsulam a
funcionalidade da aplicação
Resolvendo o problema de distribuição em um
nível mais elevado de abstração
Resolvendo o problema da heterogeneidade
Escalabilidade da solução
15
Por que Tecnologia de Objetos Distribuídos
Permite uma visão uniforme de todos os
serviços da empresa e de como acessá-los
Provê um nível apropriado de abstração
Preserva o investimento encapsulando
aplicações legadas
Permite explorar as vantagens da tecnologia
de objetos em novos projetos
Uma forma natural de resolver:
distribuição
heterogeneidade
16
Compartilhamento de Recursos
Habilidade de usar qualquer hardware, software
ou dados em qualquer lugar do sistema
Gerenciador de recursos
Controla o acesso aos recursos
Provê um esquema de nomes para os recursos
Controla acessos concorrentes aos recursos
17
Compartilhamento de Recursos (2)
Modelo de compartilhamento
Cliente / Servidor
Baseado em objetos
Define:
a forma pela qual recursos são providos
formas de uso dos recursos
como o provedor do recurso e os usuários
interagem entre si e com o gerenciador
18
Cases
19
Case 1: Gerência de Configuração Boeing 777
20
Problemas a serem resolvidos
Escala
3.000.000 de peças por aeronave
A configuração de cada aeronave é diferente
Regulamentos demandam que registros sejam
mantidos para cada peça de uma aeronave
Aeronave evolui durante manutenções
Produção de 500 aeronaves por ano
Banco de dados de configuração cresce 1,5 bilhão
de partes a cada ano
Tempo de vida de uma aeronave: 30 anos
45.000 engenheiros necessitam acesso on-line aos
dados de configurações
21
Problemas a serem resolvidos (cont.)
Integração de componentes de prateleira
Infra-estrutura de TI se tornou inadequada
Mas a empresa não podia se dar ao luxo de re-
construir toda a sua infra-estrutura de TI
Componentes foram comprados de diversos
fabricantes especializados
Banco de dados relacional
Planejamento de recursos da empresa (ERP)
Planejamento de projetos auxiliado por computador
Componentes precisavam ser integrados
22
Problemas a serem resolvidos (cont.)
Heterogeneidade
20 máquinas de banco de dados Sequent para
gerenciar os dados de configuração de aviões
200 servidores de applicações UNIX
Estações de trabalho NT e UNIX para os
engenheiros
23
Case 2: Napster
24
Outros Exemplos Similares
Similares ao NAPSTER
EMULE
BITORRENT
SKYPE (VoIP)
MSN MESSENGER, YAHOO
Outros
APLICAÇÕES DE MULTIMÍDIA
WEB conferência
Difusão de streams on-line (voz, vídeo)
25
Case 3: Cluster (JAGUAR)
JAGUAR
Cluster de máquinas do Oak Ridge National
Laboratory (EUA)
Primeiro da lista dos TOP 500 SUPERCOMPUTERS
INSTALADO EM 2009
224.162 CORES 1.759.000 Gflops
FONTE http://www.top500.org/list/2010/06/100
Solução: agrupamento físico de Cluster atual:
máquinas de menor porte = cluster: https://tecnoblog.net/104684/ib
•Mesmo espaço geográfico m-sequoia-supercomputador/
•Normalmente dentro da mesma
organização, com software/hardware http://www.top500.org/list
homogêneos
•Softwares: OpenMosix, Condor e
Oscar 26
Case: Cluster
CLUSTERS ou AGRUPAMENTOS
Máquinas conectadas por rede de alta
velocidade
Necessidade de alto desempenho computacional
Evitar custo de máquinas de alto desempenho
Objetivo: compartilhar recursos computacionais
De processamento
De armazenamento
De memória
Outros 27
Cluster
Clusters são utilizados para...
Aumentar a disponibilidade de serviço
se um nodo falha, outro assume
Equilibrar carga de trabalho
um ou mais computadores do cluster atuam como
distribuidores da carga entre os demais
Alto desempenho
Para resolver tarefas complexas que podem ser
decompostas em sub-tarefas, cada uma rodando num
nodo do cluster.
Implementação mais comum: LINUX e software livre
para implementar paralelismo = Beowulf cluster
28
29
30
31
32
33
34
35
A evolução dos
sistemas distribuídos
principais eventos
36
Breve Histórico
Apareceu no fim da década de 60 dentro do
contexto de Sistemas Operacionais.
A motivação foi a criação de unidades de
hardware denominadas canais ou dispositivos
de controle.
Estes dispositivos funcionavam independente
de um processador de controle e podiam
fazer operações de E/S concorrentemente
com a execução de um programa.
37
Breve Histórico (2)
Um canal que comunicava-se com o
processador central através de uma interrupção.
Com a introdução dos canais, partes de um
programa poderiam funcionar de forma
imprevisível.
Logo após o aparecimento dos canais, foram
desenvolvidos as máquinas multiprocessadas.
Estas máquinas permitiam que aplicações
diferentes pudessem ser executadas em
processadores diferentes ao mesmo tempo.
38
Breve Histórico (3)
Permitiam também que uma aplicação pudesse
ser executada mais rapidamente se fosse
reescrita de forma a utilizar múltiplos
processadores.
39
ARPANet
Advanced Research Projects Agency Network - 1969
Departamento de Defesa dos EUA
bases militares e departamentos de pesquisa do governo
universidades e outras instituições que faziam trabalhos envolvidos
à defesa
primeira rede à base de comutação de pacotes
backbone subterrâneo
mainframes
NCP (Network Control Protocol)
compartilhamento de arquivos, acesso remoto, correio eletrônico
precursora da Internet
ARPANet (academia) e MILNET (militar)
TCP/IP ( Transfer Control Protocol/Internet Protocol) – 1983
40
Ethernet
Protocolo para rede local de computadores
Camadas física (1) e de enlace (3) da rede
Xerox PARC, 1973, Robert Metcalfe
inspirado na ALOHAnet: rede por rádio, Hawaii,
anos 60
padrão de fato: DEC, Intel e Xerox, 1980
produção em escala: baixo custo
computadores pessoais
41
Internet
DNS (Domain Name System) – 1984
FTP (File Transfer Protocol) – 1985
SNMP (Simple Mail Transfer Protocol)
POP3 (Post Office Protocol)
IMAP (Internet Message Access Protocol)
SSH (Secure Shell)
VNC (Virtual Network Computing)
computadores pessoais
42
World Wide Web – WWW
CERN (Suíça)
Tim Berners-Lee
1980: ENQUIRE
compartilhamento de informações sobre pesquisa
sistema de hipertexto (origem em 1960: Projeto Xanadu)
1990: World Wide Web
união com a Internet
sistema cliente-servidor
HTTP (HyperText Transfer Protocol)
HTML (HyperText Markup Language)
URI (Uniform Resource Identifier)
1993:
CERN libera a WWW
Navegador Mosaic, precursor do Netscape
43
Motores de Busca
Information Retrieval
início:1970 (aprox.)
formalização do conceito de hipertexto: 1972
consolidação: 1978 (aprox.)
modelos probabilísticos
Yahoo!
Altavista
Google:
alta disponibilidade
desempenho
escalabilidade
baixo custo operacional
44
Colaboração na Internet
Mensagem instantânea (síncronos)
Chats (assíncronos)
Vídeoconferência (streams)
Redes sociais
Wiki
45
Transmissão de Mídia
canais de rádio e TV
podcast
voz/telefonia sobre IP (redes convergentes)
Napster (1999 – 2002)
BitTorrent – 2003 (Peer-to-Peer)
eDonkey – 2000
KaZaA – 2002
46
Internet – Número de Hosts
47
Internet – Número de Servidores Web
48
Internet – Mercado de Servidores Web
49
Os benefícios de sistemas distribuídos
50
Benefícios
Comunicação de dados
Compartilhamento de recursos
Integração e cooperação
Confiabilidade e disponibilidade
Crescimento gradativo do poder computacional
Relação custo/benefício
Implantação de aplicações
51
Os problemas em sistemas distribuídos
52
Paradigma de programação
processos e mensagens
chamada remota de procedimento
memória compartilhada distribuída
eventos (publish/subscribe)
53
Depuração de aplicações distribuídas
difícil reprodução de erros
teste isolados e testes de integração
ambientes de simulação
alto custo de desenvolvimento
alto custo de manutenção
54
Confiabilidade e disponibilidade do meio
falhas de rede
falhas de processadores
falhas
fail-silent
bizantinas
redundância: alto custo
física
lógica
55
Tipos de falhas
56
Segurança do meio
ataques
acessam serviços que atendem via rede
exploram fragilidades de código
alteram o código do serviço
instalam código “maléfico” ao sistema
fazem sobrecarga de requisições
criptografia
assinatura digital
autenticação
autorização
firewalls
57
Desempenho das aplicações
latência
não-determinismo
exigências de tempo real
sincronismo de eventos
58
Consistência das aplicações
sincronismo de relógios físicos
sincronismo de eventos (relógios lógicos)
atomicidade no envio de mensagens
acesso concorrente
compartilhamento de recursos
servidores multi-threaded
transação distribuída
tolerância a falhas
backward recovery
forward recovery
59
Escalabilidade dos sistemas
desempenho estável
crescimento no número de usuários
crescimento no volume de dados
crescimento no volume de requisições
técnicas básicas
replicação
cache
60
Gerações de Sistemas Distribuidos
61
Heteregoneidade
protocolos de rede
sistemas operacionais
linguagens de programação
62
Transparência em
Sistemas Distribuídos
Transparência
acesso
localização
falha
replicação
migração
concorrência
desempenho
paralelismo
escalabilidade
persistência
transação
64
Transparência
Um sistema distribuído deve ser percebido
por seus usuários e pelos programadores de
aplicações como um sistema único e coeso
ao invés de uma coleção de máquinas
separadas
Várias dimensões de transparência
identificadas pelo modelo ISO RM-ODP
Modelo de Referência para Sistemas
Distribuídos Abertos
Representam as diversas propriedades que
um sistema distribuído deve possuir
65
Transparências de Distribuição
Scalability Performance Failure
Transparency Transparency Transparency
Migration Replication Concurrency
Transparency Transparency Transparency
Access Location
Transparency Transparency
66
Transparência de Acesso
Permite que objetos e informações remotas
sejam acessados usando operações
idênticas
Mascara as diferentes formas de acesso
empregadas por cada tecnologia utilizada
Exemplos:
Operações de acesso a um sistema de arquivos
distribuído com NFS (Network File System)
Navegação na WEB
Consultas em SQL
67
Transparência de Localização
Permite que objetos e informações sejam
acessados sem o conhecimento de sua
localização
Exemplos:
Arquivos acessados via NFS
Páginas na WEB (*)
Tabelas em um banco de dados distribuído
68
Transparência de Concorrência
Permite que vários processos operem
concorrentemente usando objetos de
informação compartilhados sem interferirem
entre si
Exemplos:
NFS
Caixa eletrônico
Sistema gerenciador de bancos de dados (SGBD)
69
Transparência de Replicação
Permite que múltiplas instâncias de objetos
de informação sejam usados para melhorar
o desempenho e a confiabilidade
Sem que os usuários ou programadores de
aplicações tomem conhecimento da
existência das réplicas
Exemplos:
SGBD distribuído
Espelhamento de páginas WEB
70
Transparência de Falhas
Mascara a ocorrência de falhas
Permite que usuários e aplicações completem
suas tarefas normalmente a despeito de falhas
em alguns componentes do sistema
Exemplo:
Transações em um SGBD
71
Transparência de Migração
Permite a movimentação de um objeto dentro
do sistema distribuído sem afetar as
operações dos usuários ou dos programas de
aplicação
Duas variantes:
Migração propriamente dita: com relação ao
objeto migrado
Relocação: com relação a outros objetos no
sistema
Exemplos:
NFS
Páginas WEB
72
Transparência de Desempenho
Permite que o sistema distribuído seja
reconfigurado para melhorar o desempenho
para refletir mudanças na carga de
processamento
Através de replicação e migração
Exemplo:
Utilitário make distribuído
Programa é compilado em várias máquinas em paralelo,
transparentemente para o usuário
73
Transparência de Escala
Permite que o sistema e as aplicações possam
ser expandidos em escala sem a necessidade de
mudanças em sua estrutura ou nos algoritmos
utilizados
Exemplo:
WWW
Bancos de dados distribuídos
74
Pontos-Chave
O que é um Sistema Distribuído
Adoção de sistemas distribuídos é regida
por requisitos não-funcionais
Necessidades de distribuição são
transparentes aos usuários e projetistas de
aplicações
Várias dimensões de transparência
Dimensões de transparência dependem
entre si
75