Você está na página 1de 140

Universidade Federal de Santa Catarina (UFSC)

Departamento de Informtica e Estatstica

Computao Distribuda
INE 5625

Prof. Mario Dantas


http://www.inf.ufsc.br/~mario

Objetivo
Neste curso vamos estudar os conceitos relativos a
computao distribuda, abordando paradigmas tais:
computao obqua;
computao pervasiva;
computao colaborativa;
ambientes de troca de mensagens;
memria compartilhada; e
objetos distribudos.

Objetivo
Vamos iniciar nosso curso com as novas abordagens de
computao distribudas, estas conhecidas como ubqua,
pervasiva e colaborativa.
O objetivo introduzir uma viso inovadora de ambientes
computacionais altamente distribudos, que necessitam de um
tratamento especial por parte de especialistas e, por outro lado,
ser ignorado pelos seus usurios.

Objetivo
Quanto as bibliotecas de troca de mensagem sero estudadas: PVM
(Parallel Virtual Machine) e MPI (Message Passing Interface).
Ambientes de middlewares orientados memria compartilhada
(shared memory), tais como Jiajia e ThreadMark, sero tambm
estudados.

Objetivo
Finalmente, os objetos distribudos sero abordados atravs das
tecnologias CORBA, DCOM e Java RMI

Contedo Programtico
Modulo I
. Introduo a computao distribuda
. Ambientes de middleware
Modulo II
. Paradigma de troca de mensagem
. Parallel Virtual Machine (PVM)
. Message Passing Interface (MPI)
. Ambientes de Memria Compartilhada

Contedo Programtico
Modulo III
. Objetos distribudos
. Componentes
. CORBA
. Barramento de objetos CORBA
. Adaptador bsico de objetos
. Linguagem de definio de interfaces

Contedo Programtico
. Servios CORBA
. Objetos COM
. Barramento de objetos COM
. Servios OLE/COM

Java/RMI

Bibliografia Recomendada
Coulouris, Dollimore e Kindberg, Distributed Systems:
Concepts and Design, ISBN: 0201619180, Addison Weley, 2006
Tanenbaum e van Steen, Distributed Systems: Principles and
Paradigms (2nd Edition), ISBN: 0132392275, Prentice Hall, 2000
Dantas, Computao Distribuda de Alto Desempenho: Redes,
Clusters e Grids C omputacionais, ISBN: 8573232404, Axcel Books
2005.

Contedo Programtico
Modulo I
. Introduo a computao distribuda
. Ambientes de middleware
. Paradigma de troca de mensagem
. Parallel Virtual Machine (PVM)
. Message Passing Interface (MPI)
. Ambientes de Memria Compartilhada

Introduo a computao distribuda


- Aplicaes tm se tornado a cada dia mais complexas. Um exemplo
a utilizao de diversos tipos de mdia (voz, dados, imagens);
- O crescimento numa imaginado da Internet e redes;
- A transparncia provida pela Web;

Introduo a computao distribuda


- Computadores pessoais se tornam cada vez mais acessveis;
- Redes e dispositivos mveis sem fio tornam-se um padro de
comunicao pessoal e empresarial.

Exemplo tpico
- Jogos Pan-Americanos
- Muitas pessoas/dispositivos entrando com
dados/imagens;
- Sistema computacionais para processar
informaes;
- Disponibilizar um Web Site para entrada e busca
de informao.

Exemplo ilustrado
Leblon
PCs

IRIX 5.3
Silicon Graphics

Ipanema

Windows
Mac

UNIX System V
Sun

World

Fatores a serem considerados

Eficincia

desenvolvimento da soluo;
tempo de execuo.

Confiabilidade
Transparncia

flexibilidade;
tolerncia falha X alta disponibilidade.

Fatores a serem considerados

Codificao da Aplicao

fcil utilizao

Computao da Aplicao

precisa;
segura;
eficiente.

Fatores a serem considerados

Aplicao Web

flexvel;
Poder ser replicada;
eficiente.

Possveis solues

C/C++ aplicaes + Sockets

no possui uma maior escalabilidade


problemas de
empacotamento/desempacotamento
muitos protocolos temporrios

DCE (remote procedure invocation)

no existe polimorfismo

Possveis solues

Ambientes de troca de mensagem;

Pacotes de memria compartilhada distribuda;

Objetos distribudos.

Uma tpica parte da Internet

intranet
ISP

backbone

satellite link
desktop computer:
server:
network link:

Fonte: [Coulouris]

Uma tpica Intranet


email server

Desktop
computers

print and other servers

Web server

Local area
network

email server
File server

print
other servers

the rest of
the Internet
router/firewall

Fonte: [Coulouris]

Dispositivos mveis e portveis em sistemas


distribudos

Internet

Host intranet

WAP
gatew ay

Wireless LAN

Printer
Camera

Mobile
phone
Laptop

Home intranet

Host site

Fonte: [Coulouris]

Web servers and web browsers

www.google.com

http://www.google.comlsearch?q=kindberg
Browsers

Web servers
Internet

www.cdk3.net

http://www.cdk3.net/

www.w3c.org
File system of
www.w3c.org

http://www.w3c.org/Protocols/Activity.html
Protocols

Activity.html

Fonte: [Coulouris]

Computadores na Internet
Date

Computers

Web servers

1979, Dec.

188

1989, July

130,000

1999, July

56,218,000

5,560,866

2003, Jan.

171,638,297

35,424,956

Fonte: [Coulouris]

Computadores vs. Web servers


na Internet
Date

Computers

Web servers

Percentage

1993, July

1,776,000

130

0.008

1995, July

6,642,000

23,500

0.4

1997, July

19,540,000

1,203,096

1999, July
2001, July

56,218,000
125,888,197

6,598,697
31,299,592

12
25

42,298,371

Fonte: [Coulouris]

Introduo a computao distribuda


Como podemos definir um sistema distribudo ?

Introduo a computao distribuda


Como podemos definir um sistema distribudo ?
No mundo real os sistemas distribudos, sob o aspecto de arquitetura
de mquinas para execuo de aplicativos, devem ser vistos como
configuraes com grande poder de escala pela agregao de
computadores existentes nas redes.

Fonte: [Dantas]

Introduo a computao distribuda


Como podemos definir um sistema distribudo ?
Nos ambientes distribudos, a homogeneidade ou heterogeneidade de
um conjunto de mquinas, onde cada qual possui sua arquitetura de
software-hardware executando sua prpria cpia do SO, permite a
formao de interessantes configuraes de SMPs, de MPPs, de
clusters e de grids computacionais.

Fonte: [Dantas]

Tipos de Transparncias
1. Access transparency: enables local and remote resources to
be accessed using identical operations;
2. Location transparency: enables resources to be accessed
without knowledge of their physical or network location (for
example, which building or IP address);
3. Concurrency transparency: enables several processes to
operate concurrently using shared resources without
interference between them;

Fonte: [Coulouris]

Tipos de Transparncias
4. Replication transparency: enables multiple instances of
resources to be used to increase reliability and performance
without knowledge of the replicas by users or application
programmers;
5. Failure transparency: enables the concealment of faults,
allowing users and application programs to complete their tasks
despite the failure of hardware or software components;

Fonte: [Coulouris]

Tipos de Transparncias
6. Mobility transparency: allows the movement of resources and
clients within a system without affecting the operation of users
or programs;
7. Performance transparency: allows the system to be
reconfigured to improve performance as loads vary;
8. Scaling transparency: allows the system and applications to
expand in scale without change to the system structure or the
application algorithms.

Fonte: [Coulouris]

Sistemas Distribudos:
Modelos de Arquitetutras
Modelos de Arquiteturas

Applications, services

Middleware

Operating system
Platform
Computer and network hardware

Fonte:
[Coulouris]

Sistemas Distribudos:
Modelos de Arquitetutras
Clientes invocando servidores individuais

Client

invocation
result

Client

invocation

Server

result

Server

Key:
Process:

Computer:

Sistemas Distribudos:
Modelos de Arquitetutras
Um servio provido por mltiplos servers
Service

Server
Client

Server

Client
Server

Sistemas Distribudos:
Modelos de Arquitetutras
Web proxy server

Web
server

Client
Proxy
server

Client

Web
server

Sistemas Distribudos:
Modelos de Arquitetutras
Uma aplicao distribuda baseada em processos fim
(peer processes)

Application

Application

Coordination
code

Coordination
code

Application
Coordination
code

Sistemas Distribudos:
Modelos de Arquitetutras
Web applets

a) client request results in the downloading of applet code

Client
Applet code

Web
server

b) client interacts with the applet

Client

Applet

Web
server

Sistemas Distribudos:
Modelos de Arquitetutras
Thin clients e servidores

Sistemas Distribudos:
Modelos de Arquitetutras
Redes Ad hoc (espontnea)
Exemplo de um hotel

Music
service

Alarm
service

gateway
Internet

Hotel wireless
network

Discovery
service

Camera

TV/PC

Laptop

PDA

Guests
devices

Conceito de Sistemas Distribudos:


So sistemas compostos por diversas partes
cooperantes que so executadas em mquinas
diferentes interconectadas por uma rede
Cooperao Mquinas trabalham em conjunto para
chegar a um determinado objetivo; para cooperar as
mquinas precisam se comunicar de alguma forma

Interconexo Mquinas dispem de um meio de

comunicao para trocar dados com o intuito de cooperar de


modo a alcanar um objetivo comum

Computao Distribuda:
Consiste em executar processos / aplicaes
cooperantes em mquinas diferentes
Tornou-se bastante comum a partir da
popularizao das redes de computadores

Processos so executados em mquinas


diferentes interligadas por uma rede
Redes locais
Internet
Outras redes pblicas ou privadas

Infra-Estrutura Fsica

Mquinas (hosts)
so conectadas a um
provedor (ISP), rede local,
metropolitana ou sem fio;
Estas redes so interligadas
por redes de longa distncia
pblicas (ex.: Internet) ou
privadas

Kurose & Ross

Sistemas distribudos x centralizados

Sistemas centralizados tm um ponto nico de falha;


Sistemas distribudos podem aumentar a robustez do sistema e
a disponibilidade dos dados;
Sistemas centralizados so limitados pela capacidade de
processamento e armazenamento da mquina;

Sistemas distribudos x centralizados

Sistemas distribudos podem crescer em escala adicionando


novos servidores ao sistema;
Sistemas distribudos so mais sujeitos a apresentar falhas
parciais de funcionamento e de segurana;
Sistemas distribudos so mais difceis de administrar pois os
servidores esto em locais diferentes;

Sistemas distribudos x paralelos

Ambos podem executar processamento paralelo usando os


vrios processadores disponveis;
Em mquinas paralelas os processadores podem trocar
dados usando discos ou memria;
Em sistemas distribudos dados so trocados pela rede, o
que pode prejudicar o seu desempenho;

Sistemas distribudos x paralelos

Sistemas paralelos so mais vulnerveis a alguns tipos de


falha (ex.: falha na alimentao ou na rede);
Sistemas paralelos no so to escalveis quanto sistemas
distribudos.

Aplicaes
World Wide Web
Requisio

Resposta
Servidor Web

Requisio
Cliente
Resposta
Servidor Web

Aplicaes

E-Mail Envio, Recepo e Leitura de E-Mails:


Servidor de e-mail
mail.empresa2.com

Servidor de e-mail
mail.empresa.com
SMTP

SMTP

Remetente

POP, IMAP,
Webmail,

Destinatrio

Aplicaes

NTP (Network Time Protocol)


1o Nvel

2o Nvel

Aplicaes

DNS Servidores Raiz:


a NSI Herndon, VA
c PSInet Herndon, VA
d U Maryland College Park, MD
g DISA Vienna, VA
h ARL Aberdeen, MD

k RIPE London
i NORDUnet Stockholm

j NSI (TBD) Herndon, VA

m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto, CA

b USC-ISI Marina del Rey, CA


l ICANN Marina del Rey, CA

Kurose & Ross

Aplicaes

DNS
Consulta:

Servidor de
nomes raiz
3

2
9

Servidor de
nomes .br

4
Serv. de nomes
ns.empresa.com
1

Serv. de nomes
ns.ufsc.br

10

5
6
11

mquina.empresa.com

venus.inf.ufsc.br

Serv. de nomes
ns.inf.ufsc.br

Aplicaes

Outros exemplos de aplicaes distribudas:

Messenger, ICQ;

Redes Peer-to-Peer (P2P);

Sistema de Reserva de Passagens;

Sistema de Operadoras de Carto de Crdito;

Aplicaes

Sistemas bancrios;
Sistemas de gerenciamento de redes de
telecomunicaes, transmisso de energia;
Sistemas de informao de grandes empresas;

- Nova abordagem de TV digital.

Caractersticas

Classificao:

Sistemas Homogneos

Todos os sites tm o mesmo software e hardware

Sistemas Heterogneos

Hardware, sistema operacional e aplicativos podem ser


diferentes em cada mquina
Podem representar os dados de modo diferente
Protocolos de comunicao precisam ser os mesmos
para que as mquinas possam interagir

Caractersticas

Vantagens

Dispem de maior poder de processamento;

Se bem construdos, podem apresentar um


melhor desempenho que sistemas centralizados;

Podem apresentar maior confiabilidade ;

Caractersticas

Vantagens

Permitem reutilizar servios j disponveis;

Possuem maior capacidade para armazenamento


de dados que sistemas centralizados;

Podem compartilhar dados e recursos;


Podem atender um maior nmero de usurios;

Caractersticas

Dificuldades

Desenvolver, gerenciar e manter o sistema;

Controlar o acesso concorrente a dados e a


recursos compartilhados;

Controlar a consistncia dos dados replicados;

Caractersticas

Dificuldades

Evitar que falhas de mquinas ou da rede


comprometam o funcionamento do sistema

Mais hardware mais falhas

Garantir a segurana do sistema e o sigilo dos


dados trocados entre mquinas;

Lidar com a heterogeneidade do ambiente;

Caractersticas

Desempenho

Mais mquinas maior poder de processamento;

Uso da rede pior desempenho;

importante utilizar adequadamente o poder de


processamento disponvel e limitar a comunicao da
rede para que o desempenho da aplicao distribuda
seja satisfatrio;

Caractersticas

Compartilhamento de Dados e de Recursos

possvel acessar dados e recursos disponveis em


outras mquinas do sistema
Ex.: impressoras, cmeras, bancos de dados, filmes.
Recursos podem estar indisponveis devido a falhas;
Acesso concorrente deve ser controlado;
Deadlocks precisam ser evitados;

Caractersticas

Uso da Rede

Acoplamento fraco mquinas trocam dados


atravs da rede
Tempo de comunicao ilimitado pode
comprometer o funcionamento do sistema
Como reduzir o trfego na rede?

Caractersticas

No-deterministas

Comportamento pouco previsvel devido ao uso


da rede, que leva possibilidade de ocorrerem
retardos inesperados ou mesmo falhas na
comunicao
Como evitar congestionamento/sobrecarga?

Caractersticas

Influncia do Tempo

Sistemas distribudos so bastante influenciados


pelo tempo de comunicao pela rede
Em geral no h uma referncia de tempo global,
pois os relgios das mquinas no esto
sincronizados

Como ordenar os eventos no sistema?

Caractersticas

Controle

Os sistemas distribudos tendem a empregar


recursos remotos, sobre os quais no se tem total
controle
Estes recursos podem estar indisponveis por j
estarem sendo usados ou por falha na mquina ou
programa que os administra, na rede ou no prprio
recurso

Caractersticas

Sujeito a Falhas

As mquinas e a rede podem falhar


Como evitar que estas falhas comprometam o
funcionamento do sistema?

Segurana

Mais difcil controlar o acesso a dados e recursos


em sistemas distribudos
Como garantir a segurana do sistema e o sigilo
dos dados trocados pela rede?

Caractersticas

Difcil ter uma viso global do sistema

Difcil saber o estado de cada parte do sistema


em um determinado instante devido latncia da
rede
Transaes envolvem vrias mquinas
Como conhecer o estado global do sistema?

Caractersticas

Gerenciamento e manuteno do sistema

Mquinas dispersas pela rede difcil gerenciar


e manter as mquinas e o sistema funcionando
H maior dificuldade se o sistema for heterogneo
Administrao pode ser independente

Caractersticas

Replicao de Dados

Os dados do sistema podem estar replicados;

necessrio garantir a consistncia de rplicas


rplicas com o mesmo valor!

Alteraes nos dados devem ser propagadas para as


mquinas com rplicas do dado;

Caractersticas

Replicao de Dados

Replicao dificulta a obteno do estado global do


sistema;

Cada rplica deve atualizar seu estado ao


reintegrar-se ao sistema; qualquer inconsistncia
nos dados deve ser resolvida.

Desenvolvimento de Aplicaes

Aplicaes Distribudas so criadas usando:

APIs e Bibliotecas: fornecem rotinas para


comunicao entre processos, controle de
concorrncia, monitorar transaes, etc.
Ex.: Sockets, WinSock, java.net, etc.

Desenvolvimento de Aplicaes

Middleware para Programao Distribuda: fornece


suporte para criar / executar programas distribudos.
Ex.: CORBA, COM, .NET, etc.
Servidores de Aplicao: hospedam aplicaes que
provem servios e dados a clientes remotos
Ex.: JBoss, WebSphere, etc.
Linguagens e sistemas operacionais distribudos
vem caindo em desuso

Desenvolvimento de Aplicaes

Middleware para Programao Distribuda


Mquina 1

Mquina N

Aplicao
Aplicao

Aplicao
Servio

Servio

Aplicao

Middleware para Programao Distribuda


Sistema Operacional

...

Sistema Operacional

Hardware

...

Hardware

Desenvolvimento de Aplicaes

Servidores de Aplicao
Mquina Cliente

Mquina Servidora
Aplicao

Cliente

Servio

Aplicao

Servidor de Aplicao
Sistema Operacional

...

Sistema Operacional

Hardware

...

Hardware

Desenvolvimento de Aplicaes

Projeto de Aplicaes Distribudas

Abordagens de projeto

Top-Down: usada em sistemas construdos do zero,


possivelmente homogneos
Bottom-Up: usada quando os sistemas locais j esto
instalados e precisam ser integrados

Desenvolvimento de Aplicaes

Questes a serem respondidas no projeto

Onde colocar os sites?


Como distribuir dados e servios pelos sites?
Replicao necessria?
Como integrar sistemas j existentes?

Introduo a computao distribuda


O que vem a ser computao ubqua ?

Introduo a computao distribuda


O que vem a ser computao ubqua ?
O termo computao ubqua foi primeiramente sugerido por Mark
Weiser em 1988. Este descreve sua idia de tornar os computadores
onipresentes e invisveis.
O esforo tirar o computador do caminho entre o usurio e seu
trabalho. Em outras palavras, o objetivo ir alm da interface
amigvel e longe da realidade virtual.

Introduo a computao distribuda


O que vem a ser computao ubqua ?
Ao invs de usar ao mximo todas os canais de entrada e sada
do corpo, semelhante realidade virtual, a idia permitir que o
indivduo faa seu trabalho com o auxlio de computadores sem
nunca ter que se preocupar em trabalhar nos computadores.
Melhorando-se as interfaces fazem do obstculo (o computador)
um elemento mais fcil de usar.

Introduo a computao distribuda


O que vem a ser computao ubqua ?
Este tipo de computao cria a era da tecnologia calma (calm
technology).
A computao passa a ser subjacente s nossas vidas. Os
computadores passam a ser to naturais, to sob medida e to
embutidos em todos os locais, que eles se tornam praticamente
invisveis, isto , ns os utilizamos quase sem pensar.

Introduo a computao distribuda


O que vem a ser computao ubqua? Fonte: [Mark Weiser]

Introduo a computao distribuda


O que vem a ser computao pervasiva ?
Mark Weiser e seus colegas no Lab. PARC, utilizaram os termos
computao ubqua e pervasiva de maneira intercambivel para
descrever como a computao iria migrar do ambiente desktop,
para um ambiente pessoal e depois para uma configurao mais
distribuda mvel e embarcada.

Introduo a computao distribuda


O que vem a ser computao pervasiva ?
Todavia, existe uma diferena nestes tipos de computao.
O termo computao ubqua significa o estado de estar presente em
todos os lugares.
Por outro lado, computao pervasiva representa passar atravs, ou
ser difundida atravs de.

Introduo a computao distribuda


O que vem a ser computao pervasiva ?
No mundo real, a computao ubqua est relacionada aos
frameworks, sistemas embarcados, redes e displays que esto
transparentes e em qualquer lugar, permitindo aos usurios
operaes de plug-and-play em dispositivos e ferramentas.

Introduo a computao distribuda


O que vem a ser computao pervasiva ?
Por outro lado, a computao pervasiva refere-se a dispositivos
fsicos tais como seu telefone celular, computador de mo, uma
jaqueta inteligente que se modifica com a temperatura do corpo.
Assim, podemos entender a computao pervasiva como um conjunto
de ferramentas dentro de um determinado ambiente, no qual podemos
acessar as informaes a qualquer hora e a qualquer momento.

Introduo a computao distribuda

Fonte:[Mark Weiser]

Tolerncia Faltas

Conceitos

Tipos de Faltas

Replicao

Deteco de Falhas

Recuperao de Falhas
86

Conceitos

Confiana de Funcionamento (Dependability )

Representa a confiana depositada em um determinado


sistema em relao ao seu correto funcionamento

Um sistema dito confivel (dependable) possui uma grande


probabilidade de se comportar da maneira esperada

87

Conceitos

Confiana de Funcionamento (Dependability )

A confiana de funcionamento um importante requisito de


Qualidade de Servio (QoS) em sistemas computacionais
crticos

88

Conceitos

Estados de um Sistema:
Sistema prprio: servio fornecido pelo sistema como foi
especificado
Sistema interrompido ou imprprio: servio no fornecido
conforme especificado

Sistema
Prprio

Falha benigna

Falha catastrfica

Restaurao

Sistema
Imprprio

Sistema
Interrompido
Falha catastrfica

Conceitos

A Confiana de Funcionamento de um sistema medida pelos


seguintes fatores:

Confiabilidade (Reliability): tempo de funcio-namento


contnuo (sem falhas) do sistema

Manutenibilidade (Maintainability): tempo gasto para


restaurar o sistema aps uma falha

90

Conceitos

A Confiana de Funcionamento de um sistema medida pelos


seguintes fatores:

Disponibilidade (Availability): tempo de funcionamento em


relao ao tempo de falha

Seguridade (Safety): prejuzo causado pela falha do


sistema

91

Conceitos

Confiabilidade pode ser representada por:

Tempo Mdio Para a Falha (MTTF): indica o tempo mdio


que o sistema fica sem falhar
Ex.: X horas ou dias de funcionamento
Quanto maior, melhor

Mdio Entre Falhas (MTBF): representa o tempo entre


falhas sucessivas
Ex.: Y horas ou dias entre falhas
Quanto maior, melhor

92

Conceitos

Confiabilidade pode ser representada por:

Probabilidade (taxa) de Falha


Ex.: 10-Z falhas/hora ou falhas/dia
Quanto maior o expoente, melhor

93

Conceitos

Manutenibilidade representada por:


Tempo Mdio Para Reparo (MTTR): indica o tempo
necessrio para que o sistema volte a funcionar
corretamente
Ex.: X segundos, minutos ou horas para o sistema voltar
a funcionar corretamente
Quanto menor, melhor

94

Conceitos

Disponibilidade representada por:


Grau de disponibilidade:
MTBF
MTBF + MTTR
Ex.: sistema disponvel por 99.9% do tempo
Quanto maior, melhor
Disponibilidade

Tempo de parada / ano

90%
99%
99.9%
99.99%
99.999%
99.9999%

~ 1 ms
~ 4 dias
~ 9 horas
~ 1 hora
~ 5 minutos
~ 30 segundos
95

Conceitos

Seguridade representada por:


Grau de Seguridade: probabilidade do sistema ser
recupervel (de no se tornar imprprio) em caso de falha,
ou seja, a chance de uma falha no ser catastrfica
Falhas Benignas
Falhas Benignas + Catastrficas
Ex.: sistema recupervel em 98% das falhas
Quanto maior, melhor

Conceitos

Falta, Erro e Falha


Faltas so defeitos que ocorrem em sistemas
Originadas por fatores internos ou externos
Podem ficar dormentes at serem notadas
Erros so resultantes de faltas no sistema
Ocorrem quando faltas impedem o funcionamento normal
do sistema
Diferentes faltas podem causar o mesmo erro
Falhas podem ocorrer devido a erros no sistema
A falha o efeito observvel do erro
Diversos erros podem levar mesma falha

97

Conceito

Falta, Erro e Falha

Exemplo: HD
Um setor do disco
pode estar com defeito (falta)
Um erro de leitura pode ocorrer se um programa
tentar ler ou escrever neste setor
Pode ocorrer uma falha em um sistema que
tente acessar este setor e no consiga
Se os dados gravados neste setor estiverem
replicados em outro local, o sistema pode tolerar
a falta e no apresentar falha
98

Conceitos

Falhas em Cascata
Sistema
Componente
Componente
Falta

Falha
Erro

Falta

Falha
Erro

Falta
Erro

Falha

99

Conceitos

Falhas em Cascata
A falha de um componente pode ocasionar a falha de outro
que necessita dos servios do primeiro, e assim
sucessivamente, podendo levar o sistema como um todo a
falhar
Exemplo:
Uma falta no disco pode causar uma falha no
sistema de arquivos
Os servidores Web e de e-mail, que usam o sist. de
arquivos, podem falhar
Uma aplicao de comrcio eletrnico baseada na
Web pode tambm falhar

100

Conceitos

Previso de Faltas
Estima a probabilidade de que faltas ocorram
Permite que se avalie os riscos de falha
Remoo de Faltas
Consiste em detectar e remover as faltas antes que causem
erros e falhas
Usar ferramentas como debugger, scandisk, ...
Preveno de Faltas
Elimina as condies que fazem com que faltas ocorram
durante a operao do sistema
Usa replicao interna, tcnicas de validao, ...

101

Conceitos

Tolerncia a Faltas
Sistema
Componente
Componente
Falta

Falha
Erro

Falta

Falha
Erro

Uma barreira
impede que a
falha se propague
102

Conceitos

Tolerncia a Faltas
Propriedade de sistemas que no falham necessariamente
ao se deparar com uma falta
Sistemas Tolerantes a Faltas
So sistemas capazes de tolerar faltas encontradas durante
a sua execuo
Tcnicas de Tolerncia a Faltas
Permitem prevenir falhas contornando as faltas que os
sistemas podem vir a apresentar

103

Tipos de Faltas

Classificao em relao sua origem:


Fsica: causada pelo hardware
De projeto: introduzida durante a fase de projeto do
sistema
De interao: ocorrida nas interfaces entre componentes
do sistema ou na interao com o mundo exterior
Classificao em relao sua natureza:
Acidental ou Intencional
Maliciosa ou No

104

Tipos de Faltas

Classificao em relao ao seu surgimento:


Na fase de desenvolvimento do sistema
Na fase de operao do sistema
Classificao em relao sua localizao:
Interna
Externa
Classificao em relao persistncia:
Temporria
Transiente ou Intermitente
Permanente

105

Tipos de Faltas

Classificao com base no modelo de faltas:


Faltas Omissivas
Crash: deixa de funcionar permanentemente
Omisso: sistema deixou de fazer o que deveria em um
determinado instante
Temporal: sistema atrasou-se para executar uma
determinada ao
Faltas Assertivas
Sinttica: formato da sada inadequado
Semntica: sada apresenta valor incorreto
Faltas Arbitrrias: omissivas + assertivas

106

Tipos de Faltas

Os tipos de faltas mais freqentes so:


Faltas de operao e administrao: 42%
Faltas de software: 25%
Faltas de hardware: 18%
Faltas de ambiente: 14%
Fonte: Jim Gray. Why do Computers Stop and What Can
Be Done About It? IEEE SRDS85.
Estudos mais recentes confirmam estes dados

107

Replicao

Tolerncia a faltas pode ser obtida atravs do uso de recursos


redundantes
Redundncia pode ser aplicada das seguintes maneiras:
Redundncia Temporal: repetir uma mesma tarefa at que
um resultado vlido seja obtido
Redundncia de Valores: replicar um dado armazenado ou
enviado pela rede
Redundncia Espacial: usar vrias rplicas de um
componente de hardware ou software

108

Replicao

Uso de rplicas aumenta a disponibilidade


Exemplo: se a probabilidade de perda de uma mensagem
na rede de 2% (disponibilidade de 0,98), se duplicarmos
todas as mensagens, a chance de se perder as duas
cpias ser de 0,04% (disponibilidade de 1-0,022=0,9996)
Exemplo 2: se um servidor fica indisponvel durante 8 horas
a cada ano (disponibilidade de 0,999), se criarmos 3
rplicas teremos uma parada total de 3,15 segundos em
um sculo (disponibilidade de 1-0,0013= 0,999999999)

109

Replicao

O acesso a servios ou dados replicados deve ser


transparente para o usurio
Usurio deve acessar o dado ou servio replicado da
mesma forma que o faria se no houvesse replicao
Se for preciso manter a consistncia dos dados replicados,
este processo deve ser efetuado automaticamente pelas
rplicas
Mesmo que mais de uma rplica responda a uma
requisio, apenas uma resposta deve ser entregue ao
usurio

110

Replicao

Tcnicas de Replicao
Definem como as rplicas se comportaro durante o
funcionamento normal do sistema e sob a presena de
faltas
Principais Tcnicas de Replicao
Replicao Passiva (Primrio-Backup)
Replicao Ativa
Replicao Semi-Ativa (Lder-Seguidores)
Replicao Preguiosa (Lazy )

111

Replicao

Replicao Passiva (Primrio-Backup)


So criados um ou mais backups de um componente
(primrio) com o objetivo de substitu-lo em caso de falha
Funcionamento com propagao de estado instantnea:
Primrio recebe requisies, as executa, atualiza o
estado dos backups e retorna o resultado ao cliente

112

Replicao

Replicao Passiva (Primrio-Backup)

1.Requisio
Cliente
2.Executa
Primrio

Mquina 1

4. Resposta
3. Estado

Backup

Mquina 2

113

Replicao

Replicao Passiva (Primrio-Backup)


Em caso de falha do primrio, um backup ser escolhido
para assumir o seu lugar
O backup escolhido ter o mesmo estado do primrio at a
ltima requisio executada
Uma requisio em execuo durante a falha pode ser
recuperada pelo cliente reenviando a requisio ao novo
primrio
Atualizao de estado a cada requisio causa uma
sobrecarga considervel no primrio

114

Replicao

Replicao Passiva (Primrio-Backup)


Funcionamento com log e checkpoints :
As requisies de clientes so enviadas ao primrio e
ao(s) backup(s)
Primrio executa as requisies e responde aos
clientes
Backup recebe as requisies mas no as executa
apenas as registra em um log
O estado do primrio transferido para o(s) backup(s)
em instantes predeterminados chamados de
checkpoints

115

Replicao

Replicao Passiva (Primrio-Backup)


Funcionamento com log e checkpoints (cont.):
O backup limpa o log a cada checkpoint
Em caso de falha do primrio, o backup escolhido para
assumir o seu lugar ter o estado do primrio no ltimo
checkpoint
Para chegar ao mesmo estado do primrio no instante
da falha, o backup escolhido executa as requisies
registradas no log

116

Replicao

Replicao Passiva (Primrio-Backup)

3.Resposta
2.Executa
Primrio

Cliente
1.Requisio

Backup

2.Registra
log

Mquina 1

Mquina 2

117

Replicao

Replicao Passiva (Primrio-Backup)


Procedimento executado a cada Checkpoint :

Primrio

Mquina 1

1.Transfere
Estado

Backup
2.Limpa
Log

log

Mquina 2

118

Replicao

Replicao Passiva (Primrio-Backup)


Consideraes:
O(s) backup(s) consomem muito pouco
poder de processamento, pois no precisam processar as
requisies
O primrio tem a obrigao de salvar seu estado e enviar
ao(s) backup(s), o que consome processamento e largura
de banda
Transferncia de estado pode ser incremental
Quanto maior o intervalo entre checkpoints, menor a
sobrecarga no primrio, e maior
o tempo de recuperao de falhas

119

Replicao

Replicao Ativa
Um grupo de rplicas de um componente recebe uma
requisio de um cliente
Todas as rplicas processam a requisio
concorrentemente e enviam as suas respostas ao cliente
No preciso sincronizar o estado das rplicas, pois todas
executam os mesmos procedimentos

120

Replicao

Replicao Ativa

Cliente
Rplica 1

1.Requisio

Rplica 2

2. Resposta
Mquina 1

Mquina 2

121

Replicao

Replicao Ativa
O cliente precisa de apenas uma resposta
A resposta vlida para o cliente pode ser:
A mais freqente (votao)
A primeira recebida
Uma mdia
etc.
Com isso, a replicao ativa pode tolerar faltas de valor por
meio de votao
Em 2N+1 rplicas podemos ter N respostas erradas
sem ocasionar falha do sistema

122

Replicao

Replicao Ativa
Consideraes:
Alto custo para execuo das rplicas ativas
As requisies devem ser entregues na mesma ordem
para todas as rplicas usar protocolo de difuso
atmica
Ordenao de mensagens tem custo alto
Recuperao mais rpida que na replicao passiva,
pois caso uma rplica falhe, as demais continuam
funcionando normalmente

123

Replicao

Replicao Semi-Ativa (Lder-Seguidores)


Um componente (lder) possui uma ou mais rplicas
(seguidores)
Cada requisio enviada a todos, que as executam na
ordem definida pelo lder
Apenas o lder responde ao cliente que efetuou a requisio
No preciso sincronizar o estado das rplicas, pois todas
executam os mesmos procedimentos

124

Replicao

Replicao Semi-Ativa (Lder-Seguidores)

4. Resposta
3.Executa
Lder

Cliente
1.Requisio

3.Executa
Seguidor

2.Define
Ordem
Mquina 1

Mquina 2

125

Replicao

Replicao Semi-Ativa (Lder-Seguidores)


Consideraes:
Mesmo que as requisies dos clientes sejam entregues
fora de ordem, todas as rplicas chegaro ao mesmo
estado, j que a ordem de execuo arbitrada pelo
lder
O tempo gasto para processamento nas rplicas
seguidoras grande, j que elas tambm tm que
processar a chamada
Caso o lder falhe, um seguidor escolhido para
assumir o seu lugar

126

Replicao

Replicao Preguiosa (Lazy)


Operaes que precisam de ordenao total (ou seja, que
alteram o estado) so executadas como na replicao ativa
Operaes que podem ser executadas em ordens
diferentes em cada rplica podem ser enviadas para
qualquer rplica, que deve:
Atender a requisio
Enviar a resposta ao cliente
Difundir em background a requisio para as outras
rplicas

127

Replicao

Replicao Preguiosa (Lazy)


Operao
com ordem
causal
1.Requisio
2.Executa
Rplica 1

Cliente
3.Resposta

5.Executa
Rplica 2

4.Requisio
Mquina 1

Mquina 2

128

Replicao

Replicao Preguiosa (Lazy)


Consideraes:
Reduz a sobrecarga na execuo de algumas operaes,
j que nem sempre necessrio usar um protocolo de
difuso atmica
Exige que a semntica das operaes seja conhecida
para diferenciar as operaes que exigem ordenao
total daquelas nas quais ordem causal suficiente

129

Replicao

Programao com Mltiplas Verses


Rplicas no precisam ser idnticas
So criadas diferentes implementaes de um mesmo
componente de software
Linguagem de programao, compilador e suporte de
execuo diferentes
Algoritmos diferentes
Times de desenvolvimento diferentes
Resultados so obtidos atravs de votao
Com mltiplas verses, reduz-se a chance de todas as
rplicas falharem no mesmo instante

Deteco de Falhas

A falha de um componente de um sistema pode levar todo o


sistema a falhar
Mesmo que o sistema consiga tolerar a falha do componente,
este deve ser recuperado para restaurar a capacidade do
sistema de tolerar faltas
Ex.: na replicao passiva, se o nico backup existente
assume o lugar do primrio, preciso criar um novo
backup
preciso detectar as faltas sofridas pelos componentes para
poder recuper-los

131

Deteco de Falhas

Deteco Local de Falhas


Podem ser usados diversos mtodos:
Rotinas de auto-verificao (self-check)
Guardies: verificam constantemente as sadas geradas
por um componente
Watchdogs : componente deve constante-mente reiniciar
um temporizador antes que ele se esgote, indicando
uma falha
Problema: mesmo para um observador local, processos
lentos podem parecer falhos

132

Deteco de Falhas

Deteco Distribuda de Falhas


Um componente do sistema envia mensagens
periodicamente aos seus pares e avisa que est vivo (I am
alive) ou pergunta se eles esto vivos (Are you alive ?)
Se um componente no se manifestar por um determinado
tempo, ele suspeito de falha
Suspeitas infundadas podem ser causadas por atraso,
particionamento ou falha da rede

133

Deteco de Falhas

Diagnstico do Sistema
Componentes faltosos podem reportar erroneamente o
estado dos seus pares
Em um sistema com f componentes faltosos, cada
componente deve ser testado por pelo menos f outros, e
precisamos de n 2f +1 elementos para detectar
corretamente a falta
Para diagnosticar falhas de componentes do sistema, um
elemento deve coletar e analisar os dados obtidos dos
demais componentes

134

Deteco de Falhas

Detector de Falhas
Servio ou mdulo que verifica a ocorrncia de falhas em
componentes do sistema
Implantado junto ao componente
Executa um algoritmo de deteco de falhas
Interage com detectores de outros componentes do
sistema
O componente pode requisitar ao seu detector informaes
sobre o estado de outros componentes do sistema

135

Deteco de Falhas

Tipos de Detectores de Falhas


Perfeitos
Determinam precisamente se um componente do sistema
falhou ou no
Todos os componentes tm a mesma viso
Imperfeitos
Detectores determinam se um processo suspeito de
falha ou no
Diferentes componentes podem ter vises distintas de
um mesmo componente

136

Deteco de Falhas

Tipos de Detectores de Falhas


Detectores perfeitos so difceis de obter, principalmente
em sistemas distribudos
Detectores quase-perfeitos podem ser obtidos usando
crash controlado
Se um componente suspeito de falha, ele removido
do sistema
O componente passa a ser ignorado por todos os
demais componentes
Pode levar a descartar componentes que esto
funcionando corretamente

137

Recuperao de Falhas

Recuperao de Erros
Ao perceber um erro, o componente pode tentar recuperarse automaticamente
Recuperao de erro por retrocesso (backward error
recovery): componente volta a um estado anterior ao erro e
continua ativo
Exemplos: reinicia a execuo de um mtodo,
retransmite pacotes perdidos, etc.
Operaes posteriores ao instante de retrocesso so
perdidas, mas seu efeito pode ainda ser sentido no
sistema, levando possivelmente a inconsistncias

138

Recuperao de Falhas

Recuperao de Erros (cont.)


Recuperao por avano (forward error recovery):
componente toma medidas que anulem ou aliviem o efeito
do erro e continua a operar normalmente
Exemplo: descartar pacotes, substituir um valor invlido
pelo valor vlido anterior, etc.
Usada quando no h tempo para voltar para estado
anterior e retomar execuo, ou quando aes no
podem ser desfeitas

139

Recuperao de Falhas

Recuperao de Falhas
Se ocorrer a falha de um componente, um sistema
tolerante a faltas deve mascar-la usando as rplicas
disponveis
Na replicao passiva, substituir o primrio por um backup
e criar um novo backup
Na replicao semi-ativa, substituir o lder por um de seus
seguidores e criar um seguidor
Nas replicaes ativa e lazy, criar uma nova rplica para
manter a capacidade do sistema de tolerar faltas (ou falhas
de componentes)

140