1.fundamentos slides

52
 INE 5418 INE 5418 Computação Distribuída Computação Distribuída Professor: Professor: Frank Siqueira Frank Siqueira INE INE –  UFSC UFSC [email protected] [email protected]

Upload: antonio-neto

Post on 21-Jul-2015

25 views

Category:

Documents


0 download

TRANSCRIPT

INE 5418

Computao DistribudaProfessor: Frank Siqueira INE UFSC [email protected]

Contedo Programtico1.

Fundamentos de Computao DistribudaArquitetura de Sistemas Distribudos; Paradigmas de Computao Distribuda; Suporte Computacional para Aplicaes Distribudas; Comunicao entre Processos; Sistemas de Arquivos Distribudos

2.

Tecnologias para Computao DistribudaObjetos Distribudos; Web Services; Redes Peer-to-Peer; Services; Peer-to-Peer; Middleware Orientado a Mensagens; Memria Compartilhada Distribuda; Grids Computacionais

3.

Algortimos para Computao DistribudaSegurana de Funcionamento; Comunicao em Grupo; Coordenao e Acordo; Sincronizao

Recursos ComputacionaisPgina da disciplina http://www.inf.ufsc.br/~frank/INE5418 Lista de e-mails [email protected] [email protected] Linguagem de Programao Java SE (opcional: C ou C++)

Unidade 1

Fundamentos de Computao DistribudaArquitetura de Sistemas Distribudos Paradigmas de Computao Distribuda Suporte Comp. para Aplic. Distribudas Aplic. Comunicao entre Processos Sistemas de Arquivos Distribudos

Panorama AtualSistemas computacionais esto cada vez mais elaborados e complexos Grande parte das mquinas interligada por redes de computadores

Computao Distribuda Sistemas Distribudos Maior poder de processamento Maior carga, maior nmero de usurios, ... Melhor tempo de resposta, Maior confiabilidade ...5

Fundamentos de Computao DistribudaDefinio de Computao DistribudaConsiste em executar aplicaes cooperantes em mquinas diferentes TornouTornou-se possvel a partir da popularizao das redes de computadores

Aplicaes so executadas em mquinas diferentes interligadas por uma redeIntranets Internet Outras redes pblicas ou privadas

6

Fundamentos de Computao DistribudaAcoplamentoSistemas distribudos so fracamente acoplados, ou seja, trocam dados atravs de um meio relativamente lento e pouco confivel

PrevisibilidadeO comportamento de sistemas distribudos imprevisvel devido ao uso da rede e possibilidade de ocorrerem falhas em mquinas e na rede7

Fundamentos de Computao DistribudaInfluncia do TempoSistemas distribudos so bastante influenciados pelo tempo de comunicao pela rede; em geral no h uma referncia de tempo global

ControleSistemas distribudos no tm total controle sobre todos os recursos computacionais utilizados, pois empregam tambm recursos de terceiros

8

Fundamentos de Computao DistribudaVantagensUsam melhor o poder de processamento Apresentam um melhor desempenho Permitem compartilhar dados e recursos Podem apresentar maior confiabilidade Permitem reutilizar servios j disponveis Atendem um maior nmero de usurios ...9

Fundamentos de Computao DistribudaDificuldadesDesenvolver, gerenciar e manter o sistema Controlar o acesso concorrente a dados e a recursos compartilhados Evitar que falhas de mquinas ou da rede comprometam o funcionamento do sistema Garantir a segurana do sistema e o sigilo dos dados trocados entre mquinas Lidar com a heterogeneidade do ambiente ...10

Arquitetura de Sistemas DistribudosDiversos dispositivos podem ser usados para execuo de aplicaes distribudasComputadores Celulares Sensores Tablets Dispositivos Embarcados etc.11

Arquitetura de Sistemas DistribudosRecursos computacionais podem ser reunidos em:Cluster (agregado): processadores interligadospor barramento ou rede de alta velocidade Grid (grade): renem recursos heterogneos dispersos geograficamente (distribudos) interligados por uma rede de longa distncia Cloud (nuvem): conjunto compartilhado de recursos (servidores, armazenamento, rede, servidores, armazenamento, rede, aplicaes, aplicaes, etc.), distribudos ou no, que so no, alocados temporariamente para os usurios12

Arquitetura de Sistemas DistribudosComputao Distribuda requer o uso de redes, como uma Intranet ou a Internet

13

Paradigmas de Computao DistribudaAs partes que compem um sistema distribudo interagem atravs da rede para trabalhar de forma cooperativaTrocam dados / mensagens Utilizam os servios de comunicao fornecidos pelo sistema hospedeiro Adotam protocolos de comunicao para que possam entender uns aos outros

14

Paradigmas de Computao DistribudaProtocolosEstabelecem caminhos virtuais de comunicao Duas entidades precisam usar os mesmos protocolos para trocar informaes

Protocolo Meio de Transmisso15

Paradigmas de Computao DistribudaProtocolosCom licena Pois no Que horas so? So 8 horas. Obrigado! De nada. Pede conexo Aceita conexo Envia mensagem Confirma recepo Fecha conexo Libera conexo

tempo16

Paradigmas de Computao DistribudaServios de comunicaoServio sem Conexo: cada unidade de dados enviada independentemente das demais

Servio com Conexo: dados so enviados atravs de um canal de comunicaoCanal de Comunicao17

Paradigmas de Computao DistribudaFormas de InteraoTroca de mensagens: um processo envia uma mensagens: mensagem pela rede destinada a um ou mais processos Cliente-servidor: Cliente-servidor: o servidor incorpora toda a lgica e os dados necessrios para executar um servio, que executado por solicitao de um ou mais clientes remotos Memria compartilhada: rea de memria compartilhada: pode ser acessada por diversos processos rodando em diferentes mquinas

18

Paradigmas de Computao DistribudaCaractersticas dos servios de comunicao:Abrangncia: local ou remota Participantes: 1 1, 1 N ou M N Tamanho das mensagens: fixo ou varivel; limitado ou no Sincronismo: comunicao sncrona, assncrona ou semi-sncrona semi-

19

Suporte Computacional para Aplicaes DistribudasSuportes para Computao Distribuda devem fornecer:Mecanismos para execuo distribuda de programas Mecanismos para controle de concorrncia Mecanismos para comunicao entre processos Ferramentas e mecanismos para desenvolvimento, testes, gerenciamento, controle, segurana, tolerncia a faltas, etc.20

Suporte Computacional para Aplicaes DistribudasSuporte para Computao DistribudaAPIs e Bibliotecas: fornecem rotinas para Bibliotecas: comunicao entre processos Ex.: UNIX Sockets, WinSock, java.net, etc. Middleware para Programao Distribuda: Distribuda: fornece suporte para criar / executar programas distribudos. Ex.: CORBA, COM, etc. Servidores de Aplicao: permitem o acesso a Aplicao: aplicaes via rede. Ex.: Tomcat, JBoss, etc. Linguagens e sistemas operacionais distribudos caram em desuso por no suportarem heterogeneidade de ambiente

21

Suporte Computacional para Aplicaes DistribudasAPIs e Bibliotecas para Comp. DistribudaMquina 1Aplicao Aplicao Servio

Mquina NAplicao Servio Aplicao

API / Biblioteca Sistema Operacional Hardware ... ...

API / Biblioteca Sistema Operacional Hardware22

Suporte Computacional para Aplicaes DistribudasMiddleware para Programao DistribudaMquina 1Aplicao Aplicao Servio

Mquina NAplicao Servio Aplicao

Middleware para Programao Distribuda Sistema Operacional Hardware ... ... Sistema Operacional Hardware23

Suporte Computacional para Aplicaes DistribudasServidor de AplicaoMquina 1Cliente Cliente Cliente

Mquina NAplicao Aplicao Aplicao

Servidor de Aplicao ... ... Sistema Operacional Hardware24

Sistema Operacional Hardware

Suporte Computacional para Aplicaes DistribudasAPIs de comunicaoPermitem que aplicaes troquem dados Fornecem primitivas de comunicao que podem ser chamadas a partir do cdigo Provem acesso aos servios de comunicao, que podem assim ser usados pelas aplicaesPrograma

API S.O.25

Suporte Computacional para Aplicaes DistribudasAPIs de Comunicao de Sist. OperacionaisMecanismos fornecidos pelos S.O.s permitem enviar mensagens (trechos de memria) de um processo a outro Alguns S.O.s permitem que sejam criadas reas de memria compartilhadas entre dois ou mais processosP1 P2

P1

memria

P2

26

Suporte Computacional para Aplicaes DistribudasExemplos de APIs de comunicao:Pipes: canais de comunicao locais Sockets: portas de comunicao locais ou de rede (verso segura: SSL) Suportes de RPC (Remote Procedure Call): permitem chamar procedimentos/mtodos remotamente (ex.: RMI, CORBA, COM, ) Canais de eventos: permitem notificar threads e processos dos eventos ocorridos no sistema (Ex.: JMS, CORBA Notification Service, ) 27

Suporte Computacional para Aplicaes DistribudasMecanismos de comunicao do UNIXSignals e Pipes (comunicao local) Sockets

Mecanismos de comunicao do WindowsPipes e Mailslots (comunicao local)WinSock Microsoft RPC Memria compartilhada: File Mapping e Dynamic Data Exchange (DDE) Object Linking and Embedding (OLE) Component Object Model (COM)28

Comunicao entre ProcessosSocketAbstrao que representa uma porta de comucomunicao bidirecional associada a um processo

Principais Tipos de SocketSocket Datagrama: envia/recebe datagramas sem criar conexo; usa protocolo UDP Socket Multicast: recebe as mensagens endereadas a um grupo; usa UDP multicast Socket Stream: estabelece uma conexo com outro socket; usa protocolo TCP29

Comunicao entre ProcessosOperaes com Sockets DatagramaCriar um socket datagrama:DatagramSocket s = new DatagramSocket(porta);

Criar pacotes de dados para envio:DatagramPacket pack = new DatagramPacket(msg, tamanho, destino, porta);

Enviar dados: s.send(pack); Criar pacotes de dados para recepo:DatagramPacket pack = new DatagramPacket(msg,tam);

Receber dados: s.receive(pack); Ler dados do pacote: pack.getData()30

Comunicao entre ProcessosSockets Datagrama Enviotry { DatagramSocket socket = new DatagramSocket(); InetAddress destino = InetAddress.getByName( "127.0.0.1"); String mensagem = "Hello"; byte[] dados = mensagem.getBytes(); int porta = 5000; DatagramPacket pacote = new DatagramPacket( dados, dados.length, destino, porta); socket.send(pacote); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }31

Comunicao entre ProcessosSockets Datagrama Recepotry { int porta = 5000; DatagramSocket socket = new DatagramSocket(porta); byte[] dados = new byte[100]; DatagramPacket pacote = new DatagramPacket( dados, dados.length); socket.receive(pacote); String mensagem = new String(pacote.getData(), 0, pacote.getLength() ); System.out.println("Mensagem: " + mensagem); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }32

Comunicao entre ProcessosSockets MulticastPermitem o envio simultneo de datagramas a grupos de destinatrios Grupos multicast so identificados por endereos IP de 224.0.0.0 a 239.255.255.255Grupo Multicast

Emissores

33

Comunicao entre ProcessosSockets MulticastVrios emissores podem mandar mensagens para o grupo (ou seja, mensagens vo de X emissores Y receptores) Emissor no precisa fazer parte do grupo para enviar mensagens ao grupo, e nem precisa saber quem so os seus membros; basta conhecer o endereo IP do grupo O receptor entra em um grupo (se torna um membro do grupo) e passa a receber as mensagens destinadas ao grupo34

Comunicao entre ProcessosSockets Multicast Enviotry { DatagramSocket socket = new DatagramSocket(); InetAddress grupo = InetAddress.getByName( "230.1.2.3"); String mensagem = "Hello"; byte[] dados = mensagem.getBytes(); int porta = 5000; DatagramPacket pacote = new DatagramPacket( dados, dados.length, grupo, porta); socket.send(pacote); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }35

Comunicao entre ProcessosSockets Multicast Recepotry { int porta = 5000; MulticastSocket msocket = new MulticastSocket(porta); InetAddress grupo = InetAddress.getByName( "230.1.2.3"); msocket.joinGroup(grupo); byte[] dados = new byte[100]; DatagramPacket pacote = new DatagramPacket( dados, dados.length); msocket.receive(pacote); System.out.println("Mensagem: " + new String(pacote.getData(), 0, pacote.getLength())); } catch (Exception e) {e.printStackTrace(); }

36

Comunicao entre ProcessosSockets StreamEstabelecem canais de comunicao entre aplicaes, permitindo troca de dados pela rede Adotam o paradigma cliente-servidor clienteCliente: pede para conectar ao servidor Servidor: aguarda conexes dos clientes

Cliente

Servidor

37

Comunicao entre ProcessosOperaes com Sockets Stream no ServidorCriar um socket servidor:ServerSocket s = new ServerSocket(porta, maxClientes);

Aguardar conexo: Socket c = s.accept(); Obter nome do host conectado:String host = c.getInetAddress().getHostName();

Criar fluxos de comunicao:ObjectInputStream in = new ObjectInputStream(c.getInputStream()); ObjectOutputStream out = new ObjectOutputStream(c.getOutputStream());

Fechar conexo: in.close(); out.close(); c.close();38

Comunicao entre ProcessosOperaes com Sockets Stream no ClienteCriar um socket cliente:Socket c = new Socket( InetAddress. getByName("servidor.com "), porta );

Criar fluxo, enviar e receber dados, e fechar: idem ao servidor

Excees geradasSocketException UnknownHostException IOException39

Comunicao entre ProcessosSockets Stream Servidortry { ServerSocket s = new ServerSocket(5000, 10); Socket c = s.accept(); ObjectOutputStream out = new ObjectOutputStream( c.getOutputStream()); output.flush(); ObjectInputStream input = new ObjectInputStream( c.getInputStream() ); String mensagem = (String) input.readObject(); String resposta = "Ol Cliente"; output.writeObject(resposta); output.flush(); } catch (Exception e) { e.printStackTrace(); }40

Comunicao entre ProcessosSockets Stream Clientetry { Socket socket = new Socket(InetAddress.getByName( "127.0.0.1"), 5000); ObjectOutputStream out = new ObjectOutputStream( socket.getOutputStream()); output.flush(); ObjectInputStream input = new ObjectInputStream( socket.getInputStream() ); String mensagem = "Ol Servidor"; output.writeObject(mensagem); output.flush(); String resposta = (String) input.readObject(); } catch (Exception e) { e.printStackTrace(); }

41

Sistemas de Arquivos DistribudosDefiniesUm sistema de arquivos distribudo permite que arquivos de computadores remotos sejam acessados como se estivessem armazenados no computador local Um computador da rede compartilha um diretrio (pasta) ou volume, que pode ser montado em outro computador da rede, passando a ser visto como uma unidade de disco (Windows) ou como um diretrio do sistema de arquivos (UNIX/Linux)

42

Sistemas de Arquivos DistribudosVantagensPermite que o usurio acesse seus arquivos em qualquer computador de uma rede Facilita o compartilhamento de arquivos entre os usurios da rede Simplifica a administrao dos computadores da rede, provendo um ponto central para armazenamento de dados e programas Pode ser usado para efetuar backup remoto de arquivos locais43

Sistemas de Arquivos DistribudosRequisitos desejveisTransparncia de acesso e de localizao Funcionalidades e desempenho comparveis a um sistema de arquivos convencional Controle de acesso Controle de concorrncia Heterogeneidade de hardware e SO Consistncia Escalabilidade Tolerncia a falhas

44

Sistemas de Arquivos DistribudosAcesso a arquivosAs mesmas chamadas de sistema ou classes da API usadas para acesso a arquivos locais so utilizadas no acesso a arquivos remotos No UNIX/Linux: chamadas de sistema open, close, read, write, etc. No Windows: chamadas de sistema CreateFile, ReadFile, WriteFile, CloseHandle, etc. Em Java: classes da API FileInputStream, FileOutputStream, FileReader, FileWriter, etc.45

Sistemas de Arquivos DistribudosMdulo de Diretrio Mdulo de Arquivo Mdulo de Controle de Acesso Mdulo de Acesso a Arquivo Mdulo de Bloco Mdulo de Dispositivo Relaciona nomes com IDs de arquivos

Relaciona IDs de arquivos com arquivos fsicos Verifica se o usurio possui permisso para efetuar a operao solicitada L ou escreve dados ou atributos de um arquivo

Acessa e aloca blocos de disco Efetua operaes de entrada e sada no disco Gerencia o uso de buffers46

Sistemas de Arquivos DistribudosSun Network File System (NFS)Client computer Server computer Application Application program program UNIX system calls UNIX kernel UNIX kernel Virtual file system Local UNIX file systemOther file system

Virtual file system Remote

NFS client NFS protocol

NFS server

UNIX file system

Coulouris, Dollimore & Kindberg Coulouris,

47

Sistemas de Arquivos DistribudosExportao e montagem de diretrios NFSServer 1 (root) Client (root) Server 2 (root)

export

...

vmunix

usr

nfs

Remote people mount ... students x staff

Remote mount users

big jon bob

jim ann jane joe

Coulouris, Dollimore & Kindberg Coulouris,48

Sistemas de Arquivos DistribudosConfigurao do NFS/etc/exports : contm os diretrios exportados etc/pela mquina local para as demais mquinas da rede /etc/fstab : lista os diretrios remotos que etc/ devem ser montados na mquina local

Comandos do NFSexportfs mount49

Sistemas de Arquivos DistribudosEvoluo do NFSNFSv1: verso de desenvolvimento, usada apenas internamente na Sun NFSv2: 1 release; comunicao entre cliente e servidor atravs de UDP (no confivel) NFSv3: adicionou suporte para comunicao atravs de TCP (confivel), para uso em WANs NFSv4: atual; desenvolvida no mbito da IETF; suporta a replicao de volumes de dados50

Sistemas de Arquivos DistribudosAndrew File System (AFS)Desenvolvido com o intuito de permitir a replicao de volumes de dados Criado na Univ. de Carnegie Mellon, USA Mellon, TornouTornou-se um produto da Transarc, que Transarc, posteriormente foi adquirida pela IBM IBM deixou de dar suporte ao produto e o disponibilizou como software livre (OpenAFS) (OpenAFS)

51

Sistemas de Arquivos DistribudosServer Message Block (SMB) / Common Internet File System (CIFS)Suportado nativamente no Windows para compartilhamento de arquivos, perifricos, etc. Implementado tambm no UNIX/Linux por meio do servio Samba Pode ser construdo sobre diversos protocolos de comunicao, como NetBIOS, TCP/IP, etc. NetBIOS,