rpcs e sockets - ufpefjclf/if677/aulas/10_rpcs.pdfsocket socket canal descrição do fluxo (sockets)...

25
RPCs e Sockets

Upload: others

Post on 19-Jan-2021

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPCs e Sockets

Page 2: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

// quase Java....class HelloWorld { // método local public void sayHello() { print("Hello World!"); } // programa principal public static void main(String[] args) { new HelloWorld().sayHello(); }}

public class HelloWorld { public HelloWorld ( String name ) { Naming.rebind( name, this ); } // método remoto public String sayHello () { return "Hello World!"; } }public class HelloWorldServer { public static void main(String[] args) { HelloWorld object = new HelloWorld( "Hello" ); } }

public class HelloWorldClient { public static void main(String[] args) { // conexão HelloWorld hello_server = (HelloWorld)Naming.lookup("rmi://hostB/Hello"); // chamada remota print( hello_server.sayHello() ); } }

Page 3: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Infra-Estrutura de SW para SDsMiddleware: Arquitetura Básica em Camadas

Infra-estrutura

DistribuiçãoBarramento de Comunicação

Stub Skeleton

Serviços Comuns

Nomes Segurança Tol. aFalhas

...

Serviços Específicos

Domínio:Saúde

Domínio:Financeiro

Domínio:Multimídia

modelos de programação, onde a comunicação é abstraída, por ex. – ORB CORBA, incluindo RPC

abstrai as peculiaridades dos sistemas operacionais, encapsulando e melhorando os mecanismos de concorrência, por ex. – ex. JVM

Sistema Operacional

AplicaçãoC AplicaçãoS

Hoje!!!

Page 4: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Tópicos

Elementos básicos de comunicação Sockets

RPC: Remote Procedure Call Conceito geral → no UNIX é homônimo Para Java, usa-se RMI (Remote Method

Invocation)

Page 5: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Protocolos

Ausência de memória compartilhada => troca de mensagens Para comunicação entre processos

Depois executa um system call SO envia a mensagem pela rede para B

A e B têm que concordar sobre um conjunto de regras – protocolo

Necessários em vários níveis. Exs.: transmissão de bits detalhes de alto nível sobre como a informação é

expressa

Page 6: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

O Conceito de Protocolo

Conjunto de operações e regras para que duas entidades possam se comunicar

Pro

toco

lo T

CP

Page 7: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Camadas

Aplicações e serviços

RMI e RPC

Protocolo Request-ReplyMarshalling e eXternal Data Representation

TCP e UDP (sockets)

Middleware

Page 8: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Sockets

Page 9: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Socket

Uma porta de um canal de comunicação Permite a um processo executando num computador

enviar/receber mensagens para/de outro processo Através de uma API bem conhecida

Usado para representar uma conexão entre um cliente e um servidor

Cliente Servidorsocket socket

canal

Page 10: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Descrição do fluxo (sockets)

Page 11: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Transmissão de dados

Dados em programas são estruturados Enquanto isso, mensagens carregam informação

sequencial:� Linearização/Restauração de dados

Heterogeneidade na representação de dados em computadores Uso de um formato externo comum Inclusão de uma identificação de arquitetura na

mensagem

Page 12: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Marshalling/Unmarshalling

Marshalling: Linearização de uma coleção de itens de dados

estruturados Tradução dos dados em formato externo (ex: XDR

– eXternal Data Representation)

Unmarshalling: Tradução do formato externo para o local Restauração dos itens de dados de acordo com

sua estrutura

Page 13: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Remote Procedure Calls (RPCs)

Page 14: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Protocolo Pedido-Resposta

Request-Reply (RR)

Típico na interação cliente-servidor

Primitivas: DoOperation - clientes invocam operações

remotas GetRequest - servidor adquire os pedidos de

serviços SendReply

Page 15: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Chamadas de Procedimentos Remotos

Ideal: programar um sistema distribuído como se fosse centralizado

RPC objetiva permitir chamada de procedimento remoto como se fosse local ocultando entrada/saída de mensagens uso análogo ao de um procedimento local

Page 16: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPCs: considerações em função da distribuição

Evitar passagem de endereço e variáveis globais Sem espaço de endereçamento compartilhado

Novos tipos de erros Falhas de nós ou da rede

Atrasos

Concorrência não é tanto um problema

Por quê?

Page 17: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPC: processamento das interfaces

Objetivo: integração dos mecanismos de RPC com os programas cliente e servidor escritos em uma linguagem de programação convencional

Page 18: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPC: processamento de interface

• Stubs (no cliente e no servidor): transparência de acesso – forma de chamada remota semelhante à chamada local

tratamento de algumas exceções no local marshalling unmarshalling

C S

stub stub

rede

Page 19: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPC: tratamento da comunicação

Módulo de comunicação usa protocolo pedido-resposta para troca de mensagens entre cliente e servidor

res = srv.Soma(a,b)

res=request(srv,msg)

res = Soma(a,b)

reply(clt,res)

Mensagem de aplicação encapsulada em um request/reply

cliente servidor

DoOperationGetRequest

SendReply

Page 20: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPC: ligação

O mecanismo possui um binder para resolução de nomes, permitindo

– Ligação dinâmica

Transparência de localização

Page 21: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Chamadas e mensagens em RPC

Máquina do Cliente Máquina do Servidor

Kernel Kernel

cliente servidor

empacotaparâmetros

desempacotaresultados

desempacotaparâmetros

empacotaresultados

transporte de mensagensvia rede

12

3

4

0 56

7

8

9

1011

Page 22: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Funções dos Stubs

• Client stub1. intercepta a chamada2. empacota os parâmetros (marshalling)3. envia mensagem de request ao servidor (através do núcleo)

• Server stub (a.k.a. skeleton)1. recebe a mensagem de request (através do núcleo)2. desempacota os parâmetros (unmarshalling)3. chama o procedimento, passando os parâmetros4. empacota o resultado5. envia mensagem de resposta ao cliente (através do núcleo)

• Client stub1. recebe a mensagem de resposta (através do núcleo)2. desempacota o resultado3. passa o resultado para o cliente

Page 23: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

Funções dos Stubs

• Client stub1. intercepta a chamada2. empacota os parâmetros (marshalling)3. envia mensagem de request ao servidor (através do núcleo)

• Server stub (a.k.a. skeleton)1. recebe a mensagem de request (através do núcleo)2. desempacota os parâmetros (unmarshalling)3. chama o procedimento, passando os parâmetros4. empacota o resultado5. envia mensagem de resposta ao cliente (através do núcleo)

• Client stub1. recebe a mensagem de resposta (através do núcleo)2. desempacota o resultado3. passa o resultado para o cliente

Page 24: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPC: Passagem de Parâmetros

2-8

Distributed Systems: Principles and Paradigms, Chapter 02 © Tanenbaum and van Steen 2002

Page 25: RPCs e Sockets - UFPEfjclf/if677/aulas/10_RPCs.pdfsocket socket canal Descrição do fluxo (sockets) Transmissão de dados Dados em programas são estruturados Enquanto isso, mensagens

RPC Assíncrono

a) Interação cliente-servidor em um RPC tradicional b) Interação usando RPC assíncrono

Distributed Systems: Principles and Paradigms, Chapter 02 © Tanenbaum and van Steen 2002