Sistemas Distribuídos Aula 10

Documentos relacionados
Sistemas Distribuídos: Conceitos e Projeto RPC e RMI

Comunicação entre Processos

Sistemas Distribuídos

Sistemas Operacionais Distribuídos e de Redes

INTRODUÇÃO. RPC x RMI

Sistemas Distribuídos

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

COMUNICAÇÃO ENTRE PROCESSOS

Sistemas Distribuídos

Vamos fazer um pequeno experimento

Sistemas Operacionais II

Programação com Sockets

Sistemas Distribuídos

Principais conceitos de CORBA

Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens

Sistemas Operacionais II

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Sistemas Distribuídos

Sistemas Distribuídos

SIST706 Sistemas Distribuídos

Projecto hipotético para resolvermos hoje

Sistemas Distribuídos Aula 3

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Características de Sistemas Distribuídos

Sistemas Distribuídos

Dados em programas são estruturados, enquanto que mensagens carregam informação seqüencial: Linearização x Restauração de dados Requisição

Características de Sistemas Distribuídos


Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Protocolo Request-Reply

Arquitetura de sistemas distribuídos

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Infra-Estrutura de Software

Sistemas Distribuídos

Tecnologias de Distribuição e Integração. Quais as preocupações a ter com um sistema distribuído?

Sistemas Distribuídos Capítulo 3 - Aula 3

Sistemas Distribuídos Aula 2

Comunicação. capítulo

Fundamentos de Sistemas Operacionais

COMPUTAÇÃO DISTRIBUÍDA

ARQUITETURA DE SISTEMAS DISTRIBUÍDOS. Aula 1- Introdução aos Sistemas Distribuídos

Sistemas Distribuídos Aula 8

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

O que é um sistema distribuído?

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Sistemas Distribuídos. Coulouris Capítulo 4

LEIC/LERC 2007/08 Exame de Época Especial de Sistemas Distribuídos

Processos ca 3 pítulo

Desenvolvimento de Aplicações Distribuídas

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Introdução aos Sistemas Distribuídos

Sistemas Distribuídos Aula 13

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Arquitetura de Rede. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina: Redes de Computadores I

Arquiteturas. Capítulo 2

Redes de Computadores

Programação de Sistemas Distribuídos e Concorrência

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

SISTEMAS DISTRIBUIDOS

Camada de Aplicação da Arquitetura TCP/IP

Aula 5 TECNOLOGIA EM JOGOS DIGITAIS JOGOS MULTI PLAYER. Marcelo Henrique dos Santos

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Arquiteturas. capítulo

Sistemas Distribuídos

Sistemas Operacionais II

SISTEMAS DISTRIBUIDOS

SIDs: ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

SPEEDMiddleware - MOM

Comunicação Objetos Distribuídos e RMI

Sistema de Software Distribuído

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Conceitos de Sistemas Distribuídos

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Arquitectura de Sistemas Paralelos e Distribuídos Modelos de Sistemas

Resumo: Sistemas Operacionais Abertos

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

TÓPICOS EM COMPUTAÇÃO APLICADA

Java RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

1.2- Ambientes de Middleware

Distributed Systems Principles and Paradigms

Desenvolvimento de Aplicações Distribuídas

Comunicação. Parte II

Sistemas Distribuídos e Redes de Sensores. abril de 2013

Common Object Request Broker Architecture

Chamada Remota de Procedimento (RPC)

Técnicas Avançadas de Programação

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Grupo de Usuários Java do Noroeste Paulista. Introdução à tecnologia Java

ALua. asynchronous communication in Lua

Processos em Sistemas Distribuídos e Comunicação entre Processos

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Arquitetura de Sistemas Operativos

Sistemas Distribuídos

Capítulo II Modelos de Programação Distribuída (parte 2)

Transcrição:

Sistemas Distribuídos Aula 10 Aula passada Arquitetura P2P Bittorrent Distributed Hash Table (DHT) Aula de hoje Modelo computação distribuída RPC Marshalling e stubs Semântica operacional RMI

Computação Distribuída Como dividir a computação de forma a torná-la distribuída? arquitetura divide componentes Como fazer isto? Precisamos de uma abstração de programação Ideia 0: modelo cliente/servidor; troca de mensagens via sockets; troca de dados; segue um protocolo ex. web (HTTP)

Exemplo Web Cliente estabelece conexão (via sockets) Servidor aceita conexão (via sockets), dedica thread para atender cliente Cliente envia pedido usando HTTP (objeto) Servidor envia objeto requisitado, usando HTTP Cliente pode solicitar outros objetos PC running Firefox browser iphone running Safari browser HTTP request HTTP response HTTP request HTTP response Desvantagens deste modelo para computação distribuída? server running Apache Web server

Outra Abstração Como dividimos a computação em um sistema não distribuído? Funções (procedimentos) Ideia 1: usar a mesma abstração para sistemas distribuídos chamada de função como forma de distribuir a computação função está em outra máquina

Remote Procedure Call (RPC) RPC: distribuição da computação através de chamadas de função Nível de abstração mais elevado Esconde a complexidade nada de sockets, ou protocolos para o programador Mais transparente independente da máquina, SO, etc Modelo compreendido por programadores (chamada de função) função é um serviço

Lado do cliente Exemplo em Java conecta ao servidor - chama função no servidor sample.sum - retorna um objeto - objeto da class Integer

Desafios do RPC Processo que chama função e que executa função estão em máquinas diferentes espaço de endereçamento diferentes SO diferente, HW diferente (possivelmente) Representação dos dados possivelmente diferentes ex. LP diferentes, HW diferentes Redes e máquinas podem falhar durante a chamada de função

Modelo Síncrono para RPC Síncrono: função retorna quando retorna! Função bloqueante, mais natural para programador retorna quando resultado está pronto

Modelo Assíncrono para RPC Assíncrono: função retorna duas vezes (quando aceito, quando pronto) Permite thread continuar execução Segundo retorno via interrupção (a la signal handlers)

Representando Dados Como lidar com representação de dados diferentes? ex. little endian x big endian Como organizar os bytes de uma palavra (32 bits) na memória do computador? Chegaram 32 bits da rede, como organizar na memória? little endian ou big endian? depende de quem mandou! Byte mais significativo primeiro Byte menos significativo primeiro ex. ARM, PowerPC ex. Intel

Marshalling e Stubs Ideia: Converter dados para representação que não depende da máquina de comum acordo entre os dois lados; cada lado faz sua parte encapsulado fora do programa Usar também para strings, floats, tipos mais complicados (structs), etc. Stubs: código responsável por marshalling e unmarshalling dos parâmetros oferecido pela biblioteca, de uso obrigatório, mas transparente (programador não sabe) descrevem os parâmetros da função através de algum padrão, como XML

Marshalling e Stubs Passos em detalhe, retorno é simétrico Muitos passos, e muitas cópias fonte de ineficiência, redução de cópias?

Parâmetros por Referência Como passar parâmetros por referência (ponteiros)? espaço de endereçamento é outro Ideia: Pass by copy/restore criar estrutura como parâmetro, copiar os dados, passar como valor, copiar na volta transparente para programador Como saber tamanho da estrutura de dados? nem sempre explícito na linguagem E estrutura de dados que tem ponteiros? Solução apenas parcial

Falhas em RPC Como lidar com falhas? ex. servidor falha no meio da chamada Chamada local de função (sistema centralizado) se chamada falhar, sistema inteiro falha! RPC, o que fazer? Ideia 0: imitar chamada local muitas falhas no sistema, pois falhas parciais fazem parte de sistemas distribuídos Como lidar com falhas?

Semântica em RPC Falhas parciais são frequentes em SD ex. rede fora do ar Como tornar falhas parciais transparente ao programador? Introduzir semântica de operação de RPC número de chamadas da função no servidor 1) exatamente uma vez 2) ao menos uma vez 3) no máximo uma vez 4) zero ou uma vez (com conhecimento) Software (stubs) garantem a semântica

Garantindo Semânticas Ao menos uma vez: cliente continua tentando até receber resposta servidor processa, responde, sem guardar estado útil apenas para operações idempotentes (ex. HTTP GET) No máximo uma vez: cliente continua tentando até receber resposta servidor mantém registro dos pedidos, responde sem processar (guarda respostas) Exatamente uma vez: praticamente impossível de garantir cliente não tem como saber

Implementando Semânticas Semântica definida pela biblioteca de RPC Implementanda pela biblioteca assim como os stubs para marshalling nada fácil de garantir semântica Semântica permite sistema distribuído operar com falhas parciais fundamental para um SD transparente para programador

Remote Method Invocation RMI: RPC aplicado a orientação a objetos sai função entra método Objetos instanciados do lado do servidor (remote) e do lado do cliente (local) objetos podem persistir, mantém seu estado Facilita a distribuição do sistema programação ainda mais transparente Precisa resolver mesmos problemas que RPC, e alguns outros como persistência e sincronização