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

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

Sistemas Paralelos e Distribuídos

Apresentações semelhantes


Apresentação em tema: "Sistemas Paralelos e Distribuídos"— Transcrição da apresentação:

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

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

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 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 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 Comunicação entre processos - Socket
Comunicação usando Socket message agreed port any port socket Internet address = Internet address = other ports client server

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 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 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 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 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 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 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 TCP Características de uso: Compatibilidade de dados Bloqueios Threads

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

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 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 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 Representação e Organização de dados
Os caracteres pode ser: ASCII Unicode Inteiros: Big-Endian (byte mais significativo vem primeiro) Little-endian

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 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 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 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 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 Corba- Representação de dados Comuns
Corba CDR T y p e Re pr s n ta t i o q ue ce l g th ( u si ed ) fo ll ow b el m nt r d ri ch a ra c te rs n o ca al so h av w de rs) rr ay le s i r ( o l en h s ci f ie d b eca us is x ru ct n t he or r o la at co mp v s a re pe y t r d ec ar ni g f we e s cte d m mb er

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 Corba- Representação de dados Comuns
Representação de {Smith,London, 1934} The flattened form represents a Person struct with value: {‘Smith’, ‘London’, 1934} 0–3 4–7 8–11 12–15 16–19 20-23 24–27 5 "Smit" "h___" 6 "Lond" "on__" 1934 index in sequence of bytes 4 bytes notes on representation length of string ‘Smith’ ‘London’ unsigned long

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 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 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 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 3 1934 8-byte version number int year 5 Smith java.lang.String name: 6 London h0 place: h1 Explanation class name, version number number, type and name of instance variables values of instance variables

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 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 JAVA Representação de Identificador
Combinação de IP, port, e incremento de um número a cada criação de objeto Internet address port number time object number interface of remote object 32 bits

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

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 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 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 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 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 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 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 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 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 N a m e M es sag s nt b y C li nt S r ve R qu t pl A ck no w ledg e re ply

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 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 Comunicação entre processos - HTTP
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.

48 Comunicação entre processos - HTTP
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.

49 Comunicação entre processos - HTTP
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.

50 Comunicação entre processos - HTTP
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.

51 Comunicação entre processos - HTTP
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

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

53 Comunicação entre processos - HTTP
Exemplo de GET: Resposta do servidor: GET // HTTP/ 1.1 URL or pathname method HTTP version headers message body HTTP/1.1 200 OK resource data HTTP version status code reason headers message body


Carregar ppt "Sistemas Paralelos e Distribuídos"

Apresentações semelhantes


Anúncios Google