1055
George Coulouris Jean Dollimore Tim Kindberg Gordon Blair SISTEMAS DISTRIBUÍDOS Conceitos e Projeto 5ª Edição

240176772-Sistemas-Distribuidos-Conceitos-e-Projeto.pdf

Embed Size (px)

Citation preview

  • CYANVS Grfica VS Grfica

    MAGVS GrficaYEL

    VS GrficaBLACK

    George CoulourisJean Dollimore

    Tim KindbergGordon Blair

    SISTEMAS DISTRIBUDOSConceitos e Projeto5 Edio

    A Internet e a Web no param de crescer e tm impacto cada vez maior em diversos aspectos da nossa sociedade, in uenciando reas de aplicao to diversas quanto nanas, comrcio, artes e entretenimento, e o surgimento da sociedade da informao de modo geral. Do ponto de vista do desenvolvimento de sistemas distribudos, que interligam computadores e outros dispositivos, esse crescimento impe novas demandas em termos de arquitetura, algoritmos, requisitos de projeto, variedade de aplicaes e de cargas de trabalho. A 5 edio deste best-seller continua a ser uma fonte de conhecimento abrangente sobre os princpios e a prtica de sistemas distribudos, com estudos de caso modernos que ilustram seu projeto e desenvolvimento e exerccios ao nal de cada captulo que ajudam a xar o contedo abordado.

    Destaques da 5 edio: Novos captulos: comunicao indireta, objetos e componentes distribudos e projeto de

    sistemas distribudos Novos tpicos: computao em nuvem, virtualizao de rede e de sistemas operacionais,

    sistemas peer-to-peer no estruturados, espaos de tupla, baixo acoplamento em servios Web e computao mvel e ubqua

    Novos estudos de caso: JavaSpaces, JMS, WebSphere, Messa Queues, Entreprise JavaBeans, Skype, Gnutella, TOTA, L2imbo, BitTorrent, End System Multicast, infraestrutura Google.

    Neste livro, os estudantes de engenharia e de cincia da computao encontraro os conhecimentos necessrios para desenvolver projetos de sistemas de aplicaes distribudas. Leitura valiosa tambm para engenheiros de software e projetistas de sistemas que queiram entender os novos e futuros desenvolvimentos nessa rea.

    SISTEMAS DISTRIBUDOSConceitos e Projeto5 Edio George Coulouris

    Jean DollimoreTim KindbergGordon Blair

    Para fazer download dos cdigos-fonte, cadastre-se em nosso site, www.grupoa.com.br, encontre e acesse a pgina do livro

    por meio do campo de busca e clique no link Contedo Online.

    Os professores interessados podem acessar contedo exclusivo (em ingls) em nosso site, www.grupoa.com.br. Cadastre-se como professor, encontre e acesse a pgina do livro por meio do campo de busca e clique no link Material para o Professor.

    SISTEMA

    S DISTR

    IBU

    DO

    SConceitos e Projeto5 Edio

    Coulouris

    Dollim

    oreK

    indbergB

    lair

    A Bookman Editora parte do Grupo A, uma empresa que engloba diversos selos edito-riais e vrias plataformas de distribuio de contedo tcnico, cientfi co e profi ssional, disponibilizando-o como, onde e quando voc precisar.

    www.grupoa.com.br

    REDES E INTERNET

    www.grupoa.com.br

    REDES E INTERNET / SISTEMAS OPERACIONAIS

    BROOKSHEAR, J.G. Cincia da Computao: Uma viso abrangente

    CARISSIMI, A.S.; ROCHOL, J.; GRANVILLE, L.Z.Redes de Computadores Vol.20 (Srie UFRGS)

    COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribudos, Conceitos e Projeto, 5e.d.

    EDELWEISS, N.; GALANTE, R. Estruturas de Dados Vol.18 (Srie UFRGS)

    FOROUZAN, B.A.Comunicao de Dados e Redes de Computadores, 4.ed.

    FOROUZAN, B.A.; FEGAN, S.C.Protocolo TCP/IP

    GOODRICH, M.T.; TAMASSIA, R.Estruturas de Dados e Algoritmos em Java, 5.ed.Introduo Segurana de ComputadoresProjeto de Algoritmos: Fundamentos, anlise e exemplos da internet

    ROCHOL, J.Comunicao de Dados Vol. 22 (Srie UFRGS)

    SOMASUNDARAM, G.; SHRIVASTAVA, A.; EMC EDUCATION SERVICESArmazenamento e Gerenciamento de Informaes: Como armazenar, gerenciar e proteger informaes digitais

    STEVENS, W.R.Programao de Rede UNIX: API para soquetes de rede, 3.ed.

    TENENBAUM, A.S.; WOODHULL, A.S.Sistemas Operacionais

    TOSCANI, L.V.; VELOSO, P.A.S.Complexidade de Algoritmos, 3.ed. Vol.13 (Srie UFRGS)

    5 Edio

    SISTEMA

    S DISTR

    IBU

    DO

    SConceitos e Projeto

    46223 Sistemas Distribuidos 5 ed.indd 146223 Sistemas Distribuidos 5 ed.indd 1 15/07/2013 16:00:0515/07/2013 16:00:05

  • Catalogao na publicao: Ana Paula M. Magnus CRB 10/2052

    George Coulouris cientista visitante snior do Laboratrio de Computao da Cambridge University.

    Jean Dollimore foi, at sua aposentadoria, conferencista snior sobre cincia da computao do Queen Mary College, University of London.

    Tim Kindberg foi pesquisador snior do Hewllet-Packard Laboratories, em Bristol. o fundador e atual diretor da matter 2 media.

    Gordon Blair professor de sistemas distribudos e chefe do Departamento de Computao da Lancaster University.

    S623 Sistemas distribudos [recurso eletrnico] : conceitos e projeto / George Coulouris ... [et al.] ; traduo: Joo Eduardo Nbrega Tortello ; reviso tcnica: Alexandre Carissimi. 5. ed. Dados eletrnicos. Porto Alegre : Bookman, 2013.

    Editado tambm como livro impresso em 2013. ISBN 978-85-8260-054-2

    1. Computao. 2. Sistemas distribudos. 3. Redes. I. Coulouris, George.

    CDU 004.652.3

  • Traduo:Joo Eduardo Nbrega Tortello

    Reviso tcnica:Alexandre Carissimi

    Doutor em Informtica pelo Institut National Polytechnique de Grenoble, FranaProfessor do Instituto de Informtica da UFRGS

    2013

    Verso impressadesta obra: 2013

    Cambridge University ex-professor doQueen Mary College, University of London

    matter 2 media Lancaster University

  • Reservados todos os direitos de publicao, em lngua portuguesa, BOOKMAN EDITORA LTDA., uma empresa do GRUPO A EDUCAO S.A.Av. Jernimo de Ornelas, 670 Santana90040-340 Porto Alegre RSFone: (51) 3027-7000 Fax: (51) 3027-7070 proibida a duplicao ou reproduo deste volume, no todo ou em parte, sob quaisquer formasou por quaisquer meios (eletrnico, mecnico, gravao, fotocpia, distribuio na Web e outros),sem permisso expressa da Editora.

    Unidade So PauloAv. Embaixador Macedo Soares, 10.735 Pavilho 5 Cond. Espace CenterVila Anastcio 05095-035 So Paulo SPFone: (11) 3665-1100 Fax: (11) 3667-1333SAC 0800 703-3444 www.grupoa.com.br

    IMPRESSO NO BRASILPRINTED IN BRAZIL

    Obra originalmente publicada sob o ttuloDistributed Systems: Concepts and Design, 5th EditionISBN 978-0-13-214301-1

    Authorized translation from the English language edition, entitled DISTRIBUTED SYSTEMS: CONCEPTS AND DESIGN, 5th Edition by GEORGE COULOURIS; JEAN DOLLIMORE; TIM KINDBERG; GORDON BLAIR, published by Pearson Education,Inc., publishing as Addison-Wesley, Copyright 2012. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education,Inc.

    Portuguese language edition published by Bookman Companhia Editora Ltda, a company of Grupo A Educao S.A., Copyright 2013.

    Traduo autorizada da edio de lngua inglesa, intitulada DISTRIBUTED SYSTEMS: CONCEPTS AND DESIGN, 5th Edition, autoria de GEORGE COULOURIS; JEAN DOLLIMORE; TIM KINDBERG; GORDON BLAIR, publicado por Pearson Education, Inc., sob o selo Addison-Wesley, Copyright 2012. Todos os direitos reservados. Este livro no poder ser reproduzido nem em parte nem na ntegra, nem ter partes ou sua ntegra armazenado em qualquer meio, seja mecnico ou eletrnico, inclusive fotocpia, sem permisso da Pearson Education,Inc.

    A edio em lngua portuguesa desta obra publicada por Bookman Companhia Editora Ltda, uma empresa do Grupo A Educao S.A., Copyright 2013.

    Gerente editorial: Arysinha Jacques AffonsoColaboraram nesta edio:

    Editora: Mariana Belloli

    Capa: VS Digital, arte sobre capa original

    Leitura final: Amanda Jansson Breitsameter

    Editorao: Techbooks

    Coulouris_Iniciais.indd ivCoulouris_Iniciais.indd iv 23/05/13 09:1423/05/13 09:14

  • Prefcio

    Esta 5 edio de nosso livro-texto aparece em um momento em que a Internet e a Web continuam a crescer e tm impacto em cada aspecto de nossa sociedade. Por exemplo, o captulo introdutrio registra a influncia da Internet em reas de aplicao to diversi-ficadas como finanas e comrcio, artes e entretenimento, e o surgimento da sociedade da informao de modo geral. Destaca tambm os requisitos bastante exigentes de do-mnios de aplicao, como pesquisa na Web e jogos online para vrios participantes. Do ponto de vista dos sistemas distribudos, esses desenvolvimentos esto impondo novas demandas significativas na infraestrutura de sistema subjacente, em termos de variedade de aplicaes, cargas de trabalho e tamanho suportados por muitos sistemas modernos. Tendncias importantes incluem a diversidade e a onipresena cada vez maiores de tec-nologias de interconexo em rede (incluindo a importncia cada vez maior das redes sem fio), a integrao inerente de elementos da computao mvel e ubqua na infraestrutura dos sistemas distribudos, levando a arquiteturas fsicas radicalmente diferentes, neces-sidade de suportar servios multimdia e ao surgimento do paradigma da computao em nuvem que desafia nossa perspectiva de servios de sistemas distribudos.

    O objetivo deste livro fornecer um entendimento sobre os princpios nos quais so baseados a Internet e outros sistemas distribudos, sobre sua arquitetura, algoritmos e projeto e sobre como atendem s exigncias dos aplicativos distribudos atuais. Comea-mos com um conjunto de sete captulos que, juntos, abordam os elementos bsicos para o estudo dos sistemas distribudos. Os dois primeiros captulos fornecem um panorama con-ceitual do tema, destacando as caractersticas dos sistemas distribudos e os desafios que devem ser enfrentados em seu projeto: escalabilidade, heterogeneidade, segurana e trata-mento de falhas so os mais importantes. Esses captulos tambm desenvolvem modelos abstratos para entender interao, falha e segurana de processos. Depois deles, existem outros captulos bsicos dedicados ao estudo de interconexo em rede, comunicao entre processos, invocao remota, comunicao indireta e suporte do sistema operacional.

    Novidades da 5 edio

    Novos captulos:

    Comunicao indireta: comunicao de grupo, sistemas de publicar-assinar e estudos de caso sobre JavaSpaces, JMS, WebSphere e Messa Queues.

    Objetos e componentes distribudos: middleware baseado em componentes e estudos de caso sobre Enterprise JavaBeans, Fractal e CORBA.

    Projeto de sistemas distribudos: um novo estudo de caso sobre a infraestrutura Google.

    Novos tpicos: computao em nuvem, virtualizao de rede, virtualizao de sistema operacional, interface de passagem de mensagem, peer-to-peer no estruturado, espaos de tupla, acoplamento livre em relao a servios Web.

    Novos estudos de caso: Skype, Gnutella, TOTA, L2imbo, BitTorrent, End System Multicast.

    Veja a tabela na pgina ix para mais detalhes das mudanas.

    Coulouris_Iniciais.indd vCoulouris_Iniciais.indd v 23/05/13 09:1423/05/13 09:14

  • vi Prefcio

    O grupo de captulos seguinte aborda o importante tpico do middleware, exami-nando diferentes estratgias para suportar aplicativos distribudos, incluindo objetos e componentes distribudos, Web services e solues peer-to-peer alternativas. Aborda-mos, em seguida, os tpicos bem-estabelecidos de segurana, sistemas de arquivos distri-budos e atribuio de nomes distribuda, antes de passarmos para os importantes aspec-tos relacionados a dados que incluem transaes distribudas e replicao. Os algoritmos associados a todos esses tpicos so abordados medida que surgem, e tambm em captulos separados, dedicados a temporizao, coordenao e acordo.

    O livro termina com os captulos que tratam das reas emergentes da computao mvel e ubqua e dos sistemas multimdia distribudos, antes de apresentar um estudo de caso enfocando o projeto e a implementao da infraestrutura de sistemas distribudos que do suporte ao Google em termos de funcionalidade de pesquisa bsica e da cres-cente variedade de servios adicionais oferecidos pelo Google (por exemplo, Gmail e Google Earth). O ltimo captulo tem um papel importante ao ilustrar como todos os con-ceitos de arquiteturas de sistemas, algoritmos e tecnologias apresentados neste livro po-dem ser reunidos em um projeto global coerente para determinado domnio de aplicao.

    Objetivos e pblico-alvoEste livro se destina a cursos de graduao e cursos introdutrios de ps-graduao. Ele pode ser igualmente usado de forma autodidata. Adotamos a estratgia top-down (de cima para baixo), tratando dos problemas a serem resolvidos no projeto de sistemas dis-tribudos e descrevendo as estratgias bem-sucedidas na forma de modelos abstratos, algoritmos e estudos de caso detalhados sobre os sistemas mais utilizados. Abordamos a rea com profundidade e amplitude suficientes para permitir aos leitores prosseguirem com seus estudos usando a maioria dos artigos de pesquisa presentes na literatura sobre sistemas distribudos.

    Nosso objetivo tornar o assunto acessvel a estudantes que tenham um conheci-mento bsico de programao orientada a objetos, sistemas operacionais e arquitetura de computadores. O livro inclui uma abordagem dos aspectos de redes de computadores, relevantes aos sistemas distribudos, inclusive as tecnologias subjacentes da Internet, das redes de longa distncia, locais e sem fio. Ao longo de todo o livro so apresentados algo-ritmos e interfaces em Java ou, em alguns casos, em C ANSI. Por brevidade e clareza da apresentao, tambm usada uma forma de pseudocdigo, derivado de Java/C.

    Coulouris_Iniciais.indd viCoulouris_Iniciais.indd vi 23/05/13 09:1423/05/13 09:14

  • Prefcio vii

    16 Transaes e controle de concorrncia17 Transaes distribudas18 Replicao

    11 Segurana12 Sistemas de arquivo distribudos13 Servios de nomes

    Servios de sistema

    1 Caracterizao de sistemas distribudos2 Modelos de sistema

    3 Redes de computadores e interligao em rede 4 Comunicao entre processos 5 Invocao remota 6 Comunicao indireta 7 Sistema operacional

    Base

    14 Tempo e estados globais15 Coordenao e acordo

    Algoritmos distribudos

    Middleware

    8 Objetos e componentes distribudos 9 Servios Web

    10 Sistemas peer-to-peer

    19 Computao mvel e ubqua20 Sistemas multimdia distribudos

    Novos desaos

    Dados compartilhados

    21 Projeto de sistemas distribudos: estudo de caso do Google

    Estudo de caso importante

    Organizao do livroO diagrama mostra os captulos sob sete reas de assunto principais. Seu objetivo for-necer um guia para a estrutura do livro e indicar as rotas de navegao recomendadas para os instrutores que queiram fornecer (ou leitores que queiram obter) um entendimen-to sobre as vrias subreas do projeto de sistemas distribudos.

    RefernciasA existncia da World Wide Web mudou a maneira pela qual um livro como este pode ser vinculado ao material de origem, incluindo artigos de pesquisa, especificaes tcnicas e padres. Muitos dos documentos de origem agora esto disponveis na Web; alguns esto disponveis somente nela. Por motivos de brevidade e facilidade de leitura, empregamos uma forma especial de referncia ao material da Web, que se assemelha um pouco a um URL: citaes como [www.omg.org] e [www.rsasecurity.com I] se referem documen-tao que est disponvel somente na Web. Elas podem ser pesquisadas na lista de refe-rncias ao final do livro, mas os URLs completos so dados apenas em uma verso online dessa lista, no site do livro www.cdk5.net/refs (em ingls), em que assumem a forma de links e podem ser acessados diretamente com um simples clique de mouse. As duas verses da lista de referncias incluem uma explicao mais detalhada desse esquema.

    Coulouris_Iniciais.indd viiCoulouris_Iniciais.indd vii 23/05/13 09:1423/05/13 09:14

  • viii Prefcio

    Alteraes relativas 4 edioAntes de comearmos a escrever esta nova edio, fizemos um levantamento junto aos professores que utilizavam a 4 edio. A partir dos resultados, identificamos o novo material exigido e as vrias alteraes a serem feitas. Alm disso, reconhecemos a diver-sidade cada vez maior de sistemas distribudos, particularmente em termos da variedade de estratgias de arquiteturas de sistemas disponveis atualmente para desenvolvedores de sistemas distribudos. Isso exigiu alteraes significativas no livro, especialmente nos captulos iniciais (bsicos).

    Isso nos levou a escrever trs captulos totalmente novos, a fazer alteraes signifi-cativas em vrios outros captulos e a realizar numerosas inseres por todo o livro para acrescentar material novo. Muitos dos captulos foram alterados para refletir as novas informaes que se tornaram disponveis sobre os sistemas descritos. Essas alteraes es-to resumidas na tabela da pgina ix. Para ajudar os professores que usaram a 4 edio, quando possvel preservamos a estrutura adotada na edio anterior.

    O material removido est disponvel no site do livro (em ingls), junto ao material removido das edies anteriores. Isso inclui os estudos de caso sobre ATM, comunicao entre processos em UNIX, CORBA (uma verso reduzida desse estudo de caso permane-ce no Captulo 8), a especificao de eventos distribudos Jini, o captulo sobre memria compartilhada distribuda e o estudo de caso do middleware Grid (apresentando OGSA e o toolkit Globus). Alguns captulos do livro abrangem muito material; por exemplo, o novo captulo sobre comunicao indireta (Captulo 6). Os professores podem optar por abordar o amplo espectro, antes de escolherem duas ou trs tcnicas para examinar com mais detalhes (por exemplo, a comunicao em grupo, em razo de seu predomnio nos sistemas distribudos comerciais).

    A ordem dos captulos foi alterada para acomodar o novo material e refletir a mu-dana na importncia relativa de alguns tpicos. Para uma maior compreenso de alguns tpicos, talvez os leitores considerem necessrio buscar outras referncias. Por exemplo, h material no Captulo 9, sobre tcnicas de segurana em XML, que faro mais sentido depois que as sees do Captulo 11, Segurana, s quais faz referncia, forem lidas.

    AgradecimentosSomos muito gratos aos seguintes professores que participaram de nosso levantamento: Guohong Cao, Jose Fortes, Bahram Khalili, George Blank, Jinsong Ouyang, JoAnne Holliday, George K, Thiruvathukal, Joel Wein, Tao Xie e Xiaobo Zhou.

    Gostaramos de agradecer s seguintes pessoas que revisaram os captulos novos ou ajudaram substancialmente: Rob Allen, Roberto Baldoni, John Bates, Tom Berson, Lyn-ne Blair, Geoff Coulson, Paul Grace, Andrew Herbert, David Hutchison, Laurent Mathy, Rajiv Ramdhany, Richard Sharp, Jean-Bernard Stefani, Rip Sohan, Francois Taiani, Peter Triantafillou, Gareth Tyson e Sir Maurice Wilkes. Tambm gostaramos de agradecer ao pessoal do Google que deu ideias sobre o fundamento lgico da Google Infrastructure, especialmente Mike Burrows, Tushar Chandra, Walfredo Cirne, Jeff Dean, Sanjay Ghe-mawat, Andrea Kirmse e John Reumann.

    Coulouris_Iniciais.indd viiiCoulouris_Iniciais.indd viii 23/05/13 09:1423/05/13 09:14

  • Prefcio ix

    Captulos novos:

    6 Comunicao indireta Inclui eventos e notificao da 4 edio

    8 Objetos e componentes distribudos Inclui verso resumida do estudo de caso CORBA da 4 edio 21 Projeto de sistemas distribudos Inclui um novo estudo de caso sobre o Google

    Captulos que passaram por alteraes significativas:

    1 Caracterizao de sistemas distribudos Reestruturao de materialNova Seo 1.2: Exemplos de sistemas disttribudosSeo 1.2.2: Introduo da computao em nuvem MMOGs

    2 Modelos de sistema Reestruturao de materialNova Seo 2.2: Modelos fsicosSeo 2.3: reescrita significativa para refletir novo contedo do livro e perspectivas de arquiteturas de sistema associadas

    4 Comunicao entre processos Vrias atualizaesComunicao cliente-servidor movida para o Captulo 5Nova Seo 4.5: Virtualizao de rede (inclui estudo de caso sobre Skype)Nova Seo 4.6: Estudo de caso sobre MPIEstudo de caso sobre IPC no UNIX removido

    5 Invocao remota Reestruturao de materialComunicao cliente-servidor movida para este captuloProgresso de comunicao cliente-servidor por meio de RPC para RMI introduzidaEventos e notificao movidos para o Captulo 6

    Captulos nos quais novo material foi adicionado/removido, mas sem alteraes estruturais:

    3 Redes de computadores e interligao em rede

    Vrias atualizaesSeo 3.5: material sobre ATM removido

    7 Sistemas operacionais Nova Seo 7.7: Virtualizao em nvel de sistema operacional

    9 Servios Web Seo 9.2: adicionada discusso sobre acoplamento livre

    10 Sistemas peer-to-peer Nova Seo 10.5.3: peer-to-peer no estruturado

    15 Coordenao e acordo Material sobre c omunicao em grupo movido para o Captulo 6

    18 Replicao Material sobre comunicao em grupo movido para o Captulo 6 19 Mvel seo Seo 19.3.1: novo material sobre espaos de tupla (TOTA e L2imbo)

    20 Sistemas multimdia distribudos Seo 20.6: novos estudos de caso sobre BitTorrent e End System Multicast

    Coulouris_Iniciais.indd ixCoulouris_Iniciais.indd ix 23/05/13 09:1423/05/13 09:14

  • x Prefcio

    SiteAcesse o material complementar (em ingls) do livro no site do Grupo A:

    Entre no site do Grupo A, em www.grupoa.com.br. Clique em Acesse ou crie a sua conta. Se voc j tem cadastro em nosso site, insira seu endereo de e-mail ou CPF e

    sua senha na rea Acesse sua conta; se ainda no cadastrado, cadastre-se preenchendo o campo da rea Crie sua conta.

    Depois de acessar a sua conta, digite o ttulo do livro ou o nome do autor no campo de busca do site e clique no boto Buscar.

    Localize o livro entre as opes oferecidas e clique sobre a imagem de capa ou sobre o ttulo para acessar a pgina do livro.

    Na pgina do livro: Para fazer download dos cdigos-fonte dos Captulos 4, 5, 8, 9 e 11, clique no

    link Contedo online. Para fazer download de apresentaes em PowerPoint para uso em sala de aula,

    apresentaes em PowerPoint para os exerccios e solues dos exerccios (todos em ingls), clique no link Material para o Professor. Ateno: este contedo de acesso restrito a usurios com cadastro de Professor.

    Os autores do livro tambm mantm um site (em ingls) com uma ampla variedade de material destinado a ajudar professores e leitores. Esse site pode ser acessado em: www.cdk5.netGuia do instrutor: dicas de ensino captulo a captulo, sugestes de projetos de laboratrio e muito mais.Lista de referncias: a lista de referncias que pode ser encontrada no final do livro est reproduzida no site. A verso Web da lista de referncias inclui links para o material que est disponvel online.Lista de errata: uma lista dos erros conhecidos no livro, com suas correes. Tais erros sero corrigidos nas novas impresses e uma lista de errata separada ser fornecida para cada impresso.*Material suplementar: o cdigo-fonte dos programas presentes no livro e o material de leitura relevante que foi apresentado nas edies anteriores do livro, mas removido por razes de espao. As referncias a esse material suplementar aparecem no livro com links como www.cdk5.net/ipc (o URL para material suplementar relacionado com comunica-o entre processos).

    George CoulourisJean Dollimore

    Tim KindbergGordon Blair

    * A errata disponvel no site da edio em lngua inglesa j est corrigida nesta edio brasileira.

    Coulouris_Iniciais.indd xCoulouris_Iniciais.indd x 23/05/13 09:1423/05/13 09:14

  • Sumrio

    1 Caracterizao de Sistemas Distribudos 11.1 Introduo 2

    1.2 Exemplos de sistemas distribudos 3

    1.3 Tendncias em sistemas distribudos 8

    1.4 Enfoque no compartilhamento de recursos 14

    1.5 Desafios 16

    1.6 Estudo de caso: a World Wide Web 26

    1.7 Resumo 33

    2 Modelos de Sistema 372.1 Introduo 38

    2.2 Modelos fsicos 39

    2.3 Modelos de arquitetura para sistemas distribudos 40

    2.4 Modelos fundamentais 61

    2.5 Resumo 76

    3 Redes de Computadores e Interligao em Rede 813.1 Introduo 82

    3.2 Tipos de redes 86

    3.3 Conceitos bsicos de redes 89

    3.4 Protocolos Internet 106

    3.5 Estudos de caso: Ethernet, WiFi e Bluetooth 128

    3.6 Resumo 141

    4 Comunicao Entre Processos 1454.1 Introduo 146

    4.2 A API para protocolos Internet 147

    4.3 Representao externa de dados e empacotamento 158

    4.4 Comunicao por multicast (difuso seletiva) 169

    4.5 Virtualizao de redes: redes de sobreposio 174

    4.6 Estudo de caso: MPI 178

    4.7 Resumo 181

    Coulouris_Iniciais.indd xiCoulouris_Iniciais.indd xi 23/05/13 09:1423/05/13 09:14

  • xii Sumrio

    5 Invocao Remota 1855.1 Introduo 186

    5.2 Protocolos de requisio-resposta 187

    5.3 Chamada de procedimento remoto 195

    5.4 Invocao a mtodo remoto 204

    5.5 Estudo de caso: RMI Java 217

    5.6 Resumo 225

    6 Comunicao Indireta 2296.1 Introduo 230

    6.2 Comunicao em grupo 232

    6.3 Sistemas publicar-assinar 242

    6.4 Filas de mensagem 254

    6.5 Estratgias de memria compartilhada 262

    6.6 Resumo 274

    7 Sistema Operacional 2797.1 Introduo 280

    7.2 A camada do sistema operacional 281

    7.3 Proteo 284

    7.4 Processos e threads 286

    7.5 Comunicao e invocao 303

    7.6 Arquiteturas de sistemas operacionais 314

    7.7 Virtualizao em nvel de sistema operacional 318

    7.8 Resumo 331

    8 Objetos e Componentes Distribudos 3358.1 Introduo 336

    8.2 Objetos distribudos 337

    8.3 Estudo de caso: CORBA 340

    8.4 De objetos a componentes 358

    8.5 Estudos de caso: Enterprise JavaBeans e Fractal 364

    8.6 Resumo 378

    Coulouris_Iniciais.indd xiiCoulouris_Iniciais.indd xii 23/05/13 09:1423/05/13 09:14

  • Sumrio xiii

    9 Servios Web 3819.1 Introduo 382

    9.2 Servios Web 384

    9.3 Descries de servio e IDL para servios Web 400

    9.4 Um servio de diretrio para uso com servios Web 404

    9.5 Aspectos de segurana em XML 406

    9.6 Coordenao de servios Web 411

    9.7 Aplicaes de servios Web 413

    9.8 Resumo 420

    10 Sistemas Peer-to-peer 42310.1 Introduo 424

    10.2 Napster e seu legado 428

    10.3 Middleware para peer-to-peer 430

    10.4 Sobreposio de roteamento 433

    10.5 Estudos de caso: Pastry, Tapestry 436

    10.6 Estudo de caso: Squirrel, OceanStore, Ivy 449

    10.7 Resumo 459

    11 Segurana 46311.1 Introduo 464

    11.2 Viso geral das tcnicas de segurana 472

    11.3 Algoritmos de criptografia 484

    11.4 Assinaturas digitais 493

    11.5 Criptografia na prtica 500

    11.6 Estudos de caso: NeedhamSchroeder, Kerberos, TLS, 802.11 WiFi 503

    11.7 Resumo 518

    12 Sistemas de Arquivos Distribudos 52112.1 Introduo 522

    12.2 Arquitetura do servio de arquivos 530

    12.3 Estudo de caso: Sun Network File System 536

    12.4 Estudo de caso: Andrew File System 548

    12.5 Aprimoramentos e mais desenvolvimentos 557

    12.6 Resumo 563

    Coulouris_Iniciais.indd xiiiCoulouris_Iniciais.indd xiii 23/05/13 09:1423/05/13 09:14

  • xiv Sumrio

    13 Servio de Nomes 56513.1 Introduo 566

    13.2 Servios de nomes e o Domain Name System 569

    13.3 Servios de diretrio 584

    13.4 Estudo de caso: Global Name Service 585

    13.5 Estudo de caso: X.500 Directory Service 588

    13.6 Resumo 592

    14 Tempo e Estados Globais 59514.1 Introduo 596

    14.2 Relgios, eventos e estados de processo 597

    14.3 Sincronizao de relgios fsicos 599

    14.4 Tempo lgico e relgios lgicos 606

    14.5 Estados globais 610

    14.6 Depurao distribuda 619

    14.7 Resumo 625

    15 Coordenao e Acordo 62915.1 Introduo 630

    15.2 Excluso mtua distribuda 633

    15.3 Eleies 641

    15.4 Coordenao e acordo na comunicao em grupo 646

    15.5 Consenso e problemas relacionados 659

    15.6 Resumo 670

    16 Transaes e Controle de Concorrncia 67516.1 Introduo 676

    16.2 Transaes 679

    16.3 Transaes aninhadas 690

    16.4 Travas 692

    16.5 Controle de concorrncia otimista 707

    16.6 Ordenao por carimbo de tempo 711

    16.7 Comparao dos mtodos de controle de concorrncia 718

    16.8 Resumo 720

    Coulouris_Iniciais.indd xivCoulouris_Iniciais.indd xiv 23/05/13 09:1423/05/13 09:14

  • Sumrio xv

    17 Transaes Distribudas 72717.1 Introduo 728

    17.2 Transaes distribudas planas e aninhadas 728

    17.3 Protocolos de confirmao atmica 731

    17.4 Controle de concorrncia em transaes distribudas 740

    17.5 Impasses distribudos 743

    17.6 Recuperao de transaes 751

    17.7 Resumo 761

    18 Replicao 76518.1 Introduo 766

    18.2 Modelo de sistema e o papel da comunicao em grupo 768

    18.3 Servios tolerantes a falhas 775

    18.4 Estudos de caso de servios de alta disponibilidade: Gossip, Bayou e Coda 782

    18.5 Transaes em dados replicados 802

    18.6 Resumo 814

    19 Computao Mvel e Ubqua 81719.1 Introduo 818

    19.2 Associao 827

    19.3 Interoperabilidade 835

    19.4 Percepo e reconhecimento de contexto 844

    19.5 Segurana e privacidade 857

    19.6 Adaptabilidade 866

    19.7 Estudo de caso: Cooltown 871

    19.8 Resumo 878

    20 Sistemas Multimdia Distribudos 88120.1 Introduo 882

    20.2 Caractersticas dos dados multimdia 886

    20.3 Gerenciamento de qualidade de servio 887

    20.4 Gerenciamento de recursos 897

    20.5 Adaptao de fluxo 899

    20.6 Estudos de caso: Tiger, BitTorrent e End System Multicast 901

    20.7 Resumo 913

    Coulouris_Iniciais.indd xvCoulouris_Iniciais.indd xv 23/05/13 09:1423/05/13 09:14

  • xvi Sumrio

    21 Projeto de Sistemas Distribudos Estudo de Caso: Google 91521.1 Introduo 916

    21.2 Introduo ao estudo de caso: Google 917

    21.3 Arquitetura global e filosofia de projeto 922

    21.4 Paradigmas de comunicao 928

    21.5 Servios de armazenamento de dados e coordenao 935

    21.6 Servios de computao distribuda 956

    21.7 Resumo 964

    Referncias 967

    ndice 1025

    Coulouris_Iniciais.indd xviCoulouris_Iniciais.indd xvi 23/05/13 09:1423/05/13 09:14

  • Um sistema distribudo aquele no qual os componentes localizados em computadores interligados em rede se comunicam e coordenam suas aes apenas passando mensagens. Essa definio leva s seguin-tes caractersticas especialmente importantes dos sistemas distribudos: concorrncia de componentes, falta de um relgio global e falhas de componentes independentes.

    Examinaremos vrios exemplos de aplicaes distribudas modernas, incluindo pesquisa na Web, jogos online para vrios jogadores e sistemas de negcios financeiros. Veremos tambm as tendncias bsicas que estimulam o uso dos sistemas distribudos atuais: a natureza pervasiva da interligao em rede moderna, o florescimento da computao mvel e ubqua, a crescente importncia dos sistemas multimdia distribudos e a tendncia no sentido de considerar os sistemas distribudos como um servio pblico. Em seguida, o captulo destacar o compartilhamento de recursos como uma forte motivao para a construo de sistemas distribudos. Os recursos podem ser gerenciados por servidores e acessados por clientes, ou podem ser encapsulados como objetos e acessados por outros objetos clientes.

    Os desafios advindos da construo de sistemas distribudos so a heterogeneidade dos componen-tes, ser um sistema aberto, o que permite que componentes sejam adicionados ou substitudos, a segu-rana, a escalabilidade isto , a capacidade de funcionar bem quando a carga ou o nmero de usurios aumenta , o tratamento de falhas, a concorrncia de componentes, a transparncia e o fornecimento de um servio de qualidade. Por fim, a Web ser discutida como exemplo de sistema distribudo de grande escala e sero apresentados seus principais recursos.

    Caracterizao de Sistemas Distribudos

    1.1 Introduo1.2 Exemplos de sistemas distribudos1.3 Tendncias em sistemas distribudos1.4 Enfoque no compartilhamento de recursos1.5 Desafios1.6 Estudo de caso: a World Wide Web1.7 Resumo

    1

    Coulouris_01.indd 1Coulouris_01.indd 1 23/05/13 09:1523/05/13 09:15

  • 2 Sistemas Distribudos, Conceitos e Projeto

    1.1 IntroduoAs redes de computadores esto por toda parte. A Internet uma delas, assim como as muitas redes das quais ela composta. Redes de telefones mveis, redes corporativas, redes de fbrica, redes em campus, redes domsticas, redes dentro de veculos, todas elas, tanto separadamente como em conjunto, compartilham as caractersticas bsicas que as tornam assuntos relevantes para estudo sob o ttulo sistemas distribudos. Neste livro, queremos explicar as caractersticas dos computadores interligados em rede que afetam os projetis-tas e desenvolvedores de sistema e apresentar os principais conceitos e tcnicas que foram criados para ajudar nas tarefas de projeto e implementao de sistemas que os tm por base.

    Definimos um sistema distribudo como aquele no qual os componentes de hard-ware ou software, localizados em computadores interligados em rede, comunicam-se e coordenam suas aes apenas enviando mensagens entre si. Essa definio simples abrange toda a gama de sistemas nos quais computadores interligados em rede podem ser distribudos de maneira til.

    Os computadores conectados por meio de uma rede podem estar separados por qual-quer distncia. Eles podem estar em continentes separados, no mesmo prdio ou na mesma sala. Nossa definio de sistemas distribudos tem as seguintes consequncias importantes:

    Concorrncia: em uma rede de computadores, a execuo concorrente de progra-mas a norma. Posso fazer meu trabalho em meu computador, enquanto voc faz o seu em sua mquina, compartilhando recursos como pginas Web ou arquivos, quando necessrio. A capacidade do sistema de manipular recursos compartilhados pode ser ampliada pela adio de mais recursos (por exemplo, computadores) na rede. Vamos descrever como essa capacidade extra pode ser distribuda em muitos pontos de maneira til. A coordenao de programas em execuo concorrente e que compartilham recursos tambm um assunto importante e recorrente.Inexistncia de relgio global: quando os programas precisam cooperar, eles co-ordenam suas aes trocando mensagens. A coordenao frequentemente depende de uma noo compartilhada do tempo em que as aes dos programas ocorrem. Entretanto, verifica-se que existem limites para a preciso com a qual os computa-dores podem sincronizar seus relgios em uma rede no existe uma noo global nica do tempo correto. Essa uma consequncia direta do fato de que a nica co-municao se d por meio do envio de mensagens em uma rede. Exemplos desses problemas de sincronizao e suas solues sero descritos no Captulo 14.Falhas independentes: todos os sistemas de computador podem falhar, e responsa-bilidade dos projetistas de sistema pensar nas consequncias das possveis falhas. Nos sistemas distribudos, as falhas so diferentes. Falhas na rede resultam no isolamento dos computadores que esto conectados a ela, mas isso no significa que eles param de funcionar. Na verdade, os programas neles existentes talvez no consigam detectar se a rede falhou ou se ficou demasiadamente lenta. Analogamente, a falha de um computa-dor ou o trmino inesperado de um programa em algum lugar no sistema (um colapso no sistema) no imediatamente percebida pelos outros componentes com os quais ele se comunica. Cada componente do sistema pode falhar independentemente, deixando os outros ainda em funcionamento. As consequncias dessa caracterstica dos sistemas distribudos sero um tema recorrente em todo o livro.

    A principal motivao para construir e usar sistemas distribudos proveniente do de-sejo de compartilhar recursos. O termo recurso bastante abstrato, mas caracteriza

    Coulouris_01.indd 2Coulouris_01.indd 2 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 3

    bem o conjunto de coisas que podem ser compartilhadas de maneira til em um sistema de computadores interligados em rede. Ele abrange desde componentes de hardware, como discos e impressoras, at entidades definidas pelo software, como arquivos, bancos de dados e objetos de dados de todos os tipos. Isso inclui o fluxo de quadros de vdeo proveniente de uma cmera de vdeo digital ou a conexo de udio que uma chamada de telefone mvel representa.

    O objetivo deste captulo transmitir uma viso clara da natureza dos sistemas dis-tribudos e dos desafios que devem ser enfrentados para garantir que eles sejam bem--sucedidos. A Seo 1.2 fornece alguns exemplos ilustrativos de sistemas distribudos, e a Seo 1.3 aborda as principais tendncias subjacentes que estimulam os recentes desen-volvimentos. A Seo 1.4 enfoca o projeto de sistemas com compartilhamento de recur-sos, enquanto a Seo 1.5 descreve os principais desafios enfrentados pelos projetistas de sistemas distribudos: heterogeneidade, sistemas abertos, segurana, escalabilidade, trata-mento de falhas, concorrncia, transparncia e qualidade do servio. A Seo 1.6 apresen-ta o estudo de caso detalhado de um sistema distribudo bastante conhecido, a World Wide Web, ilustrando como seu projeto suporta o compartilhamento de recursos.

    1.2 Exemplos de sistemas distribudosO objetivo desta seo dar exemplos motivacionais de sistemas distribudos atuais, ilus-trando seu papel predominante e a enorme diversidade de aplicaes associadas a eles.

    Conforme mencionado na Introduo, as redes esto por toda parte e servem de base para muitos servios cotidianos que agora consideramos naturais; por exemplo, a Internet e a World Wide Web associada a ela, a pesquisa na Web, os jogos online, os e--mails, as redes sociais, o e-Commerce etc. Para ilustrar ainda mais esse ponto, considere a Figura 1.1, que descreve uma variedade de setores de aplicao comercial ou social im-portantes, destacando alguns usos associados estabelecidos ou emergentes da tecnologia de sistemas distribudos.

    Como se v, os sistemas distribudos abrangem muitos dos desenvolvimentos tecno-lgicos mais significativos atualmente e, portanto, um entendimento da tecnologia subja-cente absolutamente fundamental para o conhecimento da computao moderna. A figu-ra tambm d um vislumbre inicial da ampla variedade de aplicaes em uso hoje, desde sistemas de localizao relativa, conforme os encontrados, por exemplo, em um carro ou em um avio, at sistemas de escala global envolvendo milhes de ns; desde servios voltados para dados at tarefas que exigem uso intenso do processador; desde sistemas construdos a partir de sensores muito pequenos e relativamente primitivos at aqueles que incorporam elementos computacionais poderosos; desde sistemas embarcados at os que suportam uma sofisticada experincia interativa do usurio e assim por diante.

    Vamos ver agora exemplos de sistemas distribudos mais especficos para ilustrar melhor a diversidade e a real complexidade da proviso de sistemas distribudos atual.

    1.2.1 Pesquisa na WebA pesquisa na Web tem se destacado como um setor crescente na ltima dcada, com os valores recentes indicando que o nmero global de pesquisas subiu para mais de 10 bi-lhes por ms. A tarefa de um mecanismo de pesquisa na Web indexar todo o contedo da World Wide Web, abrangendo uma grande variedade de estilos de informao, in-cluindo pginas Web, fontes de multimdia e livros (escaneados). Essa uma tarefa muito complexa, pois as estimativas atuais mostram que a Web consiste em mais de 63 bilhes

    Coulouris_01.indd 3Coulouris_01.indd 3 23/05/13 09:1523/05/13 09:15

  • 4 Sistemas Distribudos, Conceitos e Projeto

    Finanas e comrcio O crescimento do e-Commerce, exemplificado por empresas como Ama-zon e eBay, e as tecnologias de pagamento subjacentes, como PayPal; o surgimento associado de operaes bancrias e negcios online e tam-bm os complexos sistemas de disseminao de informaes para mer-cados financeiros.

    A sociedade da informao O crescimento da World Wide Web como repositrio de informaes e de conhecimento; o desenvolvimento de mecanismos de busca na Web, como Google e Yahoo, para pesquisar esse amplo repositrio; o surgi-mento de bibliotecas digitais e a digitalizao em larga escala de fontes de informao legadas, como livros (por exemplo, Google Books); a im-portncia cada vez maior do contedo gerado pelos usurios por meio de sites como YouTube, Wikipedia e Flickr; o surgimento das redes sociais por meio de servios como Facebook e MySpace.

    Setores de criao e entretenimento

    O surgimento de jogos online como uma forma nova e altamente interativa de entretenimento; a disponibilidade de msicas e filmes nos lares por meio de centros de mdia ligados em rede e mais amplamente na Internet, por intermdio de contedo que pode ser baixado ou em streaming; o papel do contedo gerado pelos usurios (conforme mencionado ante-riormente) como uma nova forma de criatividade, por exemplo por meio de servios como YouTube; a criao de novas formas de arte e entreteni-mento permitidas pelas tecnologias emergentes (inclusive em rede).

    Assistncia mdica O crescimento da informtica mdica como disciplina, com sua nfase nos registros eletrnicos de pacientes online e nos problemas de privacidade relacionados; o papel crescente da telemedicina no apoio ao diagnstico remoto ou a servios mais avanados, como cirurgias remotas (incluindo o trabalho colaborativo entre equipes mdicas); a aplicao cada vez maior de interligao em rede e tecnologia de sistemas incorporados em vida as-sistida; por exemplo, para monitorar idosos em suas prprias residncias.

    Educao O surgimento do e-learning por meio, por exemplo, de ferramentas ba-seadas na Web, como os ambientes de ensino virtual; suporte associado ao aprendizado distncia; suporte ao aprendizado colaborativo ou em comunidade.

    Transporte e logstica O uso de tecnologias de localizao, como o GPS, em sistemas de des-coberta de rotas e sistemas de gerenciamento de trfego mais gerais; o prprio carro moderno como exemplo de sistema distribudo complexo (tambm se aplica a outras formas de transporte, como a aviao); o de-senvolvimento de servios de mapa baseados na Web, como MapQuest, Google Maps e Google Earth.

    Cincias O surgimento das grades computacionais (grid) como tecnologia funda-mental para eScience, incluindo o uso de redes de computadores com-plexas para dar suporte ao armazenamento, anlise e ao processamento de dados cientficos (frequentemente em volumes muito grandes); o uso associado das grades como tecnologia capacitadora para a colaborao entre grupos de cientistas do mundo inteiro.

    Gerenciamento ambiental O uso de tecnologia de sensores (interligados em rede) para monitorar e gerenciar o ambiente natural; por exemplo, para emitir alerta precoce de desastres naturais, como terremotos, enchentes ou tsunamis, e para coor-denar a resposta de emergncia; o cotejamento e a anlise de parmetros ambientais globais para entender melhor fenmenos naturais complexos, como a mudana climtica.

    Figura 1.1 Domnios de aplicao selecionados e aplicaes de rede associadas.

    Coulouris_01.indd 4Coulouris_01.indd 4 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 5

    de pginas e um trilho de endereos Web nicos. Como a maioria dos mecanismos de busca analisa todo o contedo da Web e depois efetua um processamento sofisticado nesse banco de dados enorme, essa tarefa representa, por si s, um grande desafio para o projeto de sistemas distribudos.

    O Google, lder de mercado em tecnologia de pesquisa na Web, fez um trabalho significativo no projeto de uma sofisticada infraestrutura de sistema distribudo para dar suporte pesquisa (e, na verdade, a outros aplicativos e servios do Google, como o Goo-gle Earth). Isso representa uma das maiores e mais complexas instalaes de sistemas distribudos da histria da computao e, assim, exige um exame minucioso. Os desta-ques dessa infraestrutura incluem:

    Uma infraestrutura fsica subjacente consistindo em grandes nmeros de compu-tadores interligados em rede, localizados em centros de dados por todo o mundo.

    Um sistema de arquivos distribudo projetado para suportar arquivos muito grandes e fortemente otimizado para o estilo de utilizao exigido pela busca e outros aplicativos do Google (especialmente a leitura de arquivos em velocidades altas e constantes).

    Um sistema associado de armazenamento distribudo estruturado que oferece rpi-do acesso a conjuntos de dados muito grandes.

    Um servio de bloqueio que oferece funes de sistema distribudo, como bloqueio e acordo distribudos.

    Um modelo de programao que suporta o gerenciamento de clculos paralelos e distribudos muito grandes na infraestrutura fsica subjacente.

    Mais detalhes sobre os servios de sistemas distribudos do Google e o suporte de comu-nicao subjacente podem ser encontrados no Captulo 21, que apresenta um interessante estudo de caso de um sistema distribudo moderno em ao.

    1.2.2 Massively multiplayer online games (MMOGs)Os jogos online com vrios jogadores, ou MMOGs (Massively Multiplayer Online Ga-mes), oferecem uma experincia imersiva com a qual um nmero muito grande de usu-rios interage com um mundo virtual persistente pela Internet. Os principais exemplos desses jogos incluem o EverQuest II, da Sony, e o EVE Online, da empresa finlandesa CCP Games. Esses mundos tm aumentado significativamente em termos de sofisticao e agora incluem, por exemplo, arenas de jogo complexas (o EVE Online, por exemplo, consiste em um universo com mais de 5.000 sistemas estelares) e variados sistemas so-ciais e econmicos. O nmero de jogadores tambm est aumentando, com os sistemas capazes de suportar mais de 50.000 usurios online simultneos (e o nmero total de jogadores talvez seja dez vezes maior).

    A engenharia dos MMOGs representa um grande desafio para as tecnologias de sis-temas distribudos, particularmente devido necessidade de tempos de resposta rpidos para preservar a experincia dos usurios do jogo. Outros desafios incluem a propagao de eventos em tempo real para muitos jogadores e a manuteno de uma viso coerente do mundo compartilhado. Portanto, esse um excelente exemplo dos desafios enfrenta-dos pelos projetistas dos sistemas distribudos modernos.

    Foram propostas vrias solues para o projeto de MMOGs: Talvez surpreendentemente, o maior jogo online, o EVE Online, utiliza uma arquite-

    tura cliente-servidor na qual uma nica cpia do estado do mundo mantida em um servidor centralizado e acessada por programas clientes em execuo nos consoles

    Coulouris_01.indd 5Coulouris_01.indd 5 23/05/13 09:1523/05/13 09:15

  • 6 Sistemas Distribudos, Conceitos e Projeto

    ou em outros equipamentos dos jogadores. Para suportar grandes nmeros de clien-tes, por si s o servidor uma entidade complexa, consistindo em uma arquitetura de agregrado (cluster) caracterizada por centenas de ns de computador (essa estratgia cliente-servidor est discutida com mais detalhes na Seo 1.4 e as estratgias de cluster esto discutidas na Seo 1.3.4). A arquitetura centralizada ajuda significa-tivamente no gerenciamento do mundo virtual e a cpia nica tambm diminui as preocupaes com a coerncia. Assim, o objetivo garantir resposta rpida por meio da otimizao de protocolos de rede e tambm para os eventos recebidos. Para supor-tar isso, a carga particionada por meio da alocao de sistemas estelares individuais para computadores especficos dentro do cluster, com os sistemas estelares altamen-te carregados tendo seu prprio computador dedicado e outros compartilhando um computador. Os eventos recebidos so direcionados para os computadores certos dentro do cluster por intermdio do monitoramento da movimentao dos jogadores entre os sistemas estelares.

    Outros MMOGs adotam arquiteturas mais distribudas, nas quais o universo particionado por um nmero potencialmente muito grande de servidores, os quais tambm pode estar geograficamente distribudos. Ento, os usurios so alocados dinamicamente a um servidor em particular com base nos padres de utilizao momentneos e tambm pelos atrasos de rede at o servidor (com base na proxi-midade geogrfica, por exemplo). Esse estilo de arquitetura, que adotado pelo EverQuest, naturalmente extensvel pela adio de novos servidores.

    A maioria dos sistemas comerciais adota um dos dois modelos apresentados an-teriormente, mas agora os pesquisadores tambm esto examinando arquiteturas mais radicais, que no se baseiam nos princpios cliente-servidor, mas adotam es-tratgias completamente descentralizadas, baseadas em tecnolog ia peer-to-peer, em que cada participante contribui com recursos (armazenamento e processamen-to) para hospedar o jogo. Mais consideraes sobre as solues peer-to-peer esto nos Captulos 2 e 10).

    1.2.3 Negcios financeirosComo um ltimo exemplo, examinemos o suporte dos sistemas distribudos para os mer-cados de negcios financeiros. H muito tempo, o setor financeiro est na vanguarda da tecnologia de sistemas distribudos, em particular por sua necessidade de acesso em tempo real a uma ampla variedade de fontes de informao (preos atuais e tendncias de aes, mudanas econmicas e polticas, etc). O setor emprega monitoramento automa-tizado e aplicativos comerciais (veja a seguir).

    Note que a nfase de tais sistemas est na comunicao e no processamento de itens de interesse, conhecidos como eventos nos sistemas distribudos, e tambm na necessida-de de distribuir eventos de forma confivel e de maneira oportuna para uma quantidade de clientes que tm interesse declarado nesses itens de informao. Exemplos de tais eventos incluem queda no preo de uma ao, o comunicado dos ltimos resultados do desem-prego e assim por diante. Isso exige um estilo de arquitetura subjacente muito diferente dos estilos mencionados anteriormente (por exemplo, cliente-servidor), e esses sistemas normalmente empregam os que so conhecidos como sistemas distribudos baseados em eventos. Apresentamos uma ilustrao de uso tpico de tais sistemas a seguir e voltaremos a esse importante tpico com mais profundidade no Captulo 6.

    A Figura 1.2 ilustra um sistema de negcios financeiros tpico. Ela mostra uma s-rie de fontes de evento envolvidas em determinada instituio financeira. Essas fontes de

    Coulouris_01.indd 6Coulouris_01.indd 6 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 7

    evento compartilham as seguintes caractersticas. Primeiramente, as fontes normalmente aparecem em formatos variados, como eventos de dados de mercado da Reuters e eventos FIX (que seguem o formato especfico do protocolo Financial Information eXchange), e provm de diferentes tecnologias de evento, ilustrando assim o problema da hetero-geneidade encontrado na maioria dos sistemas distribudos (consulte tambm a Seo 1.5.1). A figura mostra o uso de conversores que transformam formatos heterogneos em um formato interno comum. Em segundo lugar, o sistema de negcios deve lidar com uma variedade de fluxos de evento, todos chegando em alta velocidade e frequentemente exigindo processamento em tempo real para se detectar padres que indiquem oportuni-dades de negcios. Esse processo costumava ser manual, mas as presses competitivas levaram a uma automao cada vez maior, nos termos do que conhecido como CEP (Complex Event Processing), o qual oferece uma maneira de reunir ocorrncias de even-to em padres lgicos, temporais ou espaciais.

    Essa abordagem usada principalmente no desenvolvimento de estratgias de ne-gcios personalizadas, abrangendo tanto a compra como a venda de aes, em particular procurando padres que indiquem uma oportunidade de negcio, respondendo automati-camente por fazer e gerenciar pedidos. Como exemplo, considere o seguinte script:

    WHENMSFT price moves outside 2% of MSFT Moving Average

    FOLLOWED-BY (MyBasket moves up by 0.5%AND

    HPQs price moves up by 5%ORMSFTs price moves down by 2%

    ))ALL WITHIN

    any 2 minute time periodTHEN

    BUY MSFTSELL HPQ

    GatewayFIX

    Motorde processamento

    de eventos complexos

    ConversorFIX

    ConversorReuters

    GatewayReuters

    Eventos FIX Eventos Reuters

    Estratgias denegociao

    Figura 1.2 Um exemplo de sistema de ne gcios financeiros.

    Coulouris_01.indd 7Coulouris_01.indd 7 23/05/13 09:1523/05/13 09:15

  • 8 Sistemas Distribudos, Conceitos e Projeto

    Esse script baseado na funcionalidade fornecida pelo Apama [www.progress.com], um produto comercial do mundo financeiro desenvolvido originalmente pela pesqui-sa feita na Universidade de Cambridge. Esse script detecta uma sequncia temporal complexa, baseada nos preos de aes da Microsoft, da HP e uma srie de outros preos de ao, resultando em decises no sentido de comprar ou vender aes espe-cficas.

    Esse estilo de tecnologia est sendo cada vez mais usado em outras reas dos sistemas financeiros, incluindo o monitoramento de atividade do negcio para o geren-ciamento de risco (em particular, o controle de exposio), a garantia do cumprimento de normas e o monitoramento de padres de atividade que possam indicar transaes fraudulentas. Nesses sistemas, os eventos normalmente so interceptados e submetidos ao que equivalente a um firewall de cumprimento e risco, antes de serem processados (consulte tambm a discusso sobre firewalls na Seo 1.3.1, a seguir).

    1.3 Tendncias em sistemas distribudosOs sistemas distribudos esto passando por um perodo de mudana significativa e isso pode ser consequncia de diversas tendncias influentes:

    O surgimento da tecnologia de redes pervasivas. O surgimento da computao ubqua, combinado ao desejo de suportar mobilidade

    do usurio em sistemas distribudos. A crescente demanda por servios multimdia. A viso dos sistemas distribudos como um servio pblico.

    1.3.1 Interligao em rede pervasiva e a Internet modernaA Internet moderna um conjunto de redes de computadores interligadas, com uma variedade de tipos que aumenta cada vez mais e que agora inclui, por exemplo, uma grande diversidade de tecnologias de comunicao sem fio, como WiFi, WiMAX, Bluetooth (consulte o Captulo 3) e redes de telefonia mvel de 3 e 4 gerao. O re-sultado que a interligao em rede se tornou um recurso pervasivo, e os dispositivos podem ser conectados (se assim for desejado) a qualquer momento e em qualquer lugar. A Figura 1.3 ilustra uma parte tpica da Internet. Os programas que esto em execuo nos computadores conectados a ela interagem enviando mensagens atravs de um meio de comunicao comum. O projeto e a construo dos mecanismos de comunicao da Internet (os protocolos Internet) so uma realizao tcnica importante, permitindo que um programa em execuo em qualquer lugar envie mensagens para programas em qualquer outro lugar e abstraindo a grande variedade de tecnologias mencionadas anteriormente.

    A Internet um sistema distribudo muito grande. Ela permite que os usurios, onde quer que estejam, faam uso de servios como a World Wide Web, e-mail e trans-ferncia de arquivos. Na verdade, s vezes, a Web confundida como sendo a Internet. O conjunto de servios da Internet aberto ele pode ser ampliado pela adio de com-putadores servidores e de novos tipos de servios. A Figura 1.3 mostra um conjunto de intranets sub-redes operadas por empresas e outras organizaes, normalmente protegi-das por firewalls. A funo de um firewall proteger uma intranet, impedindo a entrada

    Coulouris_01.indd 8Coulouris_01.indd 8 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 9

    ou a sada de mensagens no autorizadas. Um firewall implementado pela filtragem de mensagens recebidas e enviadas, por exemplo, de acordo com sua origem ou destino. Um firewall poderia, por exemplo, permitir que somente mensagens relacionadas com e--mail e acesso a Web entrem ou saiam da intranet que ele est protegendo. Os provedores de servios de Internet (ISPs, Internet Service Providers) so empresas que fornecem, atravs de links de banda larga e de outros tipos de conexes, o acesso a usurios in-dividuais, ou organizaes, Internet. Esse acesso permite que os usurios utilizem os diferentes servios disponibilizados pela Internet. Os provedores fornecem ainda alguns servios locais, como e-mail e hospedagem de pginas Web. As intranets so interligadas por meio de backbones. Um backbone um enlace de rede com uma alta capacidade de transmisso, empregando conexes via satlite, cabos de fibra ptica ou outros meios fsicos de transmisso que possuam uma grande largura de banda.

    Note que algumas empresas talvez no queiram conectar suas redes internas na Internet. Por exemplo, a polcia e outros rgos de segurana e ordem pblica provavel-mente tm pelo menos algumas intranets internas que esto isoladas do mundo exterior (o firewall mais eficiente possvel a ausncia de quaisquer conexes fsicas com a Internet). Os firewalls tambm podem ser problemticos em sistemas distribudos por impedir o acesso legtimo a servios, quando necessrio o compartilhamento de re-cursos entre usurios internos e externos. Assim, os firewalls frequentemente devem ser complementados por mecanismos e polticas mais refinados, conforme discutido no Captulo 11.

    A implementao da Internet e dos servios que ela suporta tem acarretado o desenvolvimento de solues prticas para muitos problemas dos sistemas distribudos (incluindo a maior parte daqueles definidos na Seo 1.5). Vamos destacar essas solu-es ao longo de todo o livro, apontando sua abrangncia e suas limitaes quando for apropriado.

    intranet

    ISP

    Computador de mesa:

    back

    bone

    back

    bone

    Enlace de satliteServidor:

    backbone

    Enlace de rede:

    Figura 1.3 Uma parte tpica da Internet.

    Coulouris_01.indd 9Coulouris_01.indd 9 23/05/13 09:1523/05/13 09:15

  • 10 Sistemas Distribudos, Conceitos e Projeto

    1.3.2 Computao mvel e ubquaOs avanos tecnolgicos na miniaturizao de dispositivos e interligao em rede sem fio tm levado cada vez mais integrao de equipamentos de computao pequenos e portteis com sistemas distribudos. Esses equipamentos incluem:

    Computadores notebook. Aparelhos portteis, incluindo telefones mveis, smartphones, equipamentos com

    GPS, pagers, assistentes digitais pessoais (PDAs), cmeras de vdeo e digitais. Aparelhos acoplados ao corpo, como relgios de pulso inteligentes com funciona-

    lidade semelhante ao de um PDA. Dispositivos incorporados em aparelhos, como mquinas de lavar, aparelhos de

    som de alta fidelidade, carros, geladeiras, etc.A portabilidade de muitos desses dispositivos, junto a sua capacidade de se conectar con-venientemente com redes em diferentes lugares, tornam a computao mvel possvel. Computao mvel a execuo de tarefas de computao enquanto o usurio est se deslocando de um lugar a outro ou visitando lugares diferentes de seu ambiente usual. Na computao mvel, os usurios que esto longe de suas intranets de base (a intranet do trabalho ou de sua residncia) podem acessar recursos por intermdio dos equipamentos que carregam consigo. Eles podem continuar a acessar a Internet, os recursos em sua in-tranet de base e, cada vez mais, existem condies para que os usurios utilizem recursos como impressoras ou mesmo pontos de venda, que esto convenientemente prximos, enquanto transitam. Esta ltima possibilidade tambm conhecida como computao com reconhecimento de localizao ou com reconhecimento de contexto. A mobilidade introduz vrios desafios para os sistemas distribudos, incluindo a necessidade de lidar com a conectividade varivel e mesmo com a desconexo, e a necessidade de manter o funcionamento em face da mobilidade do aparelho (consulte a discusso sobre transpa-rncia da mobilidade, na Seo 1.5.7).

    A computao ubqua, tambm denominada computao pervasiva, a utiliza-o de vrios dispositivos computacionais pequenos e baratos, que esto presentes nos ambientes fsicos dos usurios, incluindo suas casas, escritrios e at na rua. O termo pervasivo se destina a sugerir que pequenos equipamentos de computao finalmente se tornaro to entranhados nos objetos dirios que mal sero notados. Isto , seu com-portamento computacional ser transparente e intimamente vinculado sua funo fsica. Por sua vez, o termo ubquo d a noo de que o acesso a servios de computao est onipresente, isto , disponvel em qualquer lugar.

    A presena de computadores em toda parte s se torna til quando eles podem se comunicar uns com os outros. Por exemplo, pode ser conveniente para um usurio con-trolar sua mquina de lavar e seu aparelho de som de alta fidelidade a partir de um nico dispositivo universal de controle remoto em sua casa. Da mesma forma, seria cmodo a mquina de lavar enviar uma mensagem quando a lavagem tiver terminado.

    A computao ubqua e a computao mvel se sobrepem, pois, em princpio, o usurio mvel pode usar computadores que estejam em qualquer lugar. Porm, elas so distintas, de modo geral. A computao ubqua pode ajudar os usurios enquanto esto em um nico local, como em casa ou em um hospital. Do mesmo modo, a computao mvel tem vantagens, mesmo envolvendo apenas computadores e equipamentos conven-cionais isolados, como notebooks e impressoras.

    A Figura 1.4 mostra um usurio, visitante em uma organizao anfitri, que pode aces-sar servios locais a intranet dessa organizao, a Internet ou a sua intranet domstica.

    Coulouris_01.indd 10Coulouris_01.indd 10 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 11

    O usurio tem acesso a trs formas diferentes de conexo sem fio. Seu notebook tem uma maneira de se conectar com a rede local sem fio da organizao anfitri. Essa rede fornece cobertura de algumas centenas de metros (um andar de um edifcio, diga-mos) e se conecta ao restante da intranet anfitri por meio de um gateway ou ponto de acesso. O usurio tambm tem um telefone mvel (celular) que tem acesso Internet, permitindo acesso Web e a outros servios de Internet, restrito apenas pelo que pode ser apresentado em sua pequena tela. O telefone tambm fornece informaes locais por meio da funcionalidade de GPS incorporada. Por fim, o usurio est portando uma cmera digital, que se comunica por intermdio de uma rede sem fio pessoal (com al-cance de cerca de 10 m) com outro equipamento, como, por exemplo, uma impressora.

    Com uma infraestrutura conveniente, o usurio pode executar algumas tarefas no site anfitrio, usando os equipamentos que carrega consigo. Enquanto est no site an-fitrio, o usurio pode buscar os preos de aes mais recentes a partir de um servidor Web, utilizando seu celular, e tambm pode usar o GPS incorporado e o software de loca-lizao de rota para obter instrues para a localizao do site. Durante uma reunio com seus anfitries, o usurio pode lhes mostrar uma fotografia, enviando-a a partir da cmera digital, diretamente para uma impressora ou projetor (local) adequadamente ativado na sala de reunies (descoberto por meio de um servio de localizao). Isso exige apenas a comunicao sem fio entre a cmera e a impressora. Em princpio, eles podem enviar um documento de seus notebooks para a mesma impressora ou projetor, utilizando a rede local sem fio e as conexes Ethernet cabeadas com a impressora.

    Esse cenrio demonstra a necessidade de suportar operao conjunta espontnea, por meio da qual associaes entre dispositivos so criadas e destrudas rotineiramente, por exemplo, localizando e utilizando os equipamentos da anfitri (como as impresso-ras). O principal desafio que se aplica a tais situaes tornar a operao conjunta rpida e conveniente (isto , espontnea), mesmo que o usurio esteja em um ambiente onde nunca esteve. Isso significa permitir que o equipamento do visitante se comunique com a rede da anfitri e associ-lo a servios locais convenientes um processo chamado de descoberta de servio.

    A computao mvel e a computao ubqua representam reas de pesquisa ativa, e as vrias dimenses anteriores sero discutidas em profundidade no Captulo 19.

    Notebook

    Telefone

    ImpressoraCmera

    Internet

    Intranet antri Intranet domsticaRede local sem o

    mvel

    Site antrio

    Rede de telefonia 3G

    Sinal de satlite GPS

    Figura 1.4 Equipamentos portteis em um sistema distribudo.

    Coulouris_01.indd 11Coulouris_01.indd 11 23/05/13 09:1523/05/13 09:15

  • 12 Sistemas Distribudos, Conceitos e Projeto

    1.3 .3 Sistemas multimdia distribudosOutra tendncia importante o requisito de suportar servios multimdia em sistemas distribudos. Uma definio til de multimdia a capacidade de suportar diversos tipos de mdia de maneira integrada. de se esperar que um sistema distribudo suporte o ar-mazenamento, a transmisso e a apresentao do que frequentemente so referidos como tipos de mdia distintos, como imagens ou mensagens de texto. Um sistema multimdia distribudo deve ser capaz de executar as mesmas funes para tipos de mdia contnuos, como udio e vdeo, assim como armazenar e localizar arquivos de udio ou vdeo, trans-miti-los pela rede (possivelmente em tempo real, medida que os fluxos saem de uma cmera de vdeo), suportar a apresentao dos tipos de mdia para o usurio e, opcional-mente, tambm compartilhar os tipos de mdia por um grupo de usurios.

    A caracterstica fundamental dos tipos de mdia contnuos que eles incluem uma dimenso temporal e, de fato, a integridade do tipo de mdia depende fundamentalmente da preservao das relaes em tempo real entre seus elementos. Por exemplo, em uma apresentao de vdeo, necessrio preservar determinado ritmo de transferncia em ter-mos de quadros por segundo e, para fluxos em tempo real, determinado atraso ou latncia mxima para o envio dos quadros (esse um exemplo da qualidade do servio, discutida com mais detalhes na Seo 1.5.8, a seguir).

    As vantagens da computao multimdia distribuda so considerveis, pois uma ampla variedade de novos servios (multimdia) e aplicativos pode ser fornecida na rea de trabalho, incluindo o acesso a transmisses de televiso ao vivo ou gravadas, o acesso a bibliotecas de filmes que oferecem servios de vdeo sob demanda, o acesso a biblio-tecas de msicas, o fornecimento de recursos de udio e teleconferncia e os recursos de telefonia integrados, incluindo telefonia IP ou tecnologias relacionadas, como o Skype uma alternativa peer-to-peer telefonia IP (a infraestrutura de sistema distribudo que serve de base para o Skype est discutida na Seo 4.5.2). Note que essa tecnologia re-volucionria, desafiando os fabricantes a repensar muitos aparelhos. Por exemplo, qual o equipamento de entretenimento domstico bsico do futuro o computador, a televiso ou os console de games?

    Webca sting uma aplicao da tecnologia de multimdia distribuda. Webcasting a capacidade de transmitir mdia contnua (normalmente udio ou vdeo) pela Internet. Atualmente, normal eventos esportivos ou musicais importantes serem transmitidos dessa maneira, frequentemente atraindo um grande nmero de espectadores (por exem-plo, o concerto Live8 de 2005 atraiu cerca de 170.000 usurio simultneos em seu mo-mento de pico).

    Sistemas multimdia distribudos como o Webcasting impem exigncias conside-rveis na infraestrutura distribuda subjacente, em termos de:

    Dar suporte a uma variedade (extensvel) de formatos de codificao e criptografia, como a srie MPEG de padres (incluindo, por exemplo, o popular padro MP3, conhecido como MPEG-1, Audio Layer 3) e HDTV.

    Fornecer diversos mecanismos para garantir que a qualidade de servio desejada possa ser obtida.

    Fornecer estratgias de gerenciamento de recursos associadas, incluindo polticas de programao apropriadas para dar suporte qualidade de servio desejada.

    Fornecer estratgias de adaptao para lidar com a inevitvel situao, em sistemas abertos, em que a qualidade do servio no pode ser obtida ou mantida.

    Mais discusses sobre tais mecanismos podem ser encontradas no Captulo 20.

    Coulouris_01.indd 12Coulouris_01.indd 12 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 13

    1.3.4 Computao distribuda como um servio pblicoCom a crescente maturidade da infraestrutura dos sistemas distribudos, diversas empre-sas esto promovendo o conceito dos recursos distribudos como uma commodity ou um servio pblico, fazendo a analogia entre recursos distribudos e outros servios pblicos, como gua ou eletricidade. Nesse modelo, os recursos so supridos por fornecedores de servio apropriados e efetivamente alugados, em vez de pertencerem ao usurio final. Esse modelo se aplica tanto a recursos fsicos como a servios lgicos:

    Recursos fsicos, como armazenamento e processamento, podem se tornar dispon-veis para computadores ligados em rede, eliminando a necessidade de possurem, eles prprios, esses recursos. Em uma extremidade do espectro, um usurio pode op-tar por um recurso de armazenamento remoto para requisitos de armazenamento de arquivos (por exemplo, para dados multimdia, como fotografias, msica ou vdeo) e/ou para backups. Analogamente, essa estratgia permitiria a um usurio alugar um ou mais ns computacionais, para atender a suas necessidades de computao bsicas ou para fazer computao distribuda. Na outra extremidade do espectro, os usurios po-dem acessar sofisticados data centers (recursos interligados em rede que do acesso a repositrios de volumes de dados frequentemente grandes para usurios ou organi-zaes) ou mesmo infraestrutura computacional, usando os servios agora fornecidos por empresas como Amazon e Google. A virtualizao do sistema operacional uma tecnologia importante para essa estratgia, significando que os usurios podem ser atendidos por servios em um n virtual, em vez de fsico, oferecendo maior flexibi-lidade ao fornecedor de servio em termos de gerenciamento de recursos (a virtuali-zao do sistema operacional discutida com mais detalhes no Captulo 7).

    Servios de software (conforme definidos na Seo 1.4) tambm podem se tornar disponveis pela Internet global por meio dessa estratgia. De fato, diversas em-presas agora oferecem uma ampla variedade deles para aluguel, incluindo servios como e-mail e calendrios distribudos. O Google, por exemplo, empacota diversos servios empresariais sob o banner Google Apps [www.google.com I]. Esse avano possvel graas a padres combinados para servios de software, como, por exem-plo, os fornecidos pelos servios Web (consulte o Captulo 9).

    O termo computao em nuvem usado para capturar essa viso da computao como um servio pblico. Uma nuvem definida como um conjunto de servios de aplicativo, armazenamento e computao baseados na Internet, suficientes para suportar as necessi-dades da maioria dos usurios, permitindo assim que eles prescindam, em grande medida ou totalmente, do software local de armazenamento de dados ou de aplicativo (consulte a Figura 1.5). O termo tambm promove a viso de tudo como um servio de infraestrutura fsica ou virtual por meio de software, frequentemente pago com base na utilizao, em vez de na aquisio. Note que a computao em nuvem reduz os requisitos dos equi-pamentos dos usurios, permitindo que aparelhos de mesa ou portteis muito simples acessem uma variedade potencialmente ampla de recursos e servios.

    Geralmente, as nuvens so implementadas em cluster de computadores para forne-cer a escala e o desempenho necessrios exigidos por tais servios. Um cluster de com-putadores um conjunto de computadores interligados que cooperam estreitamente para fornecer um nico recurso de computao integrado de alto desempenho. Ampliando pro-jetos como o NOW (Network of Workstations) Project da Berkeley [Anderson et al. 1995, now.cs.berkeley.edu] e o Beowulf da NASA [www.beowulf.org], a tendncia no sentido de utilizar hardware de prateleira tanto para os computadores como para a interligao

    Coulouris_01.indd 13Coulouris_01.indd 13 23/05/13 09:1523/05/13 09:15

  • 14 Sistemas Distribudos, Conceitos e Projeto

    de redes. A maioria dos grupos consiste em PCs convencionais executando uma verso padro (s vezes reduzida) de um sistema operacional, como o GNU/Linux, interligados por uma rede local. Empresas como HP, Sun e IBM oferecem solues blade. Os servi-dores blade so elementos computacionais mnimos, contendo, por exemplo, recursos de processamento e armazenamento (memria principal). Um sistema blade consiste em um nmero potencialmente grande de servidores blade contidos em gabinetes e armrios es-pecficos, tambm denominados rack, mantidos em uma mesma instalao fsica. Outros elementos, como energia, refrigerao, armazenamento persistente (discos), ligao em rede e telas, so fornecidos pela instalao fisica ou por meio de solues virtualizadas (discutidas no Captulo 7). Com essa soluo, os servidores blade individuais podem ser muito menores e tambm mais baratos de produzir do que os PCs convencionais.

    O objetivo geral dos grupos de computadores fornecer servios na nuvem, in-cluindo recursos de computao de alto desempenho, mas tambm diversos outros ser-vios, englobando armazenamento de massa (por exemplo, por intermdio de centros de dados) ou servios de aplicativo mais elaborados, como pesquisa na Web (o Google, por exemplo, conta com uma arquitetura de grupo de computadores volumosa para imple-mentar seu mecanismo de busca e outros servios, conforme discutido no Captulo 21).

    A computao em grade (discutida no Captulo 9, Seo 9.7.2) tambm pode ser vista como uma forma de computao em nuvem. Em grande medida, os termos so sinnimos e, s vezes, mal definidos, mas a computao em grade geralmente pode ser vista como precursora do paradigma mais geral da computao em nuvem, com tendn-cia para o suporte para aplicativos cientficos.

    1.4 Enfoque no compartilhamento de recursosOs usurios esto to acostumados s vantagens do compartilhamento de recursos que podem facilmente ignorar seu significado. Rotineiramente, compartilhamos recursos de hardware (como impressoras), recursos de dados (como arquivos) e recursos com funcio-nalidade mais especfica (como os mecanismos de busca).

    Internet

    Servios de execuode aplicativo

    Servios de armazenamento

    Servios de processamentocomputacionais

    Clientes

    Figura 1.5 Computao em nuvem.

    Coulouris_01.indd 14Coulouris_01.indd 14 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 15

    Do ponto de vista do hardware, compartilhamos equipamentos como impressoras e discos para reduzir os custos. Contudo, a maior importncia para os usurios o comparti-lhamento dos recursos em um nvel de abstrao mais alto, como informaes necessrias s suas aplicaes, ao seu trabalho dirio e em suas atividades sociais. Por exemplo, os usurios se preocupam em compartilhar informaes atravs de um banco de dados ou de um conjunto de pginas Web e no com discos ou processadores em que eles esto armazenados. Analogamente, os usurios pensam em termos de recursos compartilhados, como um mecanismo de busca ou um conversor de moeda corrente, sem considerar o servidor (ou servidores) que os fornecem.

    Na prtica, os padres de compartilhamento de recursos variam amplamente na abrangncia e no quanto os usurios trabalham em conjunto. Em um extremo, temos um mecanismo de busca na Web que fornece um recurso para usurios de todo o mundo, usurios estes que nunca entram em contato diretamente. No outro extremo, no traba-lho cooperativo apoiado por computador, um grupo de usurios colabora diretamente compartilhando recursos, como documentos, em um pequeno grupo fechado. O padro de compartilhamento e a distribuio geogrfica dos usurios determinam quais mecanis-mos o sistema deve fornecer para coordenar as aes dos usurios.

    O termo servio usado para designar uma parte distinta de um sistema computa-cional que gerencia um conjunto de recursos relacionados e apresenta sua funcionalidade para usurios e aplicativos. Por exemplo, acessamos arquivos compartilhados por inter-mdio de um servio de sistema de arquivos; enviamos documentos para impressoras por meio de um servio de impresso; adquirimos bens por meio de um servio de pa-gamento eletrnico. O nico acesso que temos ao servio por intermdio do conjunto de operaes que ele exporta. Por exemplo, um servio de sistema de arquivos fornece operaes de leitura, escrita e excluso dos arquivos.

    Em parte, o fato de os servios restringirem o acesso ao recurso a um conjunto de operaes bem definidas uma prtica padro na engenharia de software, mas isso tam-bm reflete a organizao fsica dos sistemas distribudos. Em um sistema distribudo, os recursos so fisicamente encapsulados dentro dos computadores e s podem ser aces-sados a partir de outros computadores por intermdio de mecanismos de comunicao. Para se obter um compartilhamento eficiente, cada recurso deve ser gerenciado por um programa que oferea uma interface de comunicao, permitindo ao recurso ser acessado e atualizado de forma confivel e consistente.

    O termo servidor provavelmente conhecido da maioria dos leitores. Ele se refere a um programa em execuo (um processo) em um computador interligado em rede, que aceita pedidos de programas em execuo em outros computadores para efetuar um servio e responder apropriadamente. Os processos que realizam os pedidos so referidos como clientes e a estratgia geral conhecida como computao cliente-servidor. Nessa estra-tgia, os pedidos so enviados em mensagens dos clientes para um servidor, e as respostas so enviadas do servidor para os clientes. Quando o cliente envia um pedido para que uma operao seja efetuada, dizemos que o cliente requisita uma operao no servidor. Uma interao completa entre um cliente e um servidor, desde quando o cliente envia seu pedido at o momento em que recebe a resposta do servidor, chamada de requisio remota.

    O mesmo processo pode ser tanto cliente como servidor, pois, s vezes, os ser-vidores solicitam operaes em outros servidores. Os termos cliente e servidor s se aplicam s funes desempenhadas em um nico pedido. Os clientes so ativos (fazendo pedidos) e os servidores so passivos (sendo ativados somente ao receberem pedidos); os servidores funcionam continuamente, enquanto os clientes duram apenas enquanto os aplicativos dos quais fazem parte estiverem ativos.

    Coulouris_01.indd 15Coulouris_01.indd 15 23/05/13 09:1523/05/13 09:15

  • 16 Sistemas Distribudos, Conceitos e Projeto

    Note que, por padro, os termos cliente e servidor se referem a processos e no aos computadores em que so executados, embora no jargo comum esses termos tambm se refiram aos computadores em si. Outra distino, que discutiremos no Captulo 5, que, em um sistema distribudo escrito em uma linguagem orientada a objetos, os recursos po-dem ser encapsulados como objetos e acessados por objetos clientes; nesse caso, falamos em um objeto cliente invocando um mtodo em um objeto servidor.

    Muitos sistemas distribudos (mas certamente no todos) podem ser totalmente construdos na forma de clientes e servidores. A World Wide Web, o e-mail e as impres-soras interligadas em rede so exemplos que se encaixam nesse modelo. Discutiremos alternativas para os sistemas cliente-servidor no Captulo 2.

    Um navegador Web em execuo um exemplo de cliente. O navegador Web se comunica com um servidor Web para solicitar pginas Web. Examinaremos a Web com mais detalhes na Seo 1.6.

    1.5 DesafiosOs exemplos da Seo 1.2 ilustram a abrangncia dos sistemas distribudos e os proble-mas que surgem em seu projeto. Em muitos deles, desafios significativos foram encon-trados e superados. Como a abrangncia e a escala dos sistemas distribudos e dos apli-cativos so maiores, provvel que eles apresentem os mesmos desafios e ainda outros. Nesta seo, descrevemos os principais desafios dos sistemas distribudos.

    1.5.1 HeterogeneidadeA Internet permite aos usurios acessarem servios e executarem aplicativos por meio de um conjunto heterogneo de computadores e redes. A heterogeneidade (isto , variedade e diferena) se aplica aos seguintes aspectos:

    redes; hardware de computador; sistemas operacionais; linguagens de programao; implementaes de diferentes desenvolvedores.

    Embora a Internet seja composta de muitos tipos de redes (como ilustrado na Figura 1.3), suas diferenas so mascaradas pelo fato de que todos os computadores ligados a elas utilizam protocolos Internet para se comunicar. Por exemplo, um computador que possui uma placa Ethernet tem uma implementao dos protocolos Internet, enquanto um com-putador em um tipo diferente de rede tem uma implementao dos protocolos Internet para essa rede. O Captulo 3 explica como os protocolos Internet so implementados em uma variedade de redes diferentes.

    Os tipos de dados, como os inteiros, podem ser representados de diversas maneiras em diferentes tipos de hardware; por exemplo, existem duas alternativas para a ordem em que os bytes de valores inteiros so armazenados: uma iniciando a partir do byte mais significativo e outra, a partir do byte menos significativo. Essas diferenas na representa-o devem ser consideradas, caso mensagens devam ser trocadas entre programas sendo executados em diferentes hardwares.

    Embora os sistemas operacionais de todos os computadores na Internet precisem in-cluir uma implementao dos protocolos Internet, nem todos fornecem, necessariamente,

    Coulouris_01.indd 16Coulouris_01.indd 16 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 17

    a mesma interface de programao de aplicativos para esses protocolos. Por exemplo, as chamadas para troca de mensagens no UNIX so diferentes das chamadas no Windows.

    Diferentes linguagens de programao usam diferentes representaes para carac-teres e estruturas de dados, como vetores e registros. Essas diferenas devem ser conside-radas, caso programas escritos em diferentes linguagens precisem se comunicar.

    Os programas escritos por diferentes desenvolvedores no podem se comunicar, a menos que utilizem padres comuns; por exemplo, para realizar a comunicao via rede e usar uma mesma representao de tipos de dados primitivos e estruturas de dados nas mensagens. Para que isso acontea, padres precisam ser estabelecidos e adotados. As-sim o caso dos protocolos Internet.Middleware O termo middleware se aplica a uma camada de software que fornece uma abstrao de programao, assim como o mascaramento da heterogeneidade das redes, do hardware, dos sistemas operacionais e das linguagens de programao subjacentes. O CORBA (Common Object Request Broker), que ser descrito nos Captulos 4, 5 e 8, um exemplo. Alguns middlewares, como o Java RMI (Remote Method Invocation) (veja o Captulo 5), suportam apenas uma linguagem de programao. A maioria implemen-tada sobre os protocolos Internet, os quais escondem a diferena existente entre redes subjacentes. Todo middleware, em si, trata das diferenas em nvel dos sistemas opera-cionais e do hardware o modo como isso feito ser o tpico principal do Captulo 4.

    Alm de resolver os problemas de heterogeneidade, o middleware fornece um modelo computacional uniforme para ser usado pelos programadores de servios e de aplicativos distribudos. Os modelos possveis incluem a invocao remota de objetos, a notificao remota de eventos, o acesso remoto a banco de dados e o processamento de transao distri-budo. Por exemplo, o CORBA fornece invocao remota de objetos, a qual permite que um objeto, em um programa sendo executado em um computador, invoque um mtodo de um objeto em um programa executado em outro computador. Sua implementao oculta o fato de que as mensagens passam por uma rede para enviar o pedido de invocao e sua resposta.Heterogeneidade e migrao de cdigo O termo migrao de cdigo, ou ainda, cdigo mvel, usado para se referir ao cdigo de programa que pode ser transferido de um computador para outro e ser executado no destino os applets Java so um exemplo. Um cdigo destinado execuo em um computador no necessariamente adequado para outro computador, pois, normalmente, os programas executveis so especficos a um conjunto de instrues e a um sistema operacional.

    A estratgia de mquina virtual oferece uma maneira de tornar um cdigo execut-vel em uma variedade de computadores hospedeiros: o compilador de uma linguagem em particular gera cdigo para uma mquina virtual, em vez de cdigo para um processador e sistema operacional especficos. Por exemplo, o compilador Java produz cdigo para uma mquina virtual Java (JVM, Java Virtual Machine), a qual o executa por meio de interpretao. A mquina virtual Java precisa ser implementada uma vez para cada tipo de computador a fim de que os programas Java sejam executados.

    Atualmente, a forma mais usada de cdigo mvel a incluso de programas Java-script em algumas pginas Web carregadas nos navegadores clientes. Essa extenso da tecnologia da Web ser discutida com mais detalhes na Seo 1.6, a seguir.

    1.5.2 Sistemas abertosDiz-se que um sistema computacional aberto quando ele pode ser estendido e reim-plementado de vrias maneiras. O fato de um sistema distribudo ser ou no um sistema

    Coulouris_01.indd 17Coulouris_01.indd 17 23/05/13 09:1523/05/13 09:15

  • 18 Sistemas Distribudos, Conceitos e Projeto

    aberto determinado principalmente pelo grau com que novos servios de compartilha-mento de recursos podem ser adicionados e disponibilizados para uso por uma variedade de programas clientes.

    A caracterstica de sistema aberto obtida a partir do momento em que a espe-cificao e a documentao das principais interfaces de software dos componentes de um sistema esto disponveis para os desenvolvedores de software. Em uma palavra, as principais interfaces so publicadas. Esse processo similar quele realizado por orga-nizaes de padronizao, porm, frequentemente, ignora os procedimentos oficiais, os quais normalmente so pesados e lentos.

    Entretanto, a publicao de interfaces apenas o ponto de partida para adicionar e estender servios em um sistema distribudo. O maior desafio para os projetistas encarar a complexidade de sistemas distribudos compostos por muitos componentes e elaborados por diferentes pessoas.

    Os projetistas dos protocolos Internet elaboraram uma srie de documentos, chama-dos Requests For Comments, ou RFCs, cada um identificado por um nmero. No incio dos anos 80, as especificaes dos protocolos de comunicao Internet foram publicadas nessa srie, acompanhadas de especificaes de aplicativos executados com eles, como transferncia de arquivos, e-mail e telnet. Essa prtica continua e forma a base da docu-mentao tcnica da Internet. Essa srie inclui discusses, assim como as especificaes dos protocolos (pode-se obter cpias das RFCs no endereo [www.ietf.org]). Dessa forma, com a publicao dos protocolos de comunicao Internet, permitiu-se a construo de uma variedade de sistemas e aplicativos para a Internet, incluindo a Web. As RFCs no so os nicos meios de publicao. Por exemplo, o W3C (World Wide Web Consortium) de-senvolve e publica padres relacionados ao funcionamento da Web (veja [www.w3.org]).

    Os sistemas projetados a partir de padres pblicos so chamados de sistemas distri-budos abertos, para reforar o fato de que eles so extensveis. Eles podem ser ampliados em nvel de hardware, pela adio de computadores em uma rede, e em nvel de software, pela introduo de novos servios ou pela reimplementao dos antigos, permitindo aos programas aplicativos compartilharem recursos. Uma vantagem adicional, frequentemen-te mencionada para sistemas abertos, sua independncia de fornecedores individuais.

    Resumindo: Os sistemas abertos so caracterizados pelo fato de suas principais interfaces serem

    publicadas. Os sistemas distribudos abertos so baseados na estipulao de um mecanismo de

    comunicao uniforme e em interfaces publicadas para acesso aos recursos com-partilhados.

    Os sistemas distribudos abertos podem ser construdos a partir de hardware e soft-ware heterogneo, possivelmente de diferentes fornecedores. Para que um sistema funcione corretamente, a compatibilidade de cada componente com o padro publi-cado deve ser cuidadosamente testada e verificada.

    1.5.3 SeguranaMuitos recursos de informao que se tornam disponveis e so mantidos em sistemas distribudos tm um alto valor intrnseco para seus usurios. Portanto, sua segurana de considervel importncia. A segurana de recursos de informao tem trs componentes: confidencialidade (proteo contra exposio para pessoas no autorizadas), integridade (proteo contra alterao ou dano) e disponibilidade (proteo contra interferncia com os meios de acesso aos recursos).

    Coulouris_01.indd 18Coulouris_01.indd 18 23/05/13 09:1523/05/13 09:15

  • Captulo 1 Caracterizao de Sistemas Distribudos 19

    A Seo 1.1 mostrou que, embora a Internet permita que um programa em um computador se comunique com um programa em outro computador, independentemente de sua localizao, existem riscos de segurana associados ao livre acesso a todos os recursos em uma intranet. Embora um firewall possa ser usado para formar uma barreira em torno de uma intranet, restringindo o trfego que pode entrar ou sair, isso no garante o uso apropriado dos recursos pelos usurios