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

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

1 Sistemas Paralelos e Distribuídos Comunicação entre processos.

Apresentações semelhantes


Apresentação em tema: "1 Sistemas Paralelos e Distribuídos Comunicação entre processos."— Transcrição da apresentação:

1 1 Sistemas Paralelos e Distribuídos Comunicação entre processos

2 2 Comunicação Inter-processos – Camadas de um Middleware;

3 3 Comunicação entre processos A API para o Protocolo de Internet – Discutiremos as principais características de comunicação de inter-processo usando como exemplo o protocolo de Internet. Explicando como os programadores podem utilizar o UDP e TCP para passagem de dados entre processo. – As características da comunicação Inter-processo: A passagem de mensagem entre dois pares de processos pode ser implementado por duas operações básicas: send e receive. A atividade de comunicação envolve sempre um mecanismo de sincronização Os processos de alguma maneira devem apresentar uma sincronização para enviar e receber dados.

4 4 Comunicação entre processos Comunicação Síncrona e Assíncrona: – Uma fila é associada com cada mensagem. O processo que envia a mensagem, nada mais faz do que inserir a mensagem numa fila remota e o processo que recebe, retira a mensagem da fila local. – Na forma síncrona de comunicação, o transmissor e receptor sincronizam a passagem de cada mensagem. – Na forma assíncrona de comunicação, a operação de envio é não bloqueante. Nesta forma é permitida ao processo transmissor transferir rapidamente uma mensagem para o o buffer local (de saída). Desta forma, a transmissão de dados pode ocorrer em paralelo com o processo transmissor. – As operações usando o modo bloqueantes são mais simples de implementarem. Mas o modo não bloqueante oferece melhores desempenhos na operação.

5 5 Comunicação entre processos Sockets – Ambas as formas de comunicações (UDP e TCP) usam a abstração de sockets para providenciar o meio de comunicação fim a fim entre os processos. – O termo socket surgiu originalmente do DSD UNIX, mas tb é usada em muitas versões de UNIX, Linux, Windows NT e Macintosh OS. – Uma comunicação entre processos é baseada na utilização de um socket no processo transmissor e um outro socket no processo receptor.

6 6 Comunicação entre processos - Socket Comunicação usando Socket message agreed port any port socket Internet address = Internet address = other ports client server

7 7 Comunicação entre processos Java API para Internet – Java utiliza uma classe chamada InetAddress para endereçar a Internet – DNS – Ex: InetAddress aComputer = InetAddress.getByName(bruno.dcs.qmw.ac.uk) – IPv4 e IPv6

8 8 Comunicação entre processos Comunicação por Datagrama UDP – Um pacote é transmitido sem confirmação ou reenvio de msg – Os erros não são retornados e nem tratados Informações de um Datagrama: – Tamanho da msg, ao todo bytes, incluindo o cabeçalho – Bloqueio, modo de espera da chegada de msg – TimeOut, tempo máximo de espera para uma recepção – Receive From Any, modo onde ele aceita todo os pacotes recebidos pelo socket.

9 9 Comunicação entre processos Modelo de Falhas para o UDP: – Falha por omissão: a msg pode ser perdida ocasionalmente ( no canal de comunicação) – Ordenação: as informações podem ser entregue fora de ordem Aplicações: – DNS – Menos overhead, latência – Multimídia

10 10 Comunicação entre processos JavaAPI para UDP – DatagramaPacket Esta classe providencia um construtor que faz uma instância do pacote a ser usado na comunicação por pacote UDP Array de dados, Tamanho da mensagem, Internet Address, Porta – DatagramaSocket Esta classe providencia um construtor para uma instância que oferece suporte para TX e RX. – Send e Receiver – SetSoTimeout – Connect

11 11 UDP – Enviando msg import java.net.*; import java.io.*; public class UDPClient{ public static void main(String args[]){ // args give message contents and server hostname DatagramSocket aSocket = null; try { aSocket = new DatagramSocket(); byte [] m = args[0].getBytes(); InetAddress aHost = InetAddress.getByName(args[1]); int serverPort = 6789; DatagramPacket request = new DatagramPacket(m, args[0].length(), aHost, serverPort); aSocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); aSocket.receive(reply); System.out.println("Reply: " + new String(reply.getData())); }catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e){System.out.println("IO: " + e.getMessage());} }finally {if(aSocket != null) aSocket.close();} }

12 12 UDP – Recebendo msg import java.net.*; import java.io.*; public class UDPServer{ public static void main(String args[]){ DatagramSocket aSocket = null; try{ aSocket = new DatagramSocket(6789); byte[] buffer = new byte[1000]; while(true){ DatagramPacket request = new DatagramPacket(buffer, buffer.length); aSocket.receive(request); DatagramPacket reply = new DatagramPacket(request.getData(), request.getLength(), request.getAddress(), request.getPort()); aSocket.send(reply); } }catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e) {System.out.println("IO: " + e.getMessage());} }finally {if(aSocket != null) aSocket.close();} }

13 13 TCP Oferece uma abstração para uma stream de bytes, que podem ser usados para escrever ou ler dados – Tamanho da Msg – Perda de Msg – Controle de Fluxo – Ordenação e duplicação de pacotes – Mensagem orientada a conexão

14 14 TCP Características de uso: – Compatibilidade de dados – Bloqueios – Threads

15 15 TCP Modelo de Falhas – Não consegue distinguir entre uma falha de rede ou do processo Uso: – HTTP – FTP – Telnet – SMTP ServerSocket Socket

16 16 TCP - Cliente import java.net.*; import java.io.*; public class TCPClient { public static void main (String args[]) { // arguments supply message and hostname of destination Socket s = null; try{ int serverPort = 7896; s = new Socket(args[1], serverPort); DataInputStream in = new DataInputStream( s.getInputStream()); DataOutputStream out = new DataOutputStream( s.getOutputStream()); out.writeUTF(args[0]); // UTF is a string encoding see Sn 4.3 String data = in.readUTF(); System.out.println("Received: "+ data) ; }catch (UnknownHostException e){ System.out.println("Sock:"+e.getMessage()); }catch (EOFException e){System.out.println("EOF:"+e.getMessage()); }catch (IOException e){System.out.println("IO:"+e.getMessage());} }finally {if(s!=null) try {s.close();}catch (IOException e){System.out.println("close:"+e.getMessage());}} }

17 17 TCP - Servidor import java.net.*; import java.io.*; public class TCPServer { public static void main (String args[]) { try{ int serverPort = 7896; ServerSocket listenSocket = new ServerSocket(serverPort); while(true) { Socket clientSocket = listenSocket.accept(); Connection c = new Connection(clientSocket); } } catch(IOException e) {System.out.println("Listen :"+e.getMessage());} } // this figure continues on the next slide

18 18 Representação e Organização de dados Toda informação armazenada em um programa possuem as seguintes características: – São guardada em algum tipo de estrutura – São formado por uma sequencia de bytes – São transformado em bytes antes da transmissão – São remontado ao formato original depois da recepção – possuem diferentes tipificações

19 19 Representação e Organização de dados Os caracteres pode ser: – ASCII – Unicode Inteiros: – Big-Endian (byte mais significativo vem primeiro) – Little-endian

20 20 Representação e Organização de dados Existe dois métodos para permitir que dois computadores diferentes consigam trocar dados: – Os valores são convertidos antes da transmissão em um formato externo comum, previamente acordado entre as duas máquinas – Enviar os dados no formato usado pelo transmissor e junto, enviar também informações necessárias sobre o formato usado

21 21 Representação e Organização de dados Para suportar RMI ou RPC é necessário: – Que os argumentos sejam passados de uma maquina para outra de forma transparente; – Antes de serem transmitidos os dados devem ser transformado em formatos primitivos de dados de acordo com um formato externo – Durante a recepção, os dados primitivos são remontados para um formato aceito pela máquina

22 22 Representação e Organização de dados Este padrão comum de formato é chamado de Representação de Dados Externo O processo de montagem de dados para um formato aceito externamente é chamado de Marshalling UnMarshalling é o processo inverso, onde termo representa a desmontagem do formato externo para um formato conhecido localmente pela máquina

23 23 Representação e Organização de dados Duas propostas para formatos externo para representação de dados são discutidos aqui: – CORBA – que possui uma representação de dados primitivos externos para troca de dados entre várias linguagens de programação – Objetos JAVAs – que possui uma método para gerar sequencia de bytes em um formato comum externo para representar qualquer objeto simples ou conjunto de objetos que podem ser transmitido em uma mensagem

24 24 Representação e Organização de dados Devido a complexidade que envolve o processo de Marshalling e Unmarshalling, esta tarefa é comumente desempenhada pelo middleware Os tipos comuns de dados usandos em primitivas podem ser: – ASCII. Ex: Http – Estruturas específicas pré definidas. Ex: RMI e RPCs

25 25 Corba- Representação de dados Comuns Corba CDR

26 26 Corba- Representação de dados Comuns Corba – CDR: – Corba a – Representa todos os tipos de dados – 15 tipos de primitivas – Ambos Big-endian e Little-endian

27 27 Corba- Representação de dados Comuns Representação de {Smith,London, 1934} The flattened form represents aPerson struct with value: {Smith, London, 1934} 0–3 4–7 8–11 12–15 16– –27 5 "Smit" "h___" 6 "Lond" "on__" 1934 index in sequence of bytes4 bytes notes on representation length of string Smith length of string London unsigned long

28 28 Corba- Representação de dados Comuns Outros exemplos de representação externa de dados: Sun XDR (RFC 1832) Marshalling em Corba: – É gerado automaticamente pela especificação Corba – CORBA IDL providencia uma notação para descrição dos argumentos e tipos de retornos de métodos RMI – Ex: Struct Person { – String name – String place – Long year – } – Normalmente é gerado pelo compilador

29 29 JAVA JAVA RMI – Dados e objetos podem ser passados como argumentos ou resultados de uma chamada – Ex: public class Person implements Serialzable { – Private String name – Private String place – Private int year – Public Person (string a Name, String aPlace, int aYear) { – Name = aName; – Place = aPlace; – Year = aYear.

30 30 JAVA Java RMI – Os objetos e dados são serializados para serem transmitidos – Os objetos e dados são des-serializados na recepção – Junto com os dados serializados, é acompanhado o formato, a estrutura e os tipos dos dados originais – Acompanha também os nomes e a versão das classes – As referencias a outras classes também são serializados – As demais chamadas as mesmas classes são substituidos por handles – UTF (Unversal Transfer Format) - ASCII

31 31 JAVA Forma serializada – Person p = new Person(smith, London, 1934); The true serialized form contains additional type markers; h0 and h1 are handles Serialized values Person byte version number int year 5 Smith java.lang.String name: 6 London h0 java.lang.String place: h1 Explanation class name, version number number, type and name of instance variables values of instance variables

32 32 JAVA Reflexão – habilidade de pesquisar sobre as propriedades de uma classe, como nomes e tipos das instâncias de dados e métodos Facilita e simplifica o processo de marshalling

33 33 JAVA Remote object references – É um identificador para um objeto remoto – Deve ser único para cada objeto dentro de um sistema distribuído – O identificado é enviado junto com a msg – Objetos e identificadores deletados, não são reutilizados

34 34 JAVA Representação de Identificador – Combinação de IP, port, e incremento de um número a cada criação de objeto Internet addressport numbertimeobject number interface of remote object 32 bits

35 35 JAVA Comunicação Requisição-Resposta Request ServerClient doOperation (wait) (continuation) Reply message getRequest execute method message select object sendReply

36 36 Comunicação Cliente Servidor Comunicação sincronos -> cliente bloqueia qualquer operação enquanto espera a resposta Usa operações básicas: Send e Receiver – Java API, baseados em datagramas UDP e TCP; – Vantagens de usar UDP: A confirmação são redundantes, uma vez que sempre teremos resposta; Não há necessidade de estabelecer conexão, exige dois pares extras de datagrmas Controle de Fluxo também desnecessário

37 37 Comunicação Cliente Servidor Protocolo: Solicitação resposta – Primitivas de comunicação: doOperation – usado para chamar e executar um objeto. Argumentos são passados e o resultado é retornado getRequest – é usado pelo servidor para chamar o objeto solicitado pelo cliente sendReply – é usadopara enviar o resultado para o cliente

38 38 Comunicação Cliente Servidor Operação do protocolo Solicitação Resposta: – public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments) sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method. – public byte[] getRequest (); acquires a client request via the server port. – public void sendReply (byte[] reply, InetAddress clientHost, int clientPort); sends the reply message reply to the client at its Internet address and port.

39 39 Comunicação Cliente Servidor Estrutura da mensagem messageType requestId objectReference methodId arguments int (0=Request, 1= Reply) int RemoteObjectRef int or Method array of bytes

40 40 Comunicação Cliente Servidor MessageType – indica se é solicitação ou Resposta RequestID – Identificador da mensagem ObjectReference – Identificador do objeto MethodId – Identificador do método Argumentos – Argumentos a ser passado/retornado

41 41 Comunicação Cliente Servidor Modelos de Falhas para Protocolo Solicitação- Resposta – Falha por omissão – Msg não tem garantia de entrega ou de ordem das msg

42 42 Comunicação Cliente Servidor Usando UDP, força o sistema de comunicação resolver alguns problemas bem conhecidos: – TimeOuts – Duplicações de mensagens – Perda de msg

43 43 Comunicação Cliente Servidor Histórico: – Quando uma resposta tem problemas de entrega, a resposta é novamente re-enviada, mas não é gerada novamente pelo objeto remoto. Um histórico da resposta é mantida pelos objetos para este casos. – A vantagem é que evitar gerar processamento desnecessário – Desvantagem, o tamanho das caches de memória ocupados

44 44 Comunicação Cliente Servidor Protocolos de troca de dados RPC (1982) – R, requisição sem resposta do servidor – RR, requisição e resposta – RRA, utiliza 3 mensagem: requisição, resposta e confirmação Name Messagessent by Client ServerClient R Request RR Request Reply RRA Request Reply Acknowledge reply

45 45 Comunicação Cliente Servidor Implementação usando TCP – Dificuldades de se usar UDP Tamanho do buffer ideal para transmissão e recepção – Necessidade de um protocolo Multi-pacote (vários pacotes) – Um conjunto de objetos pode ser serializado sem dor cabeça, numa transmissão confiável

46 46 Comunicação entre processos - HTTP Exemplo de implementação de protocolo Requisição- Resposta Estudo de casos: HTTP O protocolo HTTP (HyperText Transfer Protocol) é usado pelo web browser cliente para fazer requisições para Servidores Web e receber informações de respostas.

47 47 Os servidores gerenciam dois tipos de recursos distintos: – Dados; – Programas. Os dados, são por exemplo as páginas armazenadas no servidores que são enviados aos clientes após uma solicitação; Os programas, são os CGIs ou scripts que podem ser executados para executar tarefas específicas. Comunicação entre processos - HTTP

48 48 O HTTP é um protocolo que basicamente especifica regras de troca de mensagens entre o cliente e o servidor Web. Ele apresenta métodos específicos para controle dos recursos do servidor, tais como: GET, PUT, HEAD, POST, DELETE, etc. Além disso, o protocolo define também um método para autenticação de acesso de usuário. Comunicação entre processos - HTTP

49 49 Negociação de conteúdo – O cliente pode incluir informações na solicitação para informar ao servidor o tipo de dados que está suportando. Isto permite ao servidor adequar melhor os dados para serem apresentados no lado cliente. Autenticação – Desafios para acesso através logins e senhas são possíveis para o servidor verificar o direito ao acesso de dados por parte do cliente. Comunicação entre processos - HTTP

50 50 O protocolo HTTP original especifica que uma solicitação sempre fecha em seguida a comunicação após o servidor enviar a resposta. Na versão HTTP 1.1 é possível definir uma conexão persistente. Esta abordagem permite utilizar de forma mais eficiente a transmissão de vários documentos a um mesmo cliente. Esta conexão pode ser fechada a qualquer momento, por ambas as partes, servidor e o cliente. Embora normalmente os dados sejam transmitidos em formato texto, o protocolo HTTP 1.1 permite a transferência de bytes contínuos, compactados ou não. Comunicação entre processos - HTTP

51 51 Na verdade, o protocolo permite que qualquer tipo de dados possa ser transmitida usando o HTTP. O protocolo define o MIME – Multipurpose Internet Mail Extensions é o padrão utilizado para a definição dos tipos e subtipos de dados. E é utilizado pelo protocolo HTTP para informar os browsers da definição de tipo que estão recebendo. Exemplos: text/plain, text/html, image/gif, etc Comunicação entre processos - HTTP

52 52 Métodos do HTTP GET HEAD POST PUT DELETE OPTIONS TRACE Comunicação entre processos - HTTP

53 53 Exemplo de GET: Resposta do servidor: Comunicação entre processos - HTTP GET//www.dcs.qmw.ac.uk/index.htmlHTTP/ 1.1 URL or pathnamemethodHTTP versionheadersmessage body HTTP/1.1200OK resource data HTTP versionstatus codereasonheadersmessage body


Carregar ppt "1 Sistemas Paralelos e Distribuídos Comunicação entre processos."

Apresentações semelhantes


Anúncios Google