sistemas distribuídos - aula 05

Post on 18-Dec-2014

255 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Comunicação entre processos

TRANSCRIPT

1

SISTEMAS DISTRIBUÍDOS

COMUNICAÇÃO ENTRE PROCESSOS

ARTHUR EMANUEL DE OLIVEIRA CAROSIA

2

INTRODUÇÃO

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.

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.

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).

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.

7

INTRODUÇÃO

8

CARACTERÍSTICAS NA COMUNICAÇÃO ENTRE PROCESSOS

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.

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.

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.

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.

13

SERIALIZAÇÃO EM JAVA

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.

15

SERIALIZAÇÃO EM JAVA

16

COMUNICAÇÃO CLIENTE-SERVIDOR

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.

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.

19

COMUNICAÇÃO CLIENTE-SERVIDOR

20

SOCKETS

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.

22

SOCKETS

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.

24

COMUNICAÇÃO POR DATAGRAMA UDP

Servidor

Associa socket a uma porta de serviço.

Cliente

Associa socket a qualquer porta local livre.

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.

26

API JAVAPARA UDP

UDPCLIENT

27

API JAVAPARA UDP

UDPSERVER

28

EXECUTANDO

Executando o servidor

Java UDPServer

Executando o cliente

Java UDPClient mensagem localhost

29

COMUNICAÇÃO POR FLUXO TCP

30

COMUNICAÇÃO POR FLUXO TCPAbstração no qual fluxo de dados podem ser lidos (receive) e escritos (send).

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.

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.

33

API JAVA PARA TCP

TCP CLIENT

34

API JAVA PARA TCP

TCP SERVER

35

API JAVA PARA TCP

CONNECTION

36

EXECUTANDO

Executando o servidor

Java TCPServer

Executando o cliente

Java TCPClient teste localhost

37

SISTEMAS DISTRIBUÍDOS

COMUNICAÇÃO ENTRE PROCESSOS

ARTHUR EMANUEL DE OLIVEIRA CAROSIA

top related