37
SISTEMAS DISTRIBUÍDOS COMUNICAÇÃO ENTRE PROCESSOS ARTHUR EMANUEL DE OLIVEIRA CAROSIA 1

Sistemas Distribuídos - Aula 05

Embed Size (px)

DESCRIPTION

Comunicação entre processos

Citation preview

Page 1: Sistemas Distribuídos - Aula 05

1

SISTEMAS DISTRIBUÍDOS

COMUNICAÇÃO ENTRE PROCESSOS

ARTHUR EMANUEL DE OLIVEIRA CAROSIA

Page 2: Sistemas Distribuídos - Aula 05

2

INTRODUÇÃO

Page 3: Sistemas Distribuídos - Aula 05

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

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

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

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

7

INTRODUÇÃO

Page 8: Sistemas Distribuídos - Aula 05

8

CARACTERÍSTICAS NA COMUNICAÇÃO ENTRE PROCESSOS

Page 9: Sistemas Distribuídos - Aula 05

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

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

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

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

13

SERIALIZAÇÃO EM JAVA

Page 14: Sistemas Distribuídos - Aula 05

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

15

SERIALIZAÇÃO EM JAVA

Page 16: Sistemas Distribuídos - Aula 05

16

COMUNICAÇÃO CLIENTE-SERVIDOR

Page 17: Sistemas Distribuídos - Aula 05

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

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

19

COMUNICAÇÃO CLIENTE-SERVIDOR

Page 20: Sistemas Distribuídos - Aula 05

20

SOCKETS

Page 21: Sistemas Distribuídos - Aula 05

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

22

SOCKETS

Page 23: Sistemas Distribuídos - Aula 05

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

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

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

26

API JAVAPARA UDP

UDPCLIENT

Page 27: Sistemas Distribuídos - Aula 05

27

API JAVAPARA UDP

UDPSERVER

Page 28: Sistemas Distribuídos - Aula 05

28

EXECUTANDO

Executando o servidor

Java UDPServer

Executando o cliente

Java UDPClient mensagem localhost

Page 29: Sistemas Distribuídos - Aula 05

29

COMUNICAÇÃO POR FLUXO TCP

Page 30: Sistemas Distribuídos - Aula 05

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

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

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

33

API JAVA PARA TCP

TCP CLIENT

Page 34: Sistemas Distribuídos - Aula 05

34

API JAVA PARA TCP

TCP SERVER

Page 35: Sistemas Distribuídos - Aula 05

35

API JAVA PARA TCP

CONNECTION

Page 36: Sistemas Distribuídos - Aula 05

36

EXECUTANDO

Executando o servidor

Java TCPServer

Executando o cliente

Java TCPClient teste localhost

Page 37: Sistemas Distribuídos - Aula 05

37

SISTEMAS DISTRIBUÍDOS

COMUNICAÇÃO ENTRE PROCESSOS

ARTHUR EMANUEL DE OLIVEIRA CAROSIA