Sistemas Distribuídos - Aula 05

653 visualizações

Publicada em

Comunicação entre processos

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
653
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
56
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Sistemas Distribuídos - Aula 05

  1. 1. SISTEMAS DISTRIBUÍDOS COMUNICAÇÃO ENTRE PROCESSOS ARTHUR EMANUEL DE OLIVEIRA CAROSIA 1
  2. 2. INTRODUÇÃO 2
  3. 3. INTRODUÇÃO Discussão de como middleware e aplicativos podem utilizar os protocolos TCP e UDP. Na API Java, a comunicação é feita por meio de sockets. 3
  4. 4. INTRODUÇÃO A interface de programa para UDP fornece uma abstração de passagem de mensagem, a forma mais simples de comunicação entre processos. Permite que um processo remetente transfira uma mensagem (datagramas) para processo destino. 4
  5. 5. INTRODUÇÃO A interface de programa TCP fornece uma abstração de um fluxo bidirecional entre pares de processos. A informação consiste em um fluxo contínuo de dados sem dar a noção de limites da mensagem (início e fim). 5
  6. 6. INTRODUÇÃO Os fluxos comunicação de acordo com o paradigma produtor-consumidor. • par de processos com funções distintas • produz itens de dados; • consome itens de dados; • Os itens de dados criados são enfileirados na chegada (buffer) até que o consumidor esteja pronto para recebe-los. • O consumidor deve esperar quando nenhum item de dados estiver disponível. • O produtor deve esperar caso o armazenamento usado para conter os itens de dados esteja cheio. 6
  7. 7. INTRODUÇÃO 7
  8. 8. CARACTERÍSTICAS NA COMUNICAÇÃO ENTRE PROCESSOS 8
  9. 9. SÍNCRONO VS ASSÍNCRONO • Síncrona: • os processos remetente e destino são sincronizados a cada mensagem. • Send e Receive são operações que causam bloqueio. 9
  10. 10. SÍNCRONO VS ASSÍNCRONO • Assíncrono: • a operação Send é não bloqueante • o remetente pode prosseguir assim que a mensagem tenha sido copiada para um buffer local • Receive pode ter variantes com e sem bloqueio. 10
  11. 11. DESTINOS DA MENSAGEM • As mensagens são enviadas para destinos identificados pelo par (endereço IP, porta local). • Uma porta é o destino da mensagem dentro de um computador, e pode ter vários remetentes. • Os processos podem usar várias portas para receber mensagens e qualquer processo que saiba essas portas pode enviar mensagens para processos remetentes. 11
  12. 12. CONFIABILIDADE E ORDENAMENTO Confiabilidade: garantia que as mensagens foram entregues, independentemente do número de mensagens que possam ter sido eliminadas ou perdidas. Ordenamento: algumas aplicações exigem que as mensagens sejam entregues na ordem de emissão. 12
  13. 13. SERIALIZAÇÃO EM JAVA 13
  14. 14. SERIALIZAÇÃO EM JAVA Serialização refere à atividade de simplificar o objeto em uma forma sequencial conveniente para armazenamento em disco ou transmitir uma mensagem. Desserialização consiste em restaurar o estado de um objeto a partir de sua forma serializada. Serializable não possui métodos e sua implementação tem o efeito de permitir que suas instâncias sejam serializadas. 14
  15. 15. SERIALIZAÇÃO EM JAVA 15
  16. 16. COMUNICAÇÃO CLIENTE-SERVIDOR 16
  17. 17. COMUNICAÇÃO CLIENTE-SERVIDOR Forma de comunicação projetada para suportar as funções e trocas de mensagens em interações cliente-servidor típicas. Comunicação é síncrona e confiável. 17
  18. 18. COMUNICAÇÃO CLIENTE-SERVIDOR Baseada em 3 primitivas: • doOperation: • método usado pelo cliente para invocar ações remotas. • getRequest: • usado por um processo servidor para ler as requisições de serviço. • sendReply: • usado pelo servidor para enviar a mensagem de resposta ao cliente. 18
  19. 19. COMUNICAÇÃO CLIENTE-SERVIDOR 19
  20. 20. SOCKETS 20
  21. 21. SOCKETS TCP e UDP utilizam sockets como forma de comunicação. A comunicação entre processos consiste na transmissão de mensagens entre soquetes. Para que um processo receba mensagens, seu socket deve estar vinculado a um endereço IP e uma porta local. 21
  22. 22. SOCKETS 22
  23. 23. COMUNICAÇÃO POR DATAGRAMA UDP Transmitido do processo remetente ao processo destino sem a existência de confirmações ou novas tentativas de envio. Se ocorrer uma falha, a mensagem poderá não chegar. 23
  24. 24. COMUNICAÇÃO POR DATAGRAMA UDP Servidor Associa socket a uma porta de serviço. Cliente Associa socket a qualquer porta local livre. 24
  25. 25. QUESTÕES RELACIONADAS AO UDP • Tamanho da mensagem: • Limite de 64 kb. • Timeout: • não é adequado que um processo espere indefinidamente para receber algo, pois o processo remetente pode ter falhado ou a mensagem pode ter se perdido. • Falhas por omissão: • mensagens podem ser descartadas devido a erros de soma de verificação ou porque não há espaço no buffer de origem ou destino. • Ordenamento: • as mensagens podem ser entregues em ordem diferente da que foram emitidas. 25
  26. 26. 26 API JAVA PARA UDP UDPCLIENT
  27. 27. API JAVA PARA UDP UDPSERVER 27
  28. 28. EXECUTANDO Executando o servidor Java UDPServer Executando o cliente Java UDPClient mensagem localhost 28
  29. 29. COMUNICAÇÃO POR FLUXO TCP 29
  30. 30. COMUNICAÇÃO POR FLUXO TCP Abstração no qual fluxo de dados podem ser lidos (receive) e escritos (send). 30
  31. 31. COMUNICAÇÃO POR FLUXO TCP • Tamanho das mensagens: • o aplicativo pode escolher o volume de dados que vai ser enviado ou recebido em um fluxo. • Mensagens perdidas: • Se o destinatário não receber uma mensagem, o remetente a retransmite. • Controle de fluxo: • Controle para processos rápidos não sobrecarregarem processos lentos. • Destinos da mensagem: • uma vez estabelecida as conexões, os processos simplesmente leem ou escrevem no fluxo, sem necessidade de usar endereços IP e portas, pois já foi estabelecida uma conexão. 31
  32. 32. COMUNICAÇÃO POR FLUXO TCP Threads: quando um servidor aceita uma conexão, ele cria uma nova thread para se comunicar com o novo cliente. Falhas: Os fluxos TCP usam timeout e retransmissões para tratar pacotes perdidos. 32
  33. 33. 33 API JAVA PARA TCP TCP CLIENT
  34. 34. 34 API JAVA PARA TCP TCP SERVER
  35. 35. 35 API JAVA PARA TCP CONNECTION
  36. 36. EXECUTANDO Executando o servidor Java TCPServer Executando o cliente Java TCPClient teste localhost 36
  37. 37. SISTEMAS DISTRIBUÍDOS COMUNICAÇÃO ENTRE PROCESSOS ARTHUR EMANUEL DE OLIVEIRA CAROSIA 37

×