sistemas distribuídos - aula 05
Post on 18-Dec-2014
255 Views
Preview:
DESCRIPTION
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