A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Prof. Gleison Medeiros Setembro/2010.

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Prof. Gleison Medeiros Setembro/2010."— Transcrição da apresentação:

1 Sistemas Distribuídos Prof. Gleison Medeiros Setembro/2010

2 SUMÁRIO 1.Introdução e Caracterização de Sistemas Distribuídos 2.Modelos de Sistemas 3.Redes de Computadores e Interligação 4.Comunicação entre processos 5.Objetos Distribuidos e RMI 6.Segurança 7.Serviços de Nomes 8.Serviços Web 9.CORBA 10.Sistemas Multimídia Distribuídos 11.P2P e Computação Móvel

3 Introdução e Caracterização de Sistemas Distribuídos 4.1. Introdução 4.2. A API para protocolos Internet 4.3. Representação externa de dados e empacotamento 4.4. Comunicação Cliente-Servidor 4.5. Comunicação em grupo

4 Introdução e Caracterização de Sistemas Distribuídos 4.1. Introdução Conceito: Considera as características dos protocolos para comunicação entre processos em um sistema distribuído e para realizar a comunicação entre objetos distribuídos. Ex: A API java para comunicação entre processos na internet fornece tanto comunicação por datagrama como por fluxo (stream).

5 Introdução e Caracterização de Sistemas Distribuídos 4.1. Introdução Os dois paradigmas de comunicação comumente usados em programas distribuídos são: Comunicação Cliente – Servidor: Na qual mensagens de requisição e resposta fornecem a base para a invocação a método remoto ou chamada de procedimento remoto.

6 Introdução e Caracterização de Sistemas Distribuídos 4.1. Introdução Comunicação em Grupo – Onde uma mensagem é enviada para vários processos.

7 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.1 Características da comunicação entre processos. A passagem de mensagens entre um par de processos pode ser suportada por duas operações de comunicação: send e receive definidas em termos de destino de mensagem. Este processo pode implicar na sincronização dos dois processos.

8 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet Comunicação Síncrona e Assíncrona`: uma fila é associada a cada destino da mensagem. Processos remetentes fazem as mensagens serem adicionadas em filas remotas e processos de destino removem mensagens de suas filas locais.

9 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet Na forma Síncrona`: Os processos remetentes e de destino são sincronizados a cada mensagem. Nesse caso as operações Send e Receive causam bloqueios. Ex. Quando um envio (send) é feito, o processo remetente ou (thread) é bloqueado até que a recepção (receive) seja realizada. Quando receive é executado o processo ou a (thread) também é bloqueado

10 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet Na forma Assíncrona`: Na forma assíncrona, o uso da operação send é não bloqueante, no sentido de que o processo remetente pode prosseguir assim que a mensagem tenha sido copiada para um buffer local, e a transmissão da mensagem ocorre em paralelo com o processo remetente. A operação receive pode ter variantes com ou sem bloqueio

11 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet Destinos de mensagem: Vimos que nos protocolos internet, as mensagens são enviadas para destinos identificados pelo par ( endereço IP, porta local), uma porta local é um destino de mensagem dentro do computador, especificado como um valor inteiro. Uma porta tem exatamente um destino, mas pode ter vários remetentes.

12 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Soquetes As duas formas de comunicação (UDP e TCP) usam a abstração de soquete, um ponto de destino para a comunicação de processos. Os soquetes originários do UNIX BSD. Estão presentes nas distribuições Linux, windows e macintosh OS.

13 Modelos de Sistemas 4.2. A API para protocolos Internet 4.2.2 Soquetes Porta Cliente Porta Conhecida Outras Portas Soquete Client e IP: 138.37.94.248 Servidor IP: 138.37.88.249

14 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Soquetes a comunicação entre processos consiste em transmitir uma mensagem entre um soquete de um processo e um soquete de outro processo. Para que um processo receba mensagens, seu soquete deve estar vinculado a uma porta local e um endereço IP.

15 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Soquetes Os processos podem usar o mesmo soquete para enviar e receber mensagens. Cada computador tem 2¹ 6 números de portas disponíveis para serem usados pelos processos para envio e recepção de mensagens.

16 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Soquetes Qualquer processo pode fazer uso de várias portas para receber mensagens, mas um processo não pode compartilhar portas com outro processo no mesmo computador.

17 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Soquetes A API java para endereços Internet:. Fornece uma classe, InetAddress, que representa endereços IP, para permitir a utilização dos protocolos TCP e UDP. Com essas classes os usuários se referem aos computadores pelos nomes do host (DNS). InetAddress aComputer = InetAddress.getByName(“gleison.org.br”)

18 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Características ??? Um datagrama é transmitido de um processo a outro quando um deles efetua um send e o outro um receive. Para iniciar, o processo cria uma associação, entre o soquete com um endereço IP e com uma porta do host local. Um servidor associará seu soquete a uma porta de serviço. Então tornará a mesma pública.

19 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Alguns problemas relacionados à comunicação por datagrama. Tamanho da mensagem: o processo de destino precisa especificar um vetor de bytes de um tamanho em particular para receber as mensagens. E se a mensagem for grande? O protocolo IP permite datagramas de até 2¹6 bytes (64KB) incluindo cabeçalho e área de dados, geralmente alguns ambientes só aceitam mensagens de até 8KB. So for maior que isso será fragmentada

20 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Alguns problemas relacionados à comunicação por datagrama. Bloqueio: Os soquetes oferecem operações send não bloqueantes para o udp, ou seja? E operações receives bloqueantes.

21 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Alguns problemas relacionados à comunicação por datagrama. O método receive bloqueia a execução do processo até que um datagrama seja recebido, a não ser que tenha sido fornecido um tempo limite ao soquete. Se o processo que invoca o método receive tiver outra tarefa para fazer enquanto espera pela mensagem, ele deve tomar providências para usar threads. Ex: servidor web.

22 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Alguns problemas relacionados à comunicação por datagrama. Timeouts: limites temporais configurados nos soquetes. ( confere ao tempo que um soquete pode ficar esperando por uma mensagem).

23 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Alguns problemas relacionados à comunicação por datagrama. Recepção anônima: independentemente da origem o método receive retorna o endereço IP e porta para a verificação de onde veio a mensagem.

24 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Alguns modelos de falhas no datagrama UDP. Falhas por omissão: mensagens podem ser descartadas devido a erros de soma de verificação ou porque não há espaço disponível no buffer, na origem ou no destino. Ordenamento: às vezes, as mensagens podem ser entregues em uma ordem diferente da que foram emitidas.

25 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Emprego do UDP Para algumas aplicações, é aceitável um serviço que esteja exposto a falhas por omissões ocasionais. Por exmplo, o domain name Service, VOIP. Vantagem do UDP? Não sofrem sobrecargas necessárias a entrega de mensagens garantidas...

26 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por datagrama udp Emprego do UDP 1º a necessidade de armazenar informações de estado na origem e no destino. 2º a transmissão de mensagens extras; e 3º a latência do remetente.

27 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Características: Tamanho das mensagens: o aplicativo pode escolher o volume de dados que vai ser enviado ou recebido em um fluxo; A implementação da camada TCP decide o volume de dados a coletar, antes de transmiti-lo;

28 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Características: Mensagens perdidas: o protocolo TCP, usa um esquema de confirmação de entrega de mensagens. Caso o destinatário não receba a mensagem é novamente enviada. Controle de fluxo: o protocolo tcp tenta combinar a velocidade dos processos que lêem e escrevem em um fluxo, se o processo que escreve (envia) for rápido demais para o que lÊ, então ele será bloqueado até que o leitor tenha consumido dados suficientes.

29 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Características: Duplicação e ordenamento de mensagens: identificadores de mensagem são associados a cada datagrama IP, o que permite ao destinatário detectar e rejeitar duplicatas ou reordenar as mensagens que chegam fora de ordem de emissão.

30 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Problemas relacionados a comunicação pro fluxo. Correspondência de itens de dados: Ex. quando um processo escreve (envia) um valor int seguido de double, então o outro lado deverá ler um int seguido de double, caso contrário será bloqueado devido a dados insuficientes de fluxo.

31 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Problemas relacionados a comunicação pro fluxo. Bloqueio: o processo remetente fica bloqueado até q a fila do destinatário seja liberada.

32 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Modelo de falhas: O TCP satisfaz a propriedade da integridade. Mas garante a entrega?

33 Introdução e Caracterização de Sistemas Distribuídos 4.2. A API para protocolos Internet 4.2.2 Comunicação por fluxo TCP Emprego TCP: Http, FTP, Telnet, SMTP.

34 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados As informações armazenadas nos programas são representadas por estrutura de dados, enquanto que as informações presentes nas mensagens são sequencias puras de bytes. Independente da forma de comunicação usada as estruturas de dados devem ser simplificadas (convertidas para bytes) para serem transmitidas..

35 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Os dados nas mensagens podem corresponder a valores de tipos primitivos diferentes. Nem todos os computadores aramazenam tipos de dados primitivos da mesma forma. Isso depende de que? Outro problema seria o conjunto de códigos para representar caracteres. Então como representar esses dados para transmissão?

36 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Os valores são convertidos para um formato externo, acordado antes da transmissão e convertidos para forma normal antes da recepção; Os valores são transmitidos no formato do remetente, junto com uma indicação do formato usado. E o destinatário converte, se necessário.

37 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Ex: para suportar RMI ou RPC, todo tipo de dado que possa ser passado como argumento ou retornado como resultado, deve ser simplificado. Ou seja um padrão.. e isso é conhecido com representação externa de dados. Empacotamento e desempacotamento.

38 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Discutiremos três estratégias para representação externa de dados e empacotamento. Representação de dados comum do CORBA. – Tipos de dados que podem ser passados como argumentos e resultado na invocação de métodos remotos em CORBA. Serialização de objetos em java; – As mensagens entre objetos na linguagem java

39 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Define o formato textual para representar dados estruturados. Anteriormente só era usada para repesentar documentos contando dados auto- descritivos. Hoje é usada em transmissões cliente- servidor em serviços WEB.

40 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Nos dois primeiros casos as atividades de empacotamento e desempacotamento são realizadas por uma camada de middleware. – Ex: Corba. Em XML, mesmo sendo textual, ainda existem softwares que manipulam o conteúdo. – O empacotamento exige muitos detalhes, feito de forma manual é bastante propenso a erros.

41 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Representação de dados comuns do CORBA. – CDR: Representação para argumentos e valores de retorno em invocações de métodos remotos no CORBA. SHORT LONG UNSIGNED SHORT UNSIGNED LONG FLOAT DOUBLE CHAR BOOLEAN OCTET ANY Consiste em 15 tipos primitivos. Alguns -->

42 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Como seria representada uma estrutura em CORBA. Struct Pessoa{ String Nome; String Cidade; Unsigned long ano; }; Índice na Sequencia de bytes 0 – 35 4-7“joan” 8-11“a__” 12-156 16-19“mana” 20-23“us__” 24-271934 ← 4bytes -->

43 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Serialização de objeto Java; – No JAVA RMI, tanto objetos como valores de dados primitivos podem ser passados como argumentos e resultado de invocações de métodos. – O conteúdo das varáveis de instância que são tipos primitivos, são gravados em formato binário. – As strings e os caracteres são gravados usando o formato universal UTF-8

44 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Linguagem de marcação definida pelo W3C; – Derivada do SGML; – HTML foi projetada para definir a aparência das páginas web; – XML para elaborar documentos estruturados para web; – Os documentos são rotulados como strings (tags);

45 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – É extensível, pois os usuários podem definir suas próprias tags. – Se esse arquivo é usado por mais de uma aplicativo, essas tags tem que ser combinadas previamente. Ex: clientes de serviços web usam mensagens no padrão SOAP, formato XML, cujas as tags são publicadas por seus servidores.

46 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Documentos XML, por serem textuais podem ser lidos por seres humanos. – Geralmente é lido por software; – Mas e se algo estiver errado? – Qual será a transmissão mais rápida?? – CDR do CORBA ou XML SOAP

47 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Elementos: um elemento na XML consiste em um conjunto de dados do tipo caractere delimitados por tags de início e fim correspondentes – Dados hierárquicos;

48 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Atributos: opcionalmente uma tag de início pode incluir pares de nomes e valores de atributos associados.; – Um elemento geralmente é um contêiner para dados, enquanto que o atributo pode ser usado para rotular esses dados.;

49 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Elementos e atributos de XML. Definição da estrutura pessoa em XML – smith manaus 1934

50 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Análise (parsing) e documentos bem formados; Um documento xml deve ser bem formado; – Isto é, ele deve obedecer às regras sobre sua estrutura. – Uma outra regra além da regra de abertura e fechamento é o aninhamento das tags. – Devem ter apenas um elemento root

51 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados XML – Todo documento XML deve ter um prólogo como sua primeira linha, especificando pelo menos a versão; –

52 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Referências a objetos remotos Diferença entre RMI e RPC – O RPC é uma tecnologia de comunicação entre processos. – O RMI é uma interface de programação que permite a execução de chamadas remotas no estilo RPC em aplicações desenvolvidas em Java. Ou seja.

53 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Referências a objetos remotos Diferença entre RMI e RPC – RPC - Remote Procedure Call: Forma de executar métodos remotamente.. é um nome genérico para esse tipo de funcionalidade – RMI - Remote Method Invocation: Nome da API em Java para chamar métodos remotamente.. então RMI é o nome de uma API que faz RPC – RMI é uma forma de fazer RPC.

54 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Referências a objetos remotos – Quando um cliente invoca um método em um objeto remoto, uma mensagem de invocação é enviada para o processo servidor que contém o objeto remoto; – Essa mensagem mensagem precisa especificar qual o objeto em particular deve ter o seu método executado.

55 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Referências a objetos remotos – As referências de objeto remoto devem ser geradas de uma forma que garanta a sua exclusividade no espaço e no tempo. – Em geral, podem existir vários processos contendo objetos remotos; – As referências de objeto remoto devem ser únicas entre todos os processos, nos vários computadores de um S.D

56 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Referências a objetos remotos – Uma maneira de construir uma referência exclusiva para um objeto, é concatenando o seu endereço IP e o número da porta que o criou, com a hora da sua criação e um número do objeto local. – Juntos, o número da porta e a hora produzem um identificador único de processo exclusivo.

57 Modelos de Sistemas 4.2. Representação externa de dados Comunicação Cliente-Servidor Mensagem de requisição DoOperation (Espera). (Continuação) ClienteServidor GetRequest Seleciona objeto e executa o método sendReply Mensagem de resposta

58 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Comunicação Cliente – Servidor – O método doOperation é usado pelos clientes para invocar operações remotas; – Seus argumentos especificam o objeto remoto e o método a ser executado, junto com informações adicionais (argumentos) exigidas pelo método. – O resultado é uma resposta ao RMI.

59 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Comunicação Cliente – Servidor – O getRequest é usado por um processo servidor para ler as requisições de serviço. – Quando o servidor tiver executado o método no obejto especificado, usará a mensagem sendReply para enviar a mensagem de resposta para o cliente. – O cliente ao receber a mensagem de resposta, fará com que o método doOperation original seja desbloqueado.

60 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Comunicação em grupo – A troca de mensagens aos pares não é o melhor modelo para comunicação de um processo com um grupo de outros processos. Por exemplo. – Quando um serviço é implementado através de diversos processos em computadores diferentes para fornecer tolerância a falhas. – O melhor seria implantar difusão seletiva. (multicast)

61 Introdução e Caracterização de Sistemas Distribuídos 4.3. Representação Externa de dados Comunicação em grupo – Quais as vantagens da replicação? – Multicast IP, permite que o remetente transmita um único datagrama IP para um conjunto de computadores que formam um grupo multicast.

62 Trabalho para a 2º Nota Em anexo!


Carregar ppt "Sistemas Distribuídos Prof. Gleison Medeiros Setembro/2010."

Apresentações semelhantes


Anúncios Google