sistemas distribuídos - aula 05
DESCRIPTION
Comunicação entre processosTRANSCRIPT
![Page 1: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/1.jpg)
1
SISTEMAS DISTRIBUÍDOS
COMUNICAÇÃO ENTRE PROCESSOS
ARTHUR EMANUEL DE OLIVEIRA CAROSIA
![Page 2: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/2.jpg)
2
INTRODUÇÃO
![Page 3: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/3.jpg)
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.
![Page 4: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/4.jpg)
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.
![Page 5: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/5.jpg)
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).
![Page 6: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/6.jpg)
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.
![Page 7: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/7.jpg)
7
INTRODUÇÃO
![Page 8: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/8.jpg)
8
CARACTERÍSTICAS NA COMUNICAÇÃO ENTRE PROCESSOS
![Page 9: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/9.jpg)
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.
![Page 10: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/10.jpg)
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.
![Page 11: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/11.jpg)
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.
![Page 12: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/12.jpg)
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.
![Page 13: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/13.jpg)
13
SERIALIZAÇÃO EM JAVA
![Page 14: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/14.jpg)
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.
![Page 15: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/15.jpg)
15
SERIALIZAÇÃO EM JAVA
![Page 16: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/16.jpg)
16
COMUNICAÇÃO CLIENTE-SERVIDOR
![Page 17: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/17.jpg)
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.
![Page 18: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/18.jpg)
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.
![Page 19: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/19.jpg)
19
COMUNICAÇÃO CLIENTE-SERVIDOR
![Page 20: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/20.jpg)
20
SOCKETS
![Page 21: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/21.jpg)
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.
![Page 22: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/22.jpg)
22
SOCKETS
![Page 23: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/23.jpg)
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.
![Page 24: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/24.jpg)
24
COMUNICAÇÃO POR DATAGRAMA UDP
Servidor
Associa socket a uma porta de serviço.
Cliente
Associa socket a qualquer porta local livre.
![Page 25: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/25.jpg)
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.
![Page 26: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/26.jpg)
26
API JAVAPARA UDP
UDPCLIENT
![Page 27: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/27.jpg)
27
API JAVAPARA UDP
UDPSERVER
![Page 28: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/28.jpg)
28
EXECUTANDO
Executando o servidor
Java UDPServer
Executando o cliente
Java UDPClient mensagem localhost
![Page 29: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/29.jpg)
29
COMUNICAÇÃO POR FLUXO TCP
![Page 30: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/30.jpg)
30
COMUNICAÇÃO POR FLUXO TCPAbstração no qual fluxo de dados podem ser lidos (receive) e escritos (send).
![Page 31: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/31.jpg)
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.
![Page 32: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/32.jpg)
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.
![Page 33: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/33.jpg)
33
API JAVA PARA TCP
TCP CLIENT
![Page 34: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/34.jpg)
34
API JAVA PARA TCP
TCP SERVER
![Page 35: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/35.jpg)
35
API JAVA PARA TCP
CONNECTION
![Page 36: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/36.jpg)
36
EXECUTANDO
Executando o servidor
Java TCPServer
Executando o cliente
Java TCPClient teste localhost
![Page 37: Sistemas Distribuídos - Aula 05](https://reader031.vdocuments.site/reader031/viewer/2022020718/5496d01aac7959412e8b5169/html5/thumbnails/37.jpg)
37
SISTEMAS DISTRIBUÍDOS
COMUNICAÇÃO ENTRE PROCESSOS
ARTHUR EMANUEL DE OLIVEIRA CAROSIA