Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cliente-Servidor
Distribuio vertical
Distribuio horizontal
Peer-to-Peer
A arquitetura P2P assume que
todos os processos tem o mesmo
papel e portanto so pares uns dos
outros.
Se muitos ns participam da rede
P2P, praticamente impossvel para
um n guardar informao sobre
todos os demais ns da rede.
Para resolver esse problema, uma
rede de sobreposio (rede lgica)
criada entre alguns ns da rede.
Sincronizao.
Compartilhamento de dados.
Memria compartilhada.
Threads do mesmo processo.
Processos com uma regio de memria compartilhada.
Processos compartilhando um recurso em comum (como um arquivo).
Troca de mensagem.
Abstrao de comunicao
Nem sempre fcil escrever um programa correto utilizando troca explcita de
mensagens.
Algumas abstraes tentam esconder completamente a comunicao.
Enquanto outras abstraes no tentam esconder a comunicao, mas
esconde os detalhes da comunicao.
Essas abstraes so utilizadas como base para a maioria dos sistemas
middleware.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Marshalling e Unmarshalling
Marshalling o empacotamento dos dados feito pelo cdigo esboo no
cliente antes de ser enviado, unmarshalling o desempacotamento.
essencial que o servidor saiba o formato do marshalling para poder
recuperar os dados.
Por isso, importante que se defina o formato padro da rede.
Representao de dados
Os clientes e servidores muitas vezes rodam em sistemas diferentes e at em
linguagens diferentes.
Isso gera um problema de que a representao de dados pode no ser
uniforme atravs dos sistemas (ou at mesmo em relao a rede).
Little-endian vs big-endian.
Tamanho de palavras
Ponteiros
Como ponteiros s fazem sentido para a sua mquina, alguma estratgia precisa
ser tomada para serem compatveis com RPC
1. Serializar as estruturas de dados baseadas em ponteiros antes de envi-las.
Ou
2. Enviar uma mensagem para o cliente toda vez que um ponteiro for encontrado
no servidor.
Sncrono ou assncrono
Geralmente a abstrao RPC assume comunicao bloqueante.
Esse o comportamento padro, j que clientes chamando procedimentos
RPC por ficam bloqueados at que o procedimento termine de executar e
responda com o retorno.
Porm, h casos em que o comportamento bloqueante no desejado.
Acoplagem de servios
Um cliente precisa saber a quem enviar uma mensagem RPC.
Essa informao obtida atravs de um servio que permita o registro e
busca de servios (um servio de acoplagem).
Um servio de acoplagem geralmente disponibiliza uma interface como a
seguinte:
Protocolo de transporte
Qual protocolo utilizar para transmitir as mensagens RPC?
TCP
Entrega confivel.
O overhead adicional pode ser significativo.
UDP
Mais leve.
A aplicao cliente deve manter um temporizador e reenviar a mensagem caso a
resposta no chegue antes do temporizador zerar.
Frameworks conhecidos
O primeiro framework amplamente utilizado foi o Open Network Computing
Remote Procedure Call (ONC RPC), proposto pela Sun Microsystems.
Sun/ONC RPC
Interface Definition Language (IDL) de acordo com o formato Sun/ONC.
Um arquivo idl (sufixo .x) descreve definies de estruturas e funes remotas.
Um grupo de funes remotas so agrupadas em uma verso.
Uma ou mais verses so agrupadas em um programa.
program PROGRAMA {
version VERSAO {
tipo_retorno FUNCAO(estrutura) = ID_FUNO;
} = ID_VERSO;
} = ENDEREO; (0x00000000 ~ 0x1fffffff)
RPCGEN
A ferramenta rpcgen gera mdulos de interface de programas remotos,
compilando o arquivo fonte IDL na linguagem ONC RPC para C.
A sada padro do rpcgen :
Gabarito calculadora
dontpad.com/gabaritocalculadorarpc
Obrigado!
Dvidas?