Buscar

Livro Sistemas Distribuidos Principios e Paradigmas - Tanembaum 2a ed

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

SISTEMAS DISTRIBUiDOS
~yt~c~~iO$ e ~CtrCt~igVVt,Ct$
2Q edi900
Andrew S. Tanenbaum
Maarten Van Steen
Tradu~ao
Arlete Simille Marques
Engenheira Qufmica - UFPR
Revisao Tecnica
. Wagner Luiz Zucchi
Professor doutor do Departamento de Sistemas Eletronicos da
Escola Politecnica da Universidade de Sao Paulo
PEARSON
Prentice
Hall
Sumario
Prefacio IX
1. Introducao
1.1 Defini«ao de urn sistema distribuido 1
1.2 Metas 2
1.3 Tipos de sistemas distribufdos 10
1.4 Resumo 18
2.1 Estilos arquitet6nicos 20
2.2 Arquiteturas de sistemas................................................................................................................................................................. 22
2.3 Arquiteturas versus middleware 32
2.4 Autogerenciamento em sistemas distribufdos.: 35
3.1 Threads 42
3.2 Virtual iza«ao 48
3.3 Clientes 50
3.4 Servidores 53
3.5 Migra«ao de c6digo 62
3.6 Resumo 67
4.1 Fundamentos 69
4.2 Chamada de procedimento remoto 75
4.3 Comunica«ao orientada a mensagem 84
4.4 Comunica«ao orientada a fluxo 95
4.6 Resumo 105
5.1 Nomes, identificadores e endere«os 108
5.2 Nomea«ao simples 110
5.3 Nomea«ao estruturada 118
5.4 Nomea«ao baseada em atributo 131
5.5 Resumo 137
6.1 Sincroniza«ao de rel6gios 140
6.2 Re16gios 16gicos....................................................................................................................... 147
6.3 Exclusao mutua 152
6.4 Posicionamento global de n6s 157
6.5 Algoritmos de elei«ao 159
6.6 Resumo 163
7.1 Introdu«ao 165
7.2 Modelos de consistencia centrados em dados 167
7.3 Modelos de consistencia centrados no cliente 174
7.4 Gerenciamento de replicas 178
7.5 Protocolos de consistencia 185
7.6 Resumo 191
8.1 Introdu«ao 11 tolerancia a falha 194
8.2 Resiliencia de processo 198
8.3 Comunicar;ao confiavel cliente-servidor 203
8.4 Comunicar;ao confiavel de grupo 207
8.5 Comprometimento distribuido 215
8.6 Recuperar;ao 220
8.7 Resumo 226
9.1 Introdur;ao 11 seguranr;a 228
9.2 Canais seguros 240
9.3 Controle de acesso 250
9.4 Gerenciamento da seguranr;a 259
9.5 Resumo 266
10.1 Arquitetura 268
10.2 Processos 272
10.3 Comunicar;ao 275
10.4 Nomear;ao : 281
10.5 Sincronizar;ao 284
10.6 Consistencia e replicar;ao 285
10.7 Tolerancia a falba 288
10.8 Seguranr;a 291
10.9 Resumo 294
11.1 Arquitetura 296
11.2 Processos 302
11.3 Comunicar;ao 303
11.4 Nomear;ao 306
11.5 Sincronizar;ao 310
11.6 Consistencia e replicar;ao 314
11.7 Tolerancia a falha 320
11.8 Seguranr;a , 322
11.9 Resumo 328
12.1 Arquitetura 330
12.2 Process os 335
12.3 Comunicar;ao 339
12.4 Nomear;ao 344
12.5 Sincronizar;ao 345
12.6 Consistencia e replicar;ao 346
12.7 Tolerancia a falha 353
12.8 Seguranr;a 354
12.9 Resumo 355
13.1 Introdur;ao a modelos de coordenar;ao 357
13.2 Arquiteturas 358
13.3 Processos 364
13.4 Comunicar;ao 364
13.5 Nomear;ao 365
13.6 Sincronizar;ao 367
13.7 Consistencia e replicar;ao 367
13.8 Tolerancia a falha 371
13.9 Seguranr;a , 374
13.10 Resumo 375
14.1 Sugest6es para leitura adicional.. 377
14.2 Bibliografia em ordem a1fabetica 382
Prefacio
Sistemas distribuidos sao uma area da ciencia da computa<;ao que esta mudando rapidamente. Nos ultimos anos vem
surgindo novos t6picos muito interessantes, como computa<;ao peer-to-peer e redes de sensores, enquanto outros
amadureceram muito, como servi<;os Web e aplica<;6es Web em geral. Mudan<;as como essas exigiram uma revisao de
nosso texto original para que ficasse atualizado.
Esta segunda edi<;aoreflete uma grande revisao em compara<;ao com a anterior. Adicionamos urn capitulo especifico
sobre arquiteturas, que reflete 0 progresso alcan<;ado na organiza<;ao de sistemas distribuidos. Vma outra diferen<;a
importante e que, agora, ha muito mais material sobre sistemas descentralizados, em particular computa<;ao peer-to-peer.
Nao nos limitamos a discutir apenas as tecnicas basicas, mas tambem demos aten<;ao as suas aplica<;6es, como
compartilhamento de arquivo, divulga<;a? de informa<;6es, redes de entrega de conteudo e sistemas publicar/subscrever.
Assim como esses dois assuntos importantes, ainda discutimos novos assuntos em todo 0 livro. Por exemplo,
adicionamos material sobre redes de sensores, virtualiza<;ao, clusters de servidores e computa<;ao em grade. Demos
aten<;ao especial ao autogerenciamento de sistemas distribuidos, urn t6pico cada vez mais importante dado 0 continuo
crescimento da escala desses sistemas.
Certamente, modemizamos 0 material onde foi adequado. Por exemplo, quando discutimos consistencia e
replica<;ao, era agora focalizamos modelos de consistencia mais apropriados para sistemas distribuidos modemos mais
do que os modelos originais, que foram talhados para computa<;ao distribuida de alto desempenho. Da mesma maneira,
adicionamos material sobre modemos algoritmos distribuidos, entre eles algoritmos de sincroniza<;ao de rel6gio e de
localiza<;ao baseados em GPS.
Embora isso nao seja comum, conseguimos reduzir 0 numero total de paginas. Essa redu<;ao e causada, em parte,
pela exclusao de assuntos como coleta distribuida de lixo e protocol os de pagamento eletr6nico, e tambem pela
reorganiza<;ao dos quatro ultimos capitulos.
Como na edi<;ao anterior, 0 livro e dividido em duas partes. Principios de sistemas distribuidos sao discutidos do
Capitulo 2 ao Capitulo 9, enquanto as abordagens globais dos modos de desenvolvimento de aplica<;6es distribufdas (os
paradigmas) sao discutidas do Capitulo 10 ao Capitulo 13. Entretanto, diferente da edi<;ao anterior, decidimos nao
discutir estudos de casos completos nos capftulos dedicados a paradigmas. Em vez disso, agora cada principio e
explicado por meio de urn caso representativo. Por exemplo, invoca<;6es de objeto sao discutidas como urn principio de
comunica<;ao no Capitulo 10 sobre sistemas distribufdos baseados em objetos. Essa abordagem nos permitiu condensar
o material, mas tambem tomou a leitura e 0 estudo mais agradaveis.
Claro que continuamos a recorrer extensivamente a prMica para explicar 0 que sao, afinal, sistemas distribufdos.
Varios aspectos de sistemas utilizados na vida real, como WebSphere MQ, DNS, GPS, Apache, Corba, Ice, NFS,
Akamai, TIBlRendezvous, Jini e muitos outros sao discutidos em todo 0 livro. Esses exemplos ilustram a tenue divisao
entre teoria e pratica, que toma a area de sistemas distribufdos tao interessante.
Muitas pessoas contribufram para este livro de divers as maneiras. Gostarfamos de agradecer em especial a
D. Robert Adams, Amo Bakker, Coskun Bayrak, Jacques Chassin de Kergommeaux, Randy Chow, Michel Chaudron,
Puneet Singh Chawla, Fabio Costa, Cong Du, Dick Epema, Kevin Fenwick, Chandana Gamage, Ali Ghodsi, Giorgio
Ingargiola, Mark Jelasity, Ahmed Kamel, Gregory Kapfhammer, Jeroen Ketema, Onno Kubbe, Patricia Lago, Steve
MacDonald, Michael J. McCarthy, M. Tamer Ozsu, Guillaume Pierre, Avi Shahar, Swaminathan Sivasubramanian,
Chintan Shah, Ruud Stegers, Paul Tymann, Craig E. Wills, Reuven Yagel e Dakai Zhu pel a leitura de partes do
manuscrito e por terem ajudado a identificar erros cometidos na edi<;ao anterior e oferecido comentarios uteis.
Por fim, gostarfamos de agradecer a nossas farmlias. Ate agora, Suzanne ja passou por esse processo dezessete
vezes. E muito para mim, mas tambem para ela. Ela nunca disse: "Agora, chega!", embora eu tenha certeza de que teve
vontade de dizer. Obrigado. Agora, Barbara e Marvin tern uma ideia muito melhor do que professores fazem para viver
e sabem quais sao as diferen<;as entre urn born e um mau livro didMico. Agora eles sao uma inspira<;ao para eu tentar
produzir mais bons do que maus livros (AST).
Como tirei uma licen<;a para atualizar 0 livro, 0 trabalho de escrever tambem ficou muito mais agradavel para
Marielle. Ela esta apenas come<;ando a se acostumar com ele, mas continua a me dar suporte e a me alertar quando e
tempo de voltar rninha aten<;ao a assuntosmais importantes. Eu the devo muito. A essa altura, Max e Elke ja tem uma
ideia muito melhor do que significa escrever um livro, porem, em cornpara<;ao com 0 que eles mesmos estao lendo,
acham diffcil entender 0 que ha de tao interessante nessas coisas estranhas que chamamos sistemas distribufdos. E eu
nao posso culpa-Ios (MvS).
Companion Website
i
·0 Companion Website desta edi<;ao (www.prenhall.com/tanenbaum_br)ofereceumconjuntocompleto de apre-
senta<;6es em PowerPoint para auxiliar os professores a preparar suas aulas, assim como manual de solu<;6es em
ingles. Esse material pode ser acessado por meio de uma senha, e, para obte-Ia, os professores devem entrar
o •• 0 em contato com um representante Pearson ou enviar urn e-mail parauniversitarios@pearsoned.com.
'0 •
Introdu~ao
Os sistemas de computac;ao estao passando por uma
revoluc;ao. Desde 1945, quando comec;ou a era modem a
dos computadores, ate aproximadamente 1985, os com-
putadores eram grandes e caros. Mesmo os minicomputa-
dores custavam no minimo dezenas de milhares de d6la-
res cada. 0 resultado e que a maioria das organizac;6es
tinha apenas alguns poucos computadores e, na falta de
urn modo de conecta-Ios, eles funcionavam independente-
mente uns dos outros.
Contudo, mais ou menos a partir de meados da deca-
da de 1980, dois avanc;os tecnol6gicos comec;aram a mudar
es a situac;ao. 0 primeiro foi 0 desenvolvimento de micro-
processadores de grande capacidade. De infcio, eram
maquinas de 8 bits, mas logo se tomaram comuns CPUs de
16,32 e 64 bits. Muitas dessas CPUs tinham a capacidade
de computac;ao de urn mainframe - isto e, urn grande
computador central-, mas por uma frac;ao do prec;o dele.
A quantidade de melhorias que ocorreu na tecnologia
de computadores nos ultimos 50 anos e verdadeiramente
as ombrosa e totalmente sem precedentes em outros seto-
re . De uma maquina que custava dez milh6es de d61ares
e executava uma instruc;ao por segundo, chegamos a
maquinas que custam mil d61ares e podem executar urn
bilhao de instruc;6es por segundo, urn ganho prec;o/desem-
penho de 1013. Se os carros tivessem melhorado nessa pro-
porc;ao no mesmo periodo de tempo, urn Rolls Royce cus-
taria agora urn d61ar e faria urn bilhao de milhas por galao.
(Infelizmente, e provavel que tamMm tivesse urn manual
de 200 paginas para ensinar como abrir a porta.)
o segundo desenvolvimento foi a invenc;ao de redes
de computadores de alta velocidade. Redes locais, ou
LANs (local-area networks), permitem que centenas de
maquinas localizadas dentro de urn ediffcio sejam conec-
tadas de modo tal que pequenas quantidades de informa-
c;ao possam ser transferidas entre maquinas em alguns
microssegundos, ou algo parecido. Maiores quantidades
de dados podem ser movimentadas entre maquinas a
taxas de 100 milh6es a 10 bilh6es de bits/so Redes de
longa distancia, ou WANs (wide-area networks), per-
mitem que milh6es de maquinas no mundo inteiro se
conectem a velocidades que variam de 64 Kbits/s a giga-
bits por segundo.
o resultado dessas tecnologias e que, atualmente, nao
somente e viavel, mas tambem facil, montar sistemas de
computac;ao compostos por grandes quantidades de com-
putadores conectados por uma rede de alta velocidade.
Esses sistemas costumam ser denominados redes de com-
putadores ou sistemas distribuidos, em comparac;ao com
os sistemas centralizados (ou sistemas monoprocessa-
dores) anteriores, que consistem em urn unico computa-
dor, seus perifericos e, talvez, alguns terrninais remotos.
1.1 Uefini~ao de urn Sistema UistribuTdo
Varias definic;6es de sistemas distribuidos ja foram
dadas na literatura, nenhuma delas satisfat6ria e de acor-
do com nenhuma das outras. Para nossa finalidade, e sufi-
ciente dar uma caracterizac;ao sem ser muito especifica:
Um sistema distribufdo e um conjunto de compu-
tadores independentes que se apresenta a seus
usuarios como um sistema unico e coerente.
Essa definic;ao tern varios aspectos importantes. 0
primeiro e que urn sistema distribuido consiste em com-
ponentes ,;to e, computadores) autonomos. Urn segundo
aspecto e que os usuarios, sejam pessoas ou programas,
acham que estao tratando com urn unico sistema. Isso sig-
nifica que, de urn modo ou de outro, os componentes
autonomos precis am colaborar. Como estabelecer essa
colaborac;ao e 0 ceme do desenvolvimento de sistemas
distribuidos. Observe que nenhuma premissa e adotada
em relac;ao ao tipo de computadores. Em principio, ate
mesmo dentro de urn unico sistema, eles poderiam variar
des de computadores centrais (mainframes) de alto desem-
penho ate pequenos n6s em redes de sensores. Da mesma
maneira, nenhuma premissa e adotada quanta ao modo
como os computadores sao interconectados. Voltaremos a
esses aspectos mais adiante neste capitulo.
Em vez de continuar com definic;6es, talvez seja
mais util que nos concentremos em' caracterfsticas impor-
tantes de sistemas distribuidos. Uma caracterfstica impor-
tante e que as diferenc;as entre os vanos computadores e 0
modo como eles se comunicam estao, em grande parte,
ocultas aos usmirios. 0 mesmo vale para a organizac;ao
interna do sistema distribufdo. Uma outra caracterfstica
importante e que uswirios e aplicac;6es podem interagir
com urn sistema distribufdo de maneira consistente e uni-
forme, independentemente de onde a interac;ao ocorra.
Em principio, tambem deveria ser relativamente
facil expandir ou aumentar a escala de sistemas distribuf-
dos. Essa caracterfstica e uma conseqtiencia direta de ter
computadores independentes, porem, ao mesmo tempo,
de ocultar como esses computadores realmente fazem
parte do sistema como urn todo. Em geraI, urn sistema
distribufdo estara continuamente disponfveI, embora
algumas partes possam estar temporariamente avariadas.
Usuarios e aplicac;6es nao devem perceber quais SaG as
partes que estao sendo substitufdas ou consertadas, ou
quais SaGas novas partes adicionadas para atender a mais
usuarios ou aplicac;6es.
Para suportar computadores e redes heterogeneos e,
simultaneamente, oferecer uma visao de sistema unico, os
sistemas distribufdos costumam ser organizados por meio
de uma camada de software - que e situada Iogicamente
entre uma camada de nfvel mais alto, composta de usua-
rios e aplicac;6es, e uma camada subjacente, que consiste
em sistemas operacionais e facilidades basicas de comu-
nicac;ao, como mostra a Figura 1.1. Por isso, tal sistema
distribufdo as vezes e denorninado middleware.
Figura 1.1 Sistema distribuido organizado como middleware.
A camada de middleware se estende por varias
maquinas e oferece a mesma interface a cada aplica<;:ao.
A Figura 1.1 mostra quatro computadores em rede e
tres aplicac;6es, das quais a aplicac;ao B e distribufda para
os computadores 2 e 3. A mesma interface e oferecida a
cada aplicac;ao. 0 sistema distribufdo proporciona os
meios para que os componentes de uma unica aplicac;ao
distribulda se comuniquem uns com os outros, mas tam-
bem perrnite que diferentes aplicac;6es se comuniquem.
Ao me mo tempo, ele ocuIta, do melhor e mais razoavel
modo po fyel. as diferenc;as em hardware e sistemas ope-
ra ionais para cada aplicac;ao.
e er posslvel montar sistemas distribuldos
e: sariamente que essa seja uma boa
a tecnologia corrente, tambem e possf-
vel colocar quatro drives de disco flexfvel em urn compu-
tador pessoal. A questao e que nao teria sentido fazer isso.
Nesta sec;ao, discutiremos quatro metas importantes que
devem ser cumpridas na construc;ao de urn sistema distri-
bUldo para que valha a pen a 0 esforc;o. Urn sistema dis-
tribuldo deve oferecer facil acesso a seus recursos; deve
ocultar razoavelmente bem 0 fato de que os recursos SaG
distribufdos por uma rede; deve ser aberto e deve poder
ser expandido.
A principal meta de urn istema distribufdo e facili-
tar aos usuanos, e as aplica<;:6es, 0 acesso a recursos
remotos e seu compartilhamenrode maneira controlada e
eficiente. Os recursos podem ser muito abrangentes, mas
entre os exemplos tfpicos estao impressoras."computado-
res, facilidades de armazenamento, dados, paginas Web e
redes, s6 para citar alguns. Ha muitas raz6es para querer
compartilhar recursos, e uma razao 6bvia e a economia.
Por exemplo, e mais barato perrnitir que uma impressora
seja compartilhada por diversos usuanos em urn pequeno
escrit6rio do que ter de comprar e manter uma impresso-
ra direcionada a cada usuano. Do mesmo modo, em ter-
mos econornicos, faz sentido compartilhar recursos de
alto custo como supercomputadores, sistemas de armaze-
namento de alto desempenbo, images etters e outros peri-
fericos caros.
Conectar usuarios e recursos tambem facilita a cola-
borac;ao e a troca de informac;6es, 0 que e claramente ilus-
trado pelo sucesso da Internet com seus protocolos sim-
ples para trocar arquivos, correio, documentos, audio e
vfdeo. Agora, a conectividade da Internet esta Ievando a
vanas organizac;6es virtuais nas quais grupos de pessoas
muito dispersas geograficamente trabalham juntas por
meio de groupware, isto e, software para edic;ao colabo-
rativa, teleconferencia e assim por diante. Da mesma
maneira, a conecti idade da Internet possibilitou 0 comer-
cio eletronico, que nos perrnite comprar e vender todos os
tipos de mercadoria sem ter de realmente ir a uma Ioja ou
ate mesmo sair de casa.
Contudo, a medida que a conectividade e 0 compar-
tilhamento crescem, a seguranc;a se torna cada vez mais
importante. a prlitica corrente, os sistemas ofere cern
pouca protec;ao contra bisbilhotice ou intrusao na comu-
nicac;ao. Senhas e outras informac;6es sensfveis muitas
vezes sao enviadas como texto comum - isto e, nao crip-
tografado - pela rede, ou armazenadas em servidores
que podemos apenas esperar que sejam confiaveis. Nesse
sentido, ha muito espac;o para melhorias. Por exemplo,
hoje e posslvel fazer pedidos de mercadorias informando
apenas urn numero de cartao de credito.'Raramente e soIi-
citada uma prova de que 0 cliente seja 0 proprietario do
cartao. No futuro, fazer pedidos desse modo s6 sera pos-
slvel se voce realmente provar que possui 0 cartao em
maos, inserindo-o em uma Ieitora de cart6es.
Urn outro problema de seguranc;a e 0 rastreamento
de comunica~6es para montar urn perfil de preferencias
de urn usuano especffico (Wang et aI., 1998). Esse ras-
treamento e uma viola~ao explicita da privacidade, em
especial se for feito sem avisar 0 usmirio. Urn problema
relacionado e que maior conectividade tambem pode
resultar em comunica~ao indesejavel, como envio de
mala direta sem permissao, muitas vezes denominada
spam. Nesses casos, talvez precisemos nos proteger usan-
do filtros especiais de informa~6es que selecionam men-
agens de entrada com base em seu conteudo.
1.2.2 Transparencia da distribuicao
Uma meta importante de urn sistema distribufdo e
ocultar 0 fato de que seus processos e recurs os estao fisi-
amente distribufdos por varios computadores. Urn siste-
ma distribufdo que e capaz de se apresentar a usuarios e
aplicac;6es como se fosse apenas urn unico sistema de
omputador e denominado transparente. Em primeiro
lugar, vamos examinar quais saG os tipos de transparencia
que existem em sistemas distribufdos. Em seguida, abor-
daremos a questao mais geral sobre a decisao de se a
rransparencia e sempre requerida.
o conceito de transparencia pode ser aplicado a
di\'ersos aspectos de urn sistema distribuido - os mais
importantes sao mostrados na Tabela 1.1.
Transparencia Descri~ao
cesso Oculla diferengas na represenlagao de dados e
no modo de acesso a um recurso
LocaJizagao Oculla 0 lugar em que um recurso esla localizado
Migragao Oculla que um recurso pode ser
movido para oulra localizagao
Relocagao Oculla que um recurso pode ser movido para
uma oulra localizagao enquanto em uso
Replicagao Oculla que um recurso e replicado
Concorrencia Oculla que um recurso pode ser comparlilhado
por diversos usuarios concorrenles
Falha Oculla a falha e a recuperagao de um recurso
Tabela 1.1 Diferentes formas de transparencia em um sistema
distribufdo (ISO. J 995).
Transparencia de acesso trata de ocultar diferenc;as
em representa~ao de dados e 0 modo como os recursos
podem ser acessados por usuarios. Em urn nivel basico,
desejamos ocultar diferen~as entre arquiteturas de maqui-
nas, porem 0 mais importante e chegar a urn acordo sobre
como os dados devem ser representados por maquinas e
sistemas operacionais diferentes. Por exemplo, urn siste-
ma distribuido pode ter sistemas de computac;ao que exe-
cutam sistemas operacionais diferentes, cada urn com
suas proprias conven~6es para nomea~ao de arquivos.
Diferenc;as entre conven~6es de nomea~ao e tambem 0
modo como os arquivos devem ser manipulados devem
ficar ocultos dos usuarios e das aplicac;6es.
Urn importante grupo de tipos de transparencia tern
a ver com a localizac;ao de urn recurso. Transparencia de
localiza(,;ao refere-se ao fato de que os usuarios nao
podem dizer qual e a localiza~ao fisica de urn recurso no
sistema. A nomea~ao desempenha urn papel importante
para conseguir transparencia de localizac;ao.
Em particular, pode-se conseguir transparencia de
localiza~ao ao se atribuir somente nomes logicos aos recur-
sos, isto e, nomes nos quais a localiza~ao de urn recurso
nao esta secretamente codificada. Urn exemplo desse tipo
de nome e 0 URL http://www.prenhall.com/index.html. que
nao da nenhuma pista sobre a localiza~ao do principal ser-
vidor Web da Prentice Hall. 0 URL tambem nao da nenhu-
ma pista se index.html sempre esteve em sua localizac;ao
corrente ou se foi transferido para la recentemente. Diz-se
que sistemas distribufdos nos quais recursos podem ser
movimentados sem afetar 0 modo como podem ser acessa-
dos proporcionam transparencia de migra(,;ao. Ainda
mais vantajosa e a situa~ao na qual recursos podem ser
relocados enquanto estao sendo acessados sem que 0 usua-
rio ou a aplica~ao percebam qualquer coisa. Nesses casos,
diz-se que 0 sistema suporta transparencia de reloca(,;ao.
Urn exemplo de transparencia de reloca~ao e 0 uso movel
de laptops sem fio, cujos usuarios podem continuar a usa-
10 quando vaGde urn lugar a outro sem sequer se desconec-
tar temporariamente.
Como veremos, a replicac;ao desempenha urn papel
muito importante em sistemas distribuidos. Por exemplo,
recursos podem ser replicados para aumentar a disponibili-
dade ou melhorar 0 desempenho colocando uma copia
perto do lugar em que ele e acessado. Transparencia de
replica(,;ao esta relacionada a ocultar 0 fato de que existem
vanas copias de urn recurso. Para ocultar a replica~ao dos
usuanos, e necessario que todas as replicas tenham 0 mes-
mo nome. Por conseqiiencia, urn sistema que suporta trans-
parencia de replicac;ao em geral tambem deve suportar
transparencia de localizac;ao porque, caso contrano, seria
impossivel referir-se a replicas em diferentes localiza~6es.
Ja mencionamos que uma importante meta de siste-
mas distribufdos e perrnitir compartilhamento de recur-
sos. Em muitos casos, esse compartilhamento e coopera-
tivo, como no caso da comunicac;ao. Todavia, tambem ha
muitos exemplos de compartilhamento competitivo de
recursos. Urn deles pode ser 0 caso de dois usuarios inde-
pendentes, em que cada urn pode ter armazenado seus
arquivos no mesmo servidor de arquivosou pode acessar
as mesmas tabelas em urn banco de dados compartilhado.
Nesses casos, e importante que tada usuario nao perceba
que 0 outroesta utilizando 0 mesmo recurso. Esse feno-
meno e denominado transparencia de concorrencia.
Uma questao importante e que 0 aces so concorrente a urn
recurso compartilhado deixe esse recurso em estado con-
sistente. Pode-se conseguir consistencia por meio de tra-
vas de acesso, 0 que da a cada usuario, urn por vez, aces-
so exclusivo ao recurso desejado. Urn mecanismo mais
refinadoe utilizar transa~oes; porem, como veremos em
capftulos posteriores, e bastante diffcil implementar tran-
sa~oes em sistemas distribufdos.
Uma defini~ao alternativa e popular de urn sistema
distribufdo, devida a Leslie Lamport, e "Voce sabe que tern
urn quando a falha de urn computador do qual nunca ouviu
falar impede que voce fa~a qualquer trabalho". Essa des-
cri~ao pontua uma outra questao importante no projeto de
sistemas distribufdos: como tratar falhas. Fazer com que
urn sistema distribufdo seja transparente a falha signifi-
ca que urn usuario nao percebe que urn recurso (do qual
possivelmente nunc a ouviu falar) deixou de funcionar bem
e que, subseqiientemente, 0 sistema se recupero.u da falha.
Mascarar falhas e uma das questoes mais diffceis em sis-
temas distribufdos e ate mesmo impossfveis de se realizar
quando sao adotadas certas prernissas aparentemente rea-
listas, como discutiremos no Capftulo 8. A principal difi-
culdade para mascarar falhas esta na incapacidade de dis-
tinguir entre urn recurso morto e urn recurso insuportavel-
mente lento. Por exemplo, quando contatamos urn servidor
Web ocupado, a certa altura 0 tempo do browser se esgo-
tara e ele avisara que a pagina Web nao esta disponfvel.
Nesse ponto, 0 usuario nao pode concluir se, na verdade,
o servidor esta avariado.
Embora a transparencia de distribui~ao seja geral-
mente considerada preferfvel para qualquer sistema distri-
bufdo, ha situa~oes em que tentar ocultar completamente
dos usuanos todos os aspectos da distribui~ao nao e uma
boa ideia. Urn exemplo e requisitar que seu jornal eletro-
nico apare~a em sua caixa postal antes das 7 horas da
manha, hora local, como sempre, enquanto naquele
momenta voce esta no outro lado do mundo, onde 0 fuso
horario e diferente. Seu jornal matutino nao seraaquele ao
qual voce esta acostumado.
Da mesma maneira, nao se pode esperar que urn sis-
tema distribufdo de longa distancia que conecta urn pro-
cesso em San Francisco a urn processo em Amsterda
oculte 0 fato de que a Mae Natureza nao permitira que ele
envie uma mensagem de urn processo para 0 outro em
menos do que aproximadamente 35 milissegundos. Na
pratica, quando se esta usando uma rede de computado-
res, isso levara varias centenas de rnilissegundos. A trans-
rnissao de sinal nao somente esta lirnitada pela velocidade
da luz, mas tambem pelas capacidades de processamento
dos comutadores intermedianos.
Tambem ha urn comprornisso entre urn alto grau de
transparencia e 0 desempenho de urn sistema. Por exem-
plo, muitas aplica~oes de Internet tentam contatar urn ser-
vidor repetidas vezes antes de finalmente desistir. Por
conseqiiencia, tentar mascarar uma falha transit6ria de
servidor antes de tentar urn outro pode reduzir a velocidade
do sistema como urn todo. Nesse caso, talvez seja melhor
desistir mais cedo ou, ao menos, perrnitir que 0 usuario
cancele as tentativas para fazer contato.
Urn outro exemplo e 0 de precisar garantir que varias
replicas, localizadas em continentes diferentes, devam ser
consistentes 0 tempo todo. Em outras palavras, se uma
c6pia for alterada, essa altera~ao deve ser propagada para
todas as c6pias antes de perrnitir qualquer outra opera~ao.
E claro que, agora, uma unica opera~ao de atualiza~ao
pode demorar ate alguns segundos para ser conclufda,
algo que nao pode ser ocultado dos usuanos.
Por fim, ha situa~oes em que nao e nem urn pouco
6bvio que ocultar distribui<;ao seja uma boa ideia. A medi-
da que sistemas distribufdos estao se expandindo para dis-
positivos que as pessoas carregam consigo, e a pr6pria
no~ao de localiza~ao e percep~ao de contexto esta se tor-
nando cada vez mais importante, pode ser melhor expor
a distribui~ao em vez de tentar oculta-la. Essa exposi~ao
de distribui~ao ficara mais evidente quando discutirmos
sistemas distribufdos embutidos e ubfquos neste capftulo.
Como urn exemplo simples, considere uma funcionana
que quer imprimir urn arquivo que esta em seu notebook.
E melhor enviar 0 trabalho a ser impressa a uma impres-
sora ocupada que esta pr6xima do que a uma desocupada
localizada na sede corporativa em urn pafs diferente.
Tambem ha outros argumentos contra a transparen-
cia de distribui<;ao. Reconhecendo que a total transparencia
de distribui~ao e simples mente impossfvel, devemos nos
perguntar se e ate mesmo sensato dissimular que pode-
mos alcan~a-la. Talvez seja muito melhor tornar a distri-
bui<;aoexplfcita, de modo que 0 usuano e 0 desenvolvedor
de aplica~ao nunca sejam levados a acreditar que existe
uma coisa denorninada transparencia. 0 resultado sera
que os usuarios entenderao de maneira mais clara 0 com-
portamento, as vezes inesperado, de urn sistema distribuf-
do e, por isso, estarao mais bem preparados para lidar
com esse comportamento.
A conclusao e que visar a transparencia de distribui-
<;aopode ser uma bela meta no projeto e na implementa-
~ao de sistemas distribufdos, mas deve ser considerada em
conjunto com outras questoes, como desempenho e faci-
lidade de compreensao. Nem sempre vale a pen a tentar
conseguir total transparencia, pois 0 pre~o que se paga
por isso pode ser surpreendentemente alto.
Uma outra meta importante de sistemas distribufdos
e a abertura. Urn sistema distribuido aberto e urn siste-
ma que oferece servi~os de acordo com regras padroniza-
das que descrevem a sintaxe e a semantica desses servi-
~os. Por exemplo, em redes de computadores ha regras
padronizadas que governam 0 formato, 0 conteudo e 0
significado de mensagens enviadas e recebidas. Tais
regras sao formalizadas em protocolos. No caso de siste-
mas distribufdos, em geral os servic;os sao especificados
por meio de interfaces, que costumam ser descritas em
uma lingua gem de defini~ao de interface (Interface
Definition Language - IDL).
Definic;6es de interfaces escritas em IDL quase sem-
pre capturam apenas a sintaxe de servic;os. Em outras
palavras, elas especificam com precisao os nomes das
func;6es que estao disponfveis, junto com os tipos dos
parametros, os valores de retorno, as possfveis excec;6es
que podem surgir e assim por diante. A parte diffcil e
especificar com precisao 0 que esses servic;os fazem, isto
e, a semantica das interfaces. Na pnitica, tais especifica-
c;6es sao sempre dadas de modo informal por meio de lin-
guagem natural.
Se adequadamente especificada, uma definic;ao de
interface permite que urn processo arbitrario que necessi-
ta de certa interface se comunique com urn outro proces-
so que fornece aquela interface. Pennite tambem que duas
partes independentes construam implementac;6es compl~-
tamente diferentes dessas interfaces, 0 que resulta em dOlS
sistemas distribufdos separados que funcionam exatamen-
te do mesmo modo.
Especificac;6es adequadas sao completas e neutras.
Completa significa que tudo que e necessario para uma
implementac;ao foi, de fato, especificado. Contudo,
muitas definic;6es de interface nao sao absolutamente
completas, portanto e necessario que urn desenvolvedor
adicione detalhes especfficos da implementac;ao. De
igual importancia e 0 fato de que especificac;6es nao
prescrevem como deve ser a aparencia da implementa-
c;ao; elas devem ser neutras. Completude e neutralidade
sao importantes para interoperabilidade e portabilidade
(Blair e Stefani, 1998).
Interoperabilidade caracteriza ate que ponto duas
implementac;6es de sistemas ou componentes de for.nece-
dores diferentes devem coexistir e trabalhar em conJunto,
com base na mera confianc;a mutua nos servic;os de cada
urn, especificados por urn padrao comum ..
Portabilidade caracteriza ate que ponto uma aplica-
c;ao desenvolvida para urn sistema distribufdo A pode ser
executada, sem modificac;ao, em urn sistema distribufdo
diferente B que implementa as mesmas interfaces que A.
Uma outra meta importante para urn sistema distri-
bufdo aberto e que deve ser facil configura-Io com base
em co~ponentes diferentes(possivelmente de desenvol-
vedores diferentes). Alem disso, deve ser facil adicionar
novos componentes ou substituir os existentes sem afetar
os que continuam no mesmo lugar. Em outras palavras,
urn sistema distribufdo aberto deve ser tambem extensf-
vel. Por exemplo, em urn sistema extensfvel, deve ser
relativamente facil adicionar partes que sao executadas
em urn sistema operacional diferente, ou ate mesmo subs-
tituir todo urn sistema de arquivo. Como muitos de nos
sabemos por experiencia propria, e mais facil falar do que
conseguir tal flexibilidade.
Separacao entre porrtica e mecanismo
Para conseguir flexibilidade em sistemas distribuf-
dos abertos, e crucial que 0 sistema seja organizado como
urn conjunto de componentes relativamente pequenos e
de facil substituic;ao ou adaptac;ao. Isso implica que deve-
mos fomecer definic;6es nao somente para as interfaces de
nfvel mais alto, isto e, as que sao vistas por usuarios e
aplicac;6es, mas tambem definic;6es para interfaces com
partes internas do sistema, alem de descrever como essas
partes interagem.
Essa abordagem e relativamente nova. Muitos siste-
mas mais antigos, ou mesmo alguns contemporaneos, sao
construfdos segundo uma abordagem monolftica na qual a
separac;ao dos componentes e apenas logica, embora eles
sejam implementados como urn unico e imenso programa.
Essa abordagem dificulta a substituic;ao ou adaptac;ao de
urn componente sem afetar todo 0 sistema. Portanto, siste-
mas monolfticos tendem a ser fechados em vez de abertos.
A necessidade de alterar urn sistema distribufdo e
quase sempre causada por urn componente que nao forne-
ce a polftica ideal para uma aplicac;ao ou usuario especf-
fico. Por exemplo, considere a cache na World Wide Web.
Em geral, os browsers permitem que os usuarios adaptem
sua polftica de cache especificando 0 tamanho da cache e
se a consistencia de urn documento em cache deve ser
verificada sempre ou se apenas uma vez por sessao.
Contudo, 0 usuario nao pode influenciar outros parame-
tros de cache, como 0 perfodo que urn documento pode
permanecer na cache, ou qual documento deve ser retira-
do quando a cache estiver cheia. Alem disso, e impossfvel
tomar decis6es de cache com base no conteudo de urn
documento. Urn usuario pode querer manter em cache
uma tabela de horarios de trens porque sabe que esses
horarios dificilmente mudam, mas nunca as informac;6es
sobre as condic;6es de trafego correntes nas rodovias.
Precisamos de uma separac;ao entre polftica e meca-
nismo. No caso de cache na Web, por exemplo, 0 ideal
seria que urn browser proporcionasse facilidades apenas
para armazenar documentos e, ao mesmo tempo, pennitis-
se aos usuarios decidir quais documentos teriam de ser
armazenados e por quanta tempo. Na pr<itica, isso pode ser
implementado pela oferta de urn rico conjunto de parame-
tros que 0 usuario pode estabelecer dinamicamente.
Ainda melhor e que urn usuario possa implementar
sua propria polftica sob a forma de urn componente que
possa ser conectado diretamente ao browser. Claro que
esse componente deve ter uma interface que 0 browser
possa entender, de modo que ele possa chamar procedi-
mentos dessa interface.
A conectividade mundial pela Internet esta rapida-
mente se tornando tao comum quanta poder enviar urn
cartao-postal para qualquer pessoa em qualquer lugar do
mundo. Com isso em mente, a escalabilidade e uma das
mais importantes metas de projeto para desenvolvedores
de sistemas distribuidos.
A escalabilidade de urn sistema pode ser medida
segundo, no minima, tres dimens6es diferentes (Neuman,
1994). Em primeiro lugar, urn sistema pode ser escahivel
em relac;ao a seu tamanho, 0 que significa que e facil adi-
cionar mais usuarios e recursos ao sistema. Em segundo
lugar, urn sistema escalavel em termos geograficos e urn
sistema no qual usuarios e recursos podem estar longe uns
dos outros. Em terceiro lugar, urn sistema pode ser esca-
lavel em termos administrativos, 0 que significa que ele
ainda pode ser facil de gerenciar, mesmo que abranja mui-
tas organizac;6es administrativas diferentes. Infelizmente,
urn sistema escalavel em uma ou mais dessas dimens6es
muitas vezes apresenta perda na capacidade de qesempe-
nho a medida que e ampliado.
Quando e necessario arnpliar urn sistema, e precise
resolver problemas de tipos muito diferentes. Em pri-
meiro lugar, vamos considerar a escalabilidade em rela-
c;ao ao tamanho. Se for precise suportar mais usuarios
ou recursos, freqiientemente deparamos com as limita-
c;6es de servic;os centralizados, dados e algoritmos (ver
Tabela 1.2). Por exemplo, muitos servic;os sac centrali-
zados no sentido de que sac implementados por meio de
apenas urn unico servidor que executa em uma maquina
especifica no sistema distribuido. 0 problema com esse
esquema e 6bvio: 0 servidor pode se transformar em urn
gargalo a medida que 0 numero de usuarios e aplicac;6es
cresce. Ainda que tenhamos capacidades de process a-
mento e armazenagem praticamente ilimitadas, a comu-
nicac;ao com aquele servidor acabara por impedir cresci-
mento ulterior.
Infelizmente, as vezes e inevitavel usar apenas urn
unico servidor. Imagine que temos urn servic;o para geren-
ciar informac;6es altamente confidenciais como hist6ricos
medicos, contas de bancos e assim por diante. Nesses
casos, talvez seja melhor implementar 0 servic;o por meio
de urn unico servidor localizado em uma sala separada, de
alta seguranc;a, e protegido em relac;ao as outras partes do
sistema distribuido por meio de componentes de rede
especiais. Copiar 0 servidor para divers as 10calizac;6es
para melhorar 0 desempenho pode estar fora de questao
porque isso tornaria 0 servic;o menos seguro.
Conceito Exemplo
Servi90s centralizados Um Ii.nico servidor para lodos os usuarios
Algoritmos centralizados Fazer roteamento com base em
informa90es com pietas
Tao ruins quanta servic;os centralizados sac dados
centralizados. Como nao perder de vista os numeros de
telefones e enderec;os de 50 milh6es de pessoas? Suponha
que cada registro de dados pudesse caber em 50 caracte-
res. Vma unica partic;ao de disco de 2,5 gigabytes propor-
cionaria armazenamento suficiente. Porem, mais uma vez,
nesse caso, ter urn unico banco de dados sem duvida satu-
raria todas as linhas de comunicac;ao que 0 acessam. Do
mesmo modo, imagine como a Internet funcionaria se seu
Sistema de Nomes de Dominio (Domain Name System-
DNS) ainda estivesse implementado como uma tabela
unica. 0 DNS mantem informac;6es de milh6es de compu-
tadores no mundo inteiro e forma urn servic;o essencial
para localizar servidores Web. Se cada requisic;ao para
resolver urn VRL tivesse de ser passada para aquele unico
servidor DNS, e claro que ninguem estaria usando a Web
- 0 que, por falar nisso, resolveria 0 problema.
Por fim, algoritmos centralizados tambem sac ma
ideia. Em urn sistema distribuido de grande porte, uma
quantidade enorrne de mensagens tern de ser roteada por
muitas linhas. De urn ponto de vista te6rico, urn born
modo de fazer isso e colher informac;6es completas sobre
a carga em todas as maquinas e linhas, e entao executar
urn algoritmo para computar todas as rotas 6timas. Em
seguida, essa informac;ao pode ser propagada por todo 0
sistema para melhorar 0 roteamento.
o problema e que colher e transportar todas as infor-
mac;6es de entrada e saida tambem seria ma ideia porque
essas mensagens sobrecarregariam parte da rede. Na ver-
dade, qualquer algoritmo que colha informac;6es de todos
os sites, envie-as a uma unica maquina para processamen-
to e entao distribua os resultados para todos os sites deve
ser, de maneira geral, evitado. Somente algoritmos des-
centralizados devem ser utilizados. Em geral, esses algo-
ritmos tern as seguintes caracteristicas, que os distinguem
dos algoritmos centralizados:
I. Nenhuma maquina tern informac;6es completas
sobre 0 estado do sistema.
2. As maquinastomam decis6es tendo como base
somente informac;6es locais.
3. A falha de uma maquina nao arruina 0 algoritmo.
4. Nao ha nenhuma premissa implicita quanta a
existencia de urn re16gio global.
As tres primeiras decorrem do que dissemos ate agora.
A ultima talvez seja menos 6bvia, mas tambem e importan-
te. Qualquer algoritmo que comece com "Precisamente as
12:00:00 todas as maquinas anotarao 0 tamanho de sua fila
de saida" falhara porque e impossivel conseguir a exata sin-
cronizac;ao de todos os rel6gios, fato que os algoritmos
devem levar em conta. Quanto maior.o sistema, maior a
incerteza. Talvez seja possivel conseguir a sincronizac;ao de
todos os re16gios com tolerancia de alguns microssegundos
em uma unica LAN, com consideravel esforc;o, mas fazer
isso em escala nacional ou internacional e complicado.
A escalabilidade geognifica tern seus pr6prios pro-
blemas. Vma das principais raz6es por que hoje e diffcil
ampliar sistemas distribufdos existentes que foram origi-
nalmente projetados para redes locais e que eles saG
baseados em cornunica~ao sincrona. Nessa forma de
omunica<;ao, uma parte que requisita urn servi<;o, em
geral denominada cliente, fica bloqueada ate que uma
mensagem seja enviada de volta. Essa abordagem costuma
funcionar bem em LANs nas quais a comunica<;ao entre
duas maquinas, na pior das hip6teses, demora, comumen-
te, algumas centenas de microssegundos. Todavia, em urn
i tema de longa distancia, precisamos levar em conta que
a comunica<;ao entre processos pode demorar centenas de
milissegundos, isto e, ela e tres ordens de grandeza mais
lenta. Construir aplica<;6es interativas usando comunica-
~o sfncrona em sistemas de longa distanciarequer muito
uidado, alem de muita paciencia.
Urn outro problema que atrapalha a escalabilidade
geografica e que a comunica<;ao em redes de longa distan-
ia e inerentemente nao confiavel e quase sempre ponto a
ponto. Por compara<;ao, redes locais em geral proporcio-
nam facilidades de comunica<;ao de alta confian<;a com
ase em broadcast, 0 que facilita muito 0 desenvolvimen-
'0 de sistemas distribufdos. Considere 0 problema de
ocalizar urn servi<;o. Em urn sistema de area local, urn
rocesso pode simplesmente enviar uma mensagem
broadcast a todas as maquinas, perguntando a cada uma
e esta executando 0 servi<;o de que ele necessita. Somen-
te as maquinas que tern aquele servi<;o respondem, cada
uma delas fornecendo seu endere<;o de rede na mensagem
de resposta. Tal esquema de localiza<;ao e inconcebfvel
em urn sistema de longa distancia: imagine s6 0 que acon-
teceria se tentassemos localizar urn servi<;o desse modo
na Internet. Em vez disso, e preciso projetar servi<;os
especiais de localiza<;ao, que talvez tenham alcance mun-
dial e sejam capazes de atender a bilh6es de usuarios.
Voltaremos a abordar esses servi<;os no Capftulo 5.
A escalabilidade geografica esta forte mente relacio-
nada com problemas de solu<;6es centralizadas que atra-
palham a escalabilidade de tamanho. Se tivermos urn sis-
tema com muitos componentes centralizados, e claro que
a escalabilidade geografica estara limitada pelos proble-
mas de desempenho e confiabilidade resultantes da comu-
nica<;ao a long a distancia. Alem disso, nessa circunstancia
os componentes centralizados resultarao em desperdfcio
de recursos de rede. Imagine que urn unico servidor de
correio seja usado por urn pafs inteiro. Isso significaria
que, quando voce enviasse urn e-mail aseuvizinho.pri-
meiro 0 e-mail teria de ir ate 0 servidor central de correio,
que poderia estar a qui16metros de distancia. Claro que
esse nao e 0 melhor caminho.
Por fim, uma questao diffcil e, em muitos casos, ainda
aberta e como ampliar urn sistema distribufdo por vanos
dominios administrativos independentes. Urn problema
irnportante que precisa ser resolvido e 0 de polfticas con-
flitantes em rela<;ao a utiliza<;ao - e pagamento - de re-
cursos, gerenciamento e seguran<;a.
Muitas vezes, por exemplo, os usuarios de urn unico
dominio podem confiar em componentes de urn sistema
distribufdo que residam dentro desse mesmo dominio. Em
tais casos, a administra<;ao do sistema deve ter testado e
certificado aplica<;6es e tornado providencias especiais
para garantir que os componentes nao sofram nenhuma
a<;aoindevida. Em essencia, os usuarios confiam em seus
administradores de sistema. Contudo, essa confian<;a nao
ultrapassa naturalmente as fronteiras do domfnio.
Se urn sistema distribufdo se expandir para urn outro
domfnio, e preciso tomar duas medidas de seguran<;a.
Antes, 0 sistema distribufdo tern de se proteger contra ata-
ques maliciosos do novo domfnio: os usuarios do novo
domfnio podem ter somente acesso de leitura ao sistema
de arquivos no novo dominio original. Da mesma forma,
facilidades como imagesetters CarOSou computadores de
alto desempenho podem nao estar disponfveis para usua-
rios estranhos. Em segundo lugar, 0 novo dominio tern de
se proteger contra ataques maliciosos do sistema distribuf-
do. Urn exemplo tfpico e 0 download de programas como
applets em browsers Web. Basicamente, 0 novo dominio
nao sabe que comportamento esperar de tal c6digo estra-
nho e, portanto, pode decidir impor lirnites severos aos
direitos de acesso para esse c6digo. 0 problema, como
veremos no Capftulo 9, e como impor essas limita<;6es.
Ap6s discutirmos alguns problemas de escalabilida-
de, surge a questao de como resolve-los de maneira geral.
Na maioria dos casos, problemas de escalabilidade em sis-
temas distribufdos aparecem como problemas de des em-
penho causados por capacidade limitada de servidores e
rede. Agora, ha basicamente apenas tres tecnicas para
ampliar sistemas: ocultar latencias de comunica<;ao, distri-
bui<;ao e replica<;ao [ver tambem Neuman (1994)].
Ocultar latencias de comunica<;ao e importante para
conseguir escalabilidade geografica. A ideia basica e sim-
ples: tentar evitar, 0 quanta possfvel, esperar por respos-
tas a requisi<;6es remotas - e potencialmente distantes -
de servi<;os. Vamos supor que urn servi<;o seja requisitado
em uma maquina remota. Uma alternativa a esperar por
uma resposta do servidor e executar outro trabalho Util no
lado do requisitante. Em essencia, isso significa construir
a aplica<;ao requisitante de modo tal que ela use s6 cornu-
nica~ao assincrona. Quando chega uma resposta, a apli-
ca<;aoe interrompida e urn manipulador especial e chama-
do para concluir a requisi<;ao emitida anteriormente.
A comunica<;ao asslncrona muitas vezes pode serusada
em sistemas de processamento de.lotes e em aplica<;6espara-
lelas, nos quais tarefas mais ou menos independentes podem
ser escalonadas para execu<;ao enquanto uma outra tarefa
esm esperando pela conclusao da comunica<;ao. Como alter-
nativa, pode-se iniciar urn novo thread de controle para exe-
cutar a requisi<;ao. Embora ele fique bloqueado it espera da
resposta, outros threads no processo podem continuar.
Colltudo, ha muitas aplica<;6es que nao podem fazer
uso efetivo da comunica<;ao assfncrona. Por exemplo, em
aplica<;6es interativas, quando urn usuano envia uma requi-
si<;ao, em geral ele nao ten! nada melhor a fazer do que
esperar pela resposta. Nesses casos, uma solu<;ao muito
melhor e reduzir a comunica<;ao global, passando parte da
computa<;ao que normalmente e executada no servidor para
o processo do cliente que esta requisitando 0 servi<;o.
Urn caso tfpico em que essa abordagem funciona e 0
acesso a bancos de dados por meio de formularios. 0
preenchimento de formularios pode ser feito com 0 envio
de uma mensagem separada para cada campo e a espera
por urn reconhecimento do servidor, como mostra a
Figura 1.2(a). 0 servidor pode verificar se ha enos de sin-
taxe antes de aceitar uma entrada.
Uma solu<;aomuito melhor e despachar para 0 clien-
te 0 c6digo para preencher 0 formulario e possivelmente
verificar as entradas, alem de fazer com que 0 cliente
devolvaurn formulario completo, como mostra a Figura
1.2(b). Essa abordagem de despacho de c6digo atualmen-
te e amplamente suportada pela Web sob a forma de
applets Java e Javascript.
Uma outra tecnica irnportante de amplia<;ao e a distri-
bui\;ao. A distribui<;ao envolve tomar urn componente, sub-
dividi-Io em partes menores e, na sequencia, espalhar essas
partes pelo sistema. Urn excelente exemplo de distribui<;ao
eo Sistema de Nomes de Dornfnio da Internet. 0 espa<;ode
nomes do DNS e organizado por hierarquia em uma arvo-
re de dominios, dividida em zonas sem sobreposi<;ao,
como mostra a Figura 1.3. Os nomes em cada zona saG
manipulados por urn linico servidor de nomes. Sem entrar
em muitos detalhes, podemos imaginar cada nome de
carninho como 0 nome de urn hospedeiro na Internet e, por
isso, associado a urn endere<;o de rede daquele hospedeiro.
Basicamente, resolver urn nome significa retornar 0
endere<;o de rede do hospedeiro associado. Considere, por
exemplo, 0 nome nl.vu.cs.flits. Para resolver esse nome, pri-
meiro ele e passado ao servidor de zona 21 (ver Figura 1.3),
Primeiro nome IMAARTEN I
Ultimo nome IVAN STEEN I
ISTEEN@CS.VU.NL I
[Q]
Verifique
formulario
Processe
formulario
IMAARTEN I
I ~
IVAN STEEN I •..
ISTEEN@CS.VU.NL I
[Q] .•...
'1f
, ••, \
Venflque
formulario
Processe
formulario
reloma 0 enderec;o do servidor para a zona Z2, para a
o resto do nome, vu.cs.flits, pode ser entregue. 0 servi-
tJaIa Z2 retomara 0 enderec;o do servidor para a zona Z3,
e paz de manipular a ultima parte do nome e retoma-
enderec;o do hospedeiro associado.
E e exemplo ilustra como 0 servi({o de nomea({iio
= ecido pelo DNS e distribufdo por varias maquinas,
_ 'rando, desse modo, que urn unico servidor tenha de
om todas as requisic;6es de resoluc;ao de nomes.
Como outro exemplo, considere a World Wide Web.
a maioria dos usuarios, a Web parece ser urn enorme
~ma de informac;6es baseado em documentos, no qual
documento tern seu pr6prio nome exclusivo sob a
.: a de urn URL. Em termos de conceito, pode ate pare-
__• que ha apenas um unico servidor. Entretanto, a Web e
- ' amente distribufda por urn grande numero de servido-
~-. e cad a urn deles manuseia certa quantidade de docu-
mo da Web. 0 nome do servidor que manuseia urn
umento esta codificado no URL do documento.
- mente grac;as a essa distribuic;ao de documentos e que
: i po sivel aumentar a Web ate seu tamanho atual.
Considerando que problemas de escalabilidade fre-
- memente aparecem sob a forma de degradac;ao do
mpenho, em geral e uma boa ideia replicar componen-
por urn sistema distribuido. A replicac;ao nao somente
3llIIlenta a disponibilidade, mas tambem ajuda a equilibrar a
carga entre componentes, 0 que resulta em melhor desem-
penho. AIem disso, em sistemas de ampla dispersao geogra-
-ca ter uma c6pia por perto pode ocultar grande parte dos
roblemas de latencia de comunicac;ao ja mencionados.
Cache e uma forma especial de replicac;ao, embora
muitas vezes a distinc;ao entre as duas seja diffcil de com-
reender ou ate mesmo artificial. Como no caso da repli-
,ao, a cache resulta em fazer uma c6pia de urn recurso,
em geral na proximidade do aces so do cliente aquele
recurso. Entretanto, ao contrario da replicac;ao, a cache e
uma decisao tomada pelo cliente de um recurso, e nao por
eu proprietario. Alem disso, a cache acontece sob de-
manda, ao passo que a replicac;ao costuma ser planejada
amecipadamente.
Tanto a cache quanta a replicac;ao tern uma seria des-
\'antagem que pode causar efeitos adversos na escalabili-
dade. Como nessa circunstancia temos varias c6pias de
urn recurso, se uma del as for modificada, ficara diferente
das outras. Por conseqiiencia, cache e replicac;ao resultam
em problemas de consistencia.
Ate que ponto as inconsistencias podem ser toleradas
depende em grande palte da utilizac;ao de urn recurso.
:YIuitosusuanos da Web acham aceitavel que seus browsers
retomem urn documento em cache cuja validade nao tenha
ido verificada nos ultirnos minutos passados. Contudo, tam-
bem ha muitos casos em que e preciso cumprir fortes garan-
tias de consistencia, tal como no caso de bolsas de valores e
leil6es eletr6nicos. 0 problema com a forte consistencia e
que uma atualizac;ao deve ser imediatamente propagada para
todas as outras c6pias. Alem do mais, se duas atualizac;6es
ocorrerem ao mesmo tempo, freqiientemente tambem e exi-
gida a atualizac;ao de cada c6pia na mesma ordem.
Situac;6es como essa em geral requerem algum meca-
nismo de sincronizac;ao global. Infelizmente, e extrema-
mente diffcil ou ate impossivel implementar esses meca-
nismos de modo escalavel porque as leis da fisica insistem
em que os f6tons e os sinais eletricos obedec;am a um limi-
te de velocidade de 3 X 108 m/s (a velocidade da luz). Por
conseqiiencia, ampliar urn sistema por replicac;ao pode
introduzir outras soluc;6es inerentemente nao escalaveis.
Voltaremos a replicac;ao e a consistencia no Capitulo 7.
Ao considerarmos essas tecnicas de ampliac;ao de
escala de urn sistema, poderiamos argumentar que a esca-
labilidade de tamanho e a menos problematica do ponto
de vista tecnico. Em muitos casos, 0 simples aumento da
capacidade de uma maquina resolvera a questao, ao
menos temporariamente, e talvez a custos significativos.
A escalabilidade geografica e um problema muito mais
diffcil, porque e a Mae Natureza que esta atrapalhando.
~inda assim, a pratica mostra que combinar tecnicas de
distribuic;ao, replicac;ao e cache com diferentes formas de
consistencia costuma ser suficiente em muitos casos.
Por fim, escalabilidade administrativa parece ser a
mais diffcil, em parte porque tambem precisamos resolver
problemas que nao sao tecnicos (como polfticas de organi-
zac;6es e colaborac;ao humana). Nao obstante, houve pro-
gresso nessa area simplesmente ignorando dominios
administrativos. A introduc;ao, e agora a utilizac;ao, disse-
minada de tecnologia peer-to-peer demonstra 0 que pode
ser conseguido se os usuanos finais sirnplesmente toma-
rem 0 controle (Aberer e Hauswirth, 2005; Lua et aI.,
2005; Oram, 2001). Contudo, vamos deixar claro que, na
melhor das hip6teses, a tecnologia peer-to-peer pode ser
apenas uma soluc;ao parcial para a escalabilidade adminis-
trativa. Mas, em algum momento, teremos de tratar dela.
Agora ja deve estar claro que desenvolver sistemas
distribuidos pode ser uma tarefa dificflima. Como vere-
mos muitas vezes em todo este livro, ha tantas quest6es a
considerar ao mesmo tempo que parece poder ser apenas
a complexidade 0 unico resultado. Mesmo assim, seguin-
do alguns princfpios de projeto, podem-se desenvolver
sistemas distribuidos que cumpram a risca as metas que
estabelecemos neste capitulo. Muitos princfpios seguem
as regras basicas da engenharia decente de software e nao
serao repetidos aqui.
Contudo, sistemas distribuidos sao diferentes do
software tradicional porque os componentes estao disper-
sos por uma rede. Nao levaf" essa dispersao em conta
durante 0 projeto e 0 que toma tantos sistemas desneces-
sariamente complexos e resulta em erros que precisam ser
consertados mais tarde. Peter Deutsch, que, na epoca, tra-
balhava na Sun Microsystems, formulou esses erros como
as seguintes premissas falsas que todos ado tam ao desen-
volver uma aplica~ao distribufda pela primeira vez:
1. A rede e confiavel.
2. A rede e segura.
3. A rede e homogenea.
4. A topologia nao muda.
5. A latencia e zero.
6. A largura de banda e infinita.
7. 0 custo de transporte e zero.
B. Ha so urn administrador.
Observe como essas premissas se referem a proprie-
dades exclusivas de sistemas distribufdos: confiabilidade,
seguran~a, heterogeneidade e topologia da rede; latencia
e largura de banda; custos de transporte e,por fim, domf-
nios administrativos. No desenvolvimento de aplica~6es
nao distribufdas, e provavel que a maioria dessas quest6esnem apare~a.
A maior parte dos princfpios que discutimos neste
livro esta imediatamente relacionada a essas premissas.
Em todos os casos, discutiremos solu~6es para problemas
causados pelo fato de uma ou mais premissas serem fal-
sas. Por exemplo, redes confiaveis simples mente nao
.existem, 0 que leva a impossibilidade de conseguir trans-
parencia a falha. Dedicaremos urn capftulo inteiro para
tratar do fato de que a comunica~ao por rede e inerente-
mente insegura. Ja discutimos que sistemas distribufdos
precisam levar em conta a heterogeneidade. Na mesma
toada, quando discutimos replica~ao para resolver proble-
mas de escalabilidade, estamos, em essencia, atacando
problemas de latencia e largura de banda. Tambem abor-
daremos quest6es de gerenciamento em varios pontos
desta obra, tratando das falsas premissas do transporte a
custo zero e de urn unico domfnio administrativo.
1.3 Tipos de Sistemas OistribuTdos
Antes de come~armos a discutir os princfpios de sis-
temas distribufdos, vamos examinar com maior aten~ao
os varios tipos de sistemas distribufdos. A seguir faremos
a distin~ao entre sistemas de computa~ao distribufdos,
sistemas de informa~ao distribufdos e sistemas embuti-
dos distribufdos.
1.3.1 Sistemas de computacao distribuTdos
Uma classe importante de sistemas distribufdos e a
utilizada para tarefas de computa~ao de alto desempenho.
Em termos estritos, podemos fazer uma distin~ao entre
dois subgrupos. Na computal;ao de cluster, 0 hardware
subjacente consiste em urn conjunto de esta~6es de traba-
lho ou PCs semelhantes, conectados por meio de uma
rede local de aHa velocidade. Alem disso, cada no execu-
ta 0 mesmo sistema operacional.
A situa~ao fica bem diferente no caso da computa-
l;ao em grade. Esse subgrupo consiste em sistemas distri-
bufdos que costumam ser montados como federa~ao de
computadores, na qual cada sistema pode cair sob urn
domfnio administrativo diferente, e pode ser muito dife-
rente no que tange a hardware, software e tecnologia de
rede empregada.
Sistemas de computacao de cluster
Sistemas decomputa~ao de cluster tornaram-se
populares quando a razao pre~o/desempenho de computa-
dores pessoais e esta~oes de trabalho melhorou. A certa
altura ficou atraente, em termos financeiros e tecnicos,
construir urn supercomputador que usasse tecnologia de
prateleira simplesmente conectando uma serie de compu-
tadores relativamente simples a uma rede de aHa velocida-
de. Em quase todos os casos, a computa~ao de cluster e
usada para programa~ao paralela na qual urn unico progra-
ma, intensivo em computa~ao, e executado em paralelo em
varias maquinas.
Urn exemplo bem conhecido de urn computador de
cluster e formado pelos clusters Beowulf baseados em
Linux, cuja configura~ao geral e mostrada na Figura 1.4.
Cada cluster consiste em urn conjunto de nos de compu-
ta~ao controlados e acessados por meio de urn unico no
mestre. As tarefas tfpicas do mestre sao manipular a alo-
ca~ao de nos a urn determinado programa paralelo, man-
ter uma fila de jobs apresentados e proporcionar uma
Aplicac;:ao de
gerenciamento
Componente
da
aplicac;:ao
paralela
Componente
da
aplicac;:ao
paralela
Componente
da
aplicac;:ao .
paralela
Rede de
acesso remoto
- - -e para as usuarios do sistema. Assim, na verdade,
executa a middleware necessaria para a execu-
rogramas e a gerenciamento do cluster, ao passo
os nos de computa~3oo, muitas vezes basta um
operacional padr300e nada mais.
L IDa parte importante desse middleware e formada
- - bibliotecas para execu~3oode programas paralelos.
discutiremos no Capitulo 4, na realidade, muitas des-
liotecas fomecem somente facilidades avan~adas de
-calf3.opor mensagem, mas n300SaGcapazes de mani-
seguran~a, processos com falhas e assim par diante.
Como altemativa para essa organiza~3oo hierarquica,
ma Mosix adota uma abordagem simetrica (Amar
__ 004). Esse sistema tenta prover uma imagem de
~:teInaUnico de urn cluster, a que significa que, para um
0, urn computadar de cluster oferece a transparen-
~ di tribui~3oodefinitiva porque parece ser um tinico
~mador. Como ja mencionamos, e impossivel propar-
£a1 irnagem sob todas as circunstancias. No caso do
_~ six .. 0 alto grau de transparencia e conseguido com a
p=:CIl15- ;S3oOde uma forma din arnica e preventiva de migra-
"- de processos entre os nos que comp6em 0 cluster.
A migray300de processos permite que urn usumo ini-
~ rrma aplica~ao em qualquer no (denominado no nativo),
~ -- 0 que ele pode se mover transparentemente para outros
- a fun de, par exemplo, fazer usa eficiente de recursos.
mas a migra~ao de processos no Capitulo 3.
as de computa~ao em grade
Urn aspecto caracterfstico da computa~ao de cluster
_ _ bomogeneidade. Na maioria dos casos, os computa-
- '- que comp6em urn cluster s3oo,em grande parte, as
-esmos, todos tern a mesmo sistema operacional e todos
_ -0 onectados a mesma rede. Par compara~3oo, sistemas
~ omputac:;ao em grade tern alto grau de heterogeneida-
c:~: nenhuma premissa e adotada em rela~ao a hardware,
-.-=-Dmasoperacionais, redes, dominios administrativos,
- liricas de seguran~a e assim par diante.
Uma questao fundamental em urn sistema de compu-
~~o em grade e que recursos de diferentes organiza~6es
-" reunidos para permitir a colabara~3oo de urn grupo de
?S oas au institui~6es. Tal colabora~3oo e realizada sob a
:orma de uma organiza~ao virtual. As pessoas que per-
ten cern a mesma organiza~3oovirtual tern direitos de aces-
so aos recurs as fomecidos par aquela organiza~ao. Entre
os recursos tipicos estao servidares de computa~ao (entre
eles supercomputadores, possivelmente implementados
como computadores de cluster), facilidades de armazena-
menta e bancos de dados. Alem disso, tambem podem ser
oferecidos equipamentos especiais em rede, como teles-
capias, sensores e outros.
Dada a sua natureza, grande parte do software para
realizar computa~3oo em grade e desenvolvida com a fina-
lidade de prover aces so a recursos de diferentes dominios
administrativos, e somente para usuarios e aplica~5es que
perten~am a uma organiza~3oo virtual especffica. Par essa
raz3oo,a foco costuma ser dirigido as quest5es de arquite-
tura. Uma arquitetura proposta par Foster et al. (2001) e
mostrada na Figura 1.5.
A arquitetura consiste em quatro camadas. A mais
baixa, denominada camada-base, prove interfaces para
recursos locais em urn site especffico. Observe que essas
interfaces S300projetadas para permitir compartilhamento
de recurs as dentro de uma arganiza~ao virtual. A tarefa
tipica dessas interfaces e prover fun~5es para consultar 0
estado e as capacidades de urn recurso, em conjunto com
fun~5es para 0 gerenciamento de recursos propriamente
dito. Par exemplo: travar recursos.
A camada de conectividade consiste em protocolos de
comunica~3oopara suportar transa~5es da grade que abran-
jam a utiliza~3oode mtiltiplos recursos. Par exemplo, S300
necessmos protocolos para transferir dados entre recursos,
au para a simples acesso de urn recurso desde uma locali-
za~3ooremota. Alem disso, a camada de conectividade con-
tera protocolos de seguran~a para autenticar usumos e
recursos. Observe que, em muitos casas, usumos humanos
n300sao autenticados; em vez disso, S300autenticados pro-
gramas que agem em nome dos usumos. Nesse sentido,
delegar direitos de urn usumo a programas e uma fun~3oo
importante que precisa ser suportada na camada de conec-
tividade. Daremos mais detalhes sabre a delega~3ooquando
discutirmos seguran~a em sistemas distribuidos.
A camada de recursos e responsavel pelo gerenciamen-
to de urn tinico recurso. Ela utiliza as fun~5es fomecidas pela
camada de conectividade e chama diretamente as interfaces
disponibilizadas pela camada-base. Par exemplo, essa cama-
Aplicac;:6es-J-
da ofereceni funr;oes para obter informar;oes de configurar;ao
sobre urn recursoespecffico ou, em geral, para realizar ope-
rar;oes especfficas como criar urn processo ou ler dados.
Portanto, a camada de recurs os e considerada responsavel
pelo controle de acesso e, por isso, dependera da autentica-
r;ao realizada como parte da camada de conectividade.
A camada seguinte na hierarquia e a camada coleti-
va. Ela trata de manipular 0 acesso a multiplos recursos e
normalmente consiste em servir;os para descoberta de
recursos, alocar;ao e escalonamento de tarefas para multi-
pIos recursos, replicar;ao de dados e assim por diante.
Diferentemente das camadas de conectividade e de recur-
sos, que consistem em urn conjunto padronizado e relati-
vamente pequeno de protocol os, a camada coletiva pode
consistir em muitos protocolos diferentes para muitas
finalidades diferentes, que reflitam 0 amplo' espectro de
servir;os que ela pode oferecer a uma organizar;ao virtual.
Por fim, a camada de aplica~iio consiste em aplica-
r;oes que funcionam dentro de uma organizar;ao virtual e
que fazem uso do ambiente de computar;ao em grade.
Normalmente, as camadas coletiva, de conectividade
e de recursos formam 0 cerne daquiloque poderia ser
denorninado camada de middleware em grade. Em conjun-
to, essas camadas dao aces so e gerenciam recursos que
estao potencialmente dispersos por vanos sites. Vma
observar;ao importante da perspectiva do rniddleware e
que, com a computar;ao em grade, a nor;ao de urn site (ou
unidade administrativa) e comum. Essa prevalencia e enfa-
tizada pela tendencia gradual a migrar;ao para uma arqui-
tetura orientada a servi"os na qual sites oferer;am aces-
so as vacias camadas por meio de urn conjunto de servir;os
Web (Joseph et aI., 2004).
A essa altura, isso nos levou a definir;ao de uma arqui-
tetura alternativa conhecida como arquitetura de servi"os
de grade aberta (Open Grid Services Architecture -
OGSA). Essa arquitetura consiste em varias camadas e
muitos componentes, 0 que a torna bastante complexa. A
complexidade parece ser 0 destino de qualquerprocesso de
padronizar;ao. Detalhes sobre a OGSA podem ser encon-
trados em Foster et al. (2005).
1.3.2 Sistem~sde inform~c~odistribuldos
Vma outra classe importante de sistemas distribui-
dos e encontrada em organizar;oes que se defrontaram
com uma profusao de aplicar;oes em rede para as quais a
interoperabilidade se mostrou uma experiencia dolorosa.
Muitas das solur;oes de rniddleware existentessao resul-
tado do trabalho com uma infra-estrutura na qual era mais
facil integrar aplicar;oes a urn sistema de informar;oes de
ambito empresarial (Bernstein, 1996; Alonso et aI., 2004).
Podemos distinguir vanos niveis nos quais ocorreu a
integrar;ao. Em muitos casos, uma aplicar;ao em rede con-
sistia simples mente em urn servidor que executava aquela
aplicar;ao, freqtientemente incluindo urn banco de dados, e
a disponibilizava para programas remotos, denorninados
clientes. Esses clientes podiam enviar uma requisir;ao ao
servidor para executar uma operar;ao especffica e depois
receber uma resposta que era devolvida. Integrar;ao no
nivel mais baixo perrnitiria que clientes empacotassem
vanas requisir;oes, possivelmente para diferentes servido-
res, em uma unica requisir;ao maior, e as enviassem para
execur;ao como uma transa"ao distribuida. A ideia funda-
mental era que todas as - ou nenhuma das - requisir;oes
seriam executadas.
A medida que as aplicar;oes se tornavam mais sofistica-
das e eram gradualmente separadas em componentes inde-
pendentes, notavelmente distinguindo componentes de
banco de dados de componentes de processamento, ficou
claro que a integrar;ao tambem deveria ocorrer de modo que
perrnitisse as aplicar;oes se comunicar diretamente urnas
com as outras. Isso resultou, atualmente, em uma enorme
industria dedicada a integra"ao de aplica"oes empresariais
(Enterprise Application Integration - EAI). A seguir,
abordaremos essas duas formas de sistemas distribuidos.
Para deixar nossa discussao mais clara, vamos nos
concentrar em aplicar;oes de banco de dados. Na pratica,
operar;oes em urn banco de dados costumam ser realizadas
sob a forma de transa"oes. Programar a utilizar;ao de tran-
sar;oes requer prirnitivas especiais que devem ser forneci-
das pelo sistema distribuido subjacente ou pelo sistema de
linguagem em tempo de execur;ao. Exemplos tipicos de
primitivas de transar;ao saG mostrados na Tabela 1.3.
A lista exata de prirnitivas depende dos tipos de obje-
tos que estao sendo usados na transar;ao (Gray e Reuter,
1993). Em urn sistema de correio, poderia haver primitivas
para enviar, receber e repassar correio. Em urn sistema de
contabilidade, elas poderiam ser bastante diferentes.
Entretanto, READ e WRITE saG exemplos tipicos. Decla-
rar;oes ordinarias, chamadas de procedimento e assim par
diante, tambem saG perrnitidas dentro de uma transar;ao.
Em particular, mencionamos que chamadas a procedimen-
tos remotos (Remote Procedure Calls - RPCs), isto e,
chamadas de procedimento em servidores remotos, tam-
bem costumam ser encapsuladas em uma transar;ao, 0 que
resulta no que e conhecido como RPC transacional.
Discutiremos RPCs rninuciosamente no Capitulo 4.
Primitiva Descri~ao
BEGIN_TRANSACTION Marque 0 infcio de uma transa930
END_TRANSACTION Termine a transa930 e tente
compromete-Ia
ABORT_TRANSACTION Elimine a transa930 e restaure
os valores antigos
READ Leia dados de um arquivo, tabela
ou de outra forma
WRITE Escreva dados para um arquivo,
tabela ou de outra forma
BEGIN_TRANSACTION e END_TRANSACTION
- usadas para delimitar 0 escopo de uma transa<;ao. As
<;6esentre elas formam 0 corpo da transa<;ao. 0 aspec-
caracteristico de uma transa<;ao e que todas essas opera-
sao executadas ou nenhuma e executada. Elas podem
:cr procedimentos de biblioteca, chamadas de sistema ou
-l lara<;6esentre parenteses em uma linguagem, dependen-
do cia implementa<;ao.
Essa propriedade tudo-ou-nada das transa<;6es e uma
quatro propriedades caracteristicas que elas tern. Mais
especificamente, transa<;6es sao:
1. Atomicas: para 0 mundo exterior, a transa<;ao acon-
tece como se fosse indivisivel.
2. Consistentes: a transa<;ao nao viola invariantes de
sistema.
3. Isoladas: transa<;6es concorrentes hao interferem
umas com as outras.
4. Duniveis: uma vez comprometida uma transa<;ao,
as altera<;6es sao permanentes.
Essas propriedades costumam ser citadas por suas
letras iniciais: ACID.
A primeira propriedade fundamental exibida par
rodas as transa<;6es e que elas sao atOmicas. Essa proprie-
dade garante que cada transa<;ao aconte<;a completamen-
re, ou nao aconte<;a; e, se acontecer, sera como uma unica
a<;ao indivisivel e instantfmea. Enquanto uma transa<;ao
esta em progresso, outros processos, estejam ou nao en-
volvidos em transa<;6es, nao podem ver nenhum dos esta-
dos intermediarios.
A segunda propriedade afirma que elas sao consis-
tentes. Isso quer dizer que, se 0 sistema tiver certos inva-
riantes que devem valer sempre, se eles forem validos
antes da transa<;ao, tambem 0 serao ap6s a transa<;ao. Par
exemplo, em urn sistema bancario, urn invariante funda-
mental e a lei da conserva<;ao do dinheiro. Ap6s toda
transferencia interna, a quantidade de dinheiro no banco
tern de ser a mesma que era antes da transferencia; contu-
do, por urn breve instante durante a transa<;ao, esse inva-
riante pode ser violado. Todavia, a viola<;ao nao e visivel
fora da transa<;ao.
A terceira propriedade diz que as transa<;6es sao iso-
ladas ou serializaveis. Isso significa que, se duas ou mais
transa<;6es sao executadas ao mesmo tempo, 0 resultado
final para cada uma del as e para outros processos se apre-
sentara como se todas as transa<;6es fossem executadas
em sequencia em certa ordem, dependente do sistema.
A quarta propriedade diz que as transa<;6es sao
duraveis. Refere-se ao fato de que, nao importa 0 que
aconte<;a, uma vez comprometida umatransa<;ao, ela con-
tinua, e os resultados tornam-se permanentes. Nenhuma
falha ap6s 0 comprometimento pode desfazer os resulta-
dos ou provocar sua perda.
A durabilidade sera discutida minuciosamente no
Capitulo 8.
Ate aqui, transa<;6es foram definidas em urn unico
banco de dados. Uma tranSal;aO aninhada e construida
com base em uma quantidade de subtransa<;6es, como
mostra a Figura 1.6. A transa<;ao do nivel mais alto pode
se ramificar e gerar 'filhos' que executam em paralelo uns
aos outros em maquinas diferentes para obter ganho de
desempenho ou simplificar a programa<;ao. Cada urn des-
ses filhos tambem pode executar uma ou mais subtransa-
<;6esou se ramificar e gerar seus pr6prios filhos.
Subtransa9aO I Subtransa9ao I
U U·
Bancos de d~dos da\ ( Bancos de dados do hotel
companhla aerea . \
Dois bancos de dados diferentes (independentes)
SUbtransa<;6esdao origem a urn problema sutil, porem
importante. Imagine que uma transa<;ao inicia varias sub-
transa<;6es em paralelo e uma delas se compromete, tornan-
do seus resultados visiveis a transa<;ao-pai. Ap6s mais com-
puta<;ao, a transa<;ao-pai e abortada, restaurando todo 0 sis-
tema ao estado em que estava antes que a transa<;ao do
nivel mais alto come<;asse. Por consequencia, os resultados
da subtransa<;ao que se comprometeu devem ser anulados.
Portanto, a permanencia que citamos anteriormente se apli-
ca somente as transa<;6es do nivel mais alto.
Visto que transa<;6es podem ser aninhadas ate uma
profundidade arbitraria, e preciso consideravel adminis-
tra<;aopara conseguir que tudo esteja correto. No entanto,
a semantica e clara. Quando qualquer transa<;ao ou sub-
transa<;ao come<;a, ela recebe, em termos conceituais, uma
c6pia privada de todos os dados presentes no sistema
inteiro, a qual pode manipular como desejar. Se ela abor-
tar, seu universo privado desaparece como se nunca tives-
se existido. Se ela se comprometer, seu universo privado
substitui 0 universo do pai. Assim, se uma subtransa<;ao
estiver comprometida e mais tarde for iniciada uma nova
sUbtransa<;ao, a segunda ve os resultados produzidos pela
primeira. Da mesma farma, se uma transa<;ao do nivel
mais alto abortar, todas as suas subtransa<;6es subjacentes
tambem tern de ser abortadas.
Transa<;6es aninhadas sao importantes em sistemas
distribuidos porque proporcionam urn modo natural de
distribuir uma transa<;ao por varias maquinas. Elas
seguem uma divisao 16gica do trabalho da transa<;ao ori-
ginal. Par exemplo, uma trans.a<;ao para 0 planejamento
de uma viagem pela qual e preciso reservar tres voos pode
ser subdividida logicamente em ate tres subtransa<;6es.
Cada uma dessas subtransa<;6es pode ser gerenciada em
separado e independentemente das outras duas.
Quando os sistemas de middleware empresarial co-
me9aram, 0 componente que manipulava transa90es dis-
tribuidas, ou aninhadas, formava 0 nueleo para a integra-
9ao de aplica90es no nivel do servidor ou do banco de
dados. Esse componente era denominado monitor de
processamento de transa~ao, ou, de forma abreviada,
monitor TP. Sua principal tarefa era permitir que uma
aplica9ao acessasse varios servidoresfbancos de dados
oferecendo a ela urn modelo de programa9ao transacio-
nal, como mostra a Figura 1.7.
Como ja mencionamos, quanta mais as aplica90es se
desvinculavam dos bancos de dados sobre os quais eram
construidas, mais evidente ficava que eram necessarias
facilidades para integrar aplica90es indepenqentemente
de seus bancos de dados. Em particular, componentes de
aplica9ao deveriam poder se comunicar diretamente uns
com os outros, e nao apenas par meio do comportamento
de requisi9ao/resposta que era suportado por sistemas de
processamento de transa90es.
Essa necessidade de comunica9ao entre aplica90es
resultou em muitos modelos diferentes de comunica9ao
que seriio discutidos minuciosamente neste livro - por
essa razao, por enquanto faremos aqui apenas uma breve
descri9ao. A principal ideia era que aplica90es existentes
pudessem trocar informa90es diretamente, como mostra
a Figura 1.8.
Aplicagao
c1iente
Existem varios tipos de middleware de comunica-
9ao. Com chamadas de procedimento remoto (Remote
Procedure Calls - RPC), urn componente de aplica9ao
pode efetivamente enviar uma requisi9ao a urn outro com-
ponente de aplica9ao executando uma chamada de proce-
dimento local, que resulta no empacotamento da requisi-
9ao como uma mensagem e em seu envio ao chamador.
Da mesma forma, 0 resultado sera enviado de volta e
devol vido a aplica9ao como 0 resultado da chamada de
procedimento.
A medida que a popularidade da tecnologia de obje-
to aumentava, foram desenvolvidas tecnicas que permitis-
sem chamadas a objetos remotos, 0 que resultou naquilo
que denominamos invoca~oes de metodo remoto
(Remote Method Invocations - RMI). Vma RMI e, em
essencia, 0 mesmo que uma RPC, exceto que fun cion a
com objetos em vez de com aplica90es.
A desvantagem da RPC e da RMI e que ambos, 0
chamador e 0 chamado, precisam estar ligados e em fun-
cionamento no momenta da comunica9ao. Alem disso,
eles precis am saber exatamente como se referir urn ao
outro. Esse forte acoplamento muitas vezes e percebido
como uma seria desvantagem e resultou no que conhece-
mos como middleware orientado a mensagem ou, sim-
plesmente, MOM (Message-oriented Middleware).
Nesse caso, as aplica90es apenas enviam mensagens a
pontos 16gicos de contato, que frequentemente sao descri-
tos por meio de urn sujeito. Da mesma forma, as aplica-
Aplicagao
c1iente
Aplicagao
cliente
Aplicagao
dolado
servidor
Aplicagao
dolado
servidor
Aplicagao
dolado
servidor
_- . podem indicar seu interesse por urn tipo especifico
nsagem, apos 0 que 0 middleware de comunica<;ao
, para que todas as mensagens sejam entregues a
- - aplicac;:6es. Esses sistemas, denominados publi-
subscrever, formam uma classe impOltante e em
ao de sistemas distribuidos. Nos os discutiremos
iosamente no Capitulo 13.
Sistemas distribuTdos pervasivos
o sistemas distribuidos que discutimos ate aqui sao,
grande parte, caracterizados por sua estabilidade: os
- _·-0 fixos e tern uma conexao mais ou menos perma-
~ e de aHa qualidade com uma rede. Ate certo ponto,
-- e tabilidade tern sido conseguida por meio de varias
- • <lS que sao discutidas neste livro e que visam a obter
-parencia de distribuic;:ao. Urn exemplo: a profusao de
• <lS para mascarar falhas e recuperac;:ao dani a
i::;;;;tm~ss;aode que as coisas podem dar errado apenas rara-
e. Da mesma maneira, conseguimos ocultar aspectos
_ cionados com a real localizac;:ao de urn no na rede, 0
__-z perrnite, efetivamente, que usuarios e aplicac;:6es acre-
- ~m que os nos continuam onde estao.
Contudo, a questao ficou muito diferente com a intro-
- .·0 de dispositivos de computac;:ao moveis e embutidos.
-~ente encontramos sistemas distribuidos nos quais a
-0 ilidade e 0 comportamento esperado. Nesses siste-
- que denominamos sistemas distribuidos pervasi-
o equipamentos costumam ser caracterizados por seu
- • enD tamanho, pela alimentac;:ao par bateria, por sua
ilidade e por terem somente uma conexao sem fio, se
que nem todas essas caracteristicas se aplicam a todos
. . positivos. Alem do mais, tais caracterfsticas nao pre-
er necessariamente interpretadas como restritivas,
o e ilustrado pelas possibilidades dos modernos smart
ne (Roussos et aI., 2005).
Como seu nome sugere, urn sistema distribuido per-
~-n·o e parte de nosso entorno; por isso, e, em geral, ine-
~ mente distribuido. Urn aspecto importante e a ausen-
_ . geral de controle administrativo humano. Na melhor
~ bipoteses, os dispositivos podem ser configurados por
proprietarios; porem, quanta ao mais, eles precis am
.: - obrir automaticamente seu ambiente e 'se encaixar' 0
-=lhor que puderem. Grimm et al. (2004) tornaram esse
=- aixar' mais exato pela formulac;:ao dos tres

Outros materiais