38
Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de I nformática / UFG 1 Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática - UFG

Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

  • Upload
    rufus

  • View
    37

  • Download
    0

Embed Size (px)

DESCRIPTION

Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos. Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática - UFG. Visão Geral. Redes de computadores Tipos de Middleware Transaction-Oriented Middleware Message-Oriented Middleware - PowerPoint PPT Presentation

Citation preview

Page 1: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 1

Sistemas Distribuídos

Princípios de Middleware para Objetos Distribuídos

Especialização em Redes de Computadores

Prof. Fábio M. CostaInstituto de Informática - UFG

Page 2: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 2

Visão Geral

• Redes de computadores

• Tipos de Middleware – Transaction-Oriented Middleware– Message-Oriented Middleware– Remote Procedure Calls

• Middleware orientado a objetos

• Exemplos: CORBA, COM, Java RMI

Page 3: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 3

Redes de Computadores

Page 4: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 4

O Modelo de Referência ISO/OSI

• Modelo da rede em 7 camadas– Hoje: finalidade didática– Internet: 5 camadas

• Três camadas superiores podem ser implementadas sob a forma de uma plataforma de middleware

• Três camadas inferiores: tipicamente invisíveis ao middleware Física

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace de Dados

Page 5: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 5

A Camada de Transporte

• Nível 4 do modelo de referência ISO/OSI

• Lida com o transporte de informações fim-a-fim através da rede

• Base para a construção de plataformas de middleware

• Dois protocolos mais usados na Internet:– TCP– UDP

Física

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace de Dados

Page 6: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 6

Transmission Control Protocol (TCP)

• Provê suporte para um fluxo de dados bi-direcional entre dois componentes distribuídos

• Serviços do tipo “terminal remoto” (ex.: rsh, rlogin) são baseados neste protocolo

• Confiável mas lento– Orientado a conexões, com retransmissões em caso de

erros

• Realiza buferização em ambos os extremos da conexão: controle de fluxo para permitir a comunicação entre computadores com velocidades diferentes

Page 7: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 7

Uso de TCP para Implementação de Requisições

Aplicação

Apresentação

Sessão

Transporte

Aplicação

Apresentação

Sessão

TransporteFluxo de Entrada

Fluxo de Saída

Requisições

Client Server

Resultados

Page 8: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 8

User Datagram Protocol (UDP)

• Habilita um componente a passar uma mensagem contendo uma seqüência de bytes para outro componente– Mensagem = Datagrama

– Cada datagrama é transmitido independentemente

• O componente de destino da mensagem é identificado dentro da própria mensagem

• Não-confiável, mas rápido• Comprimento restrito de mensagens• Mensagens são enfileiradas no receptor

Page 9: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 9

Uso de UDP na Implementação de Requisições

Datagramas de Resultado

Apliicação

Apresentação

Sessão

Transporte

Aplicação

Apresentação

Sessão

Transporte

Datagramas de Requisição

Cliente Servidor

Page 10: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 10

Tipos de Middleware

Page 11: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 11

Implicações do Uso Direto de Protocolos de Rede

• Mapeamento manual de parâmetros (complexos) de requisições para fluxos de bytes

• Resolução manual de problemas de heterogeneidade de dados

• Identificação manual dos componentes• Implementação manual da ativação de componentes• Nenhuma garantia de tipagem segura (type safety)• Sincronização manual das interações entre objetos

distribuídos• Nenhuma garantia (automática) de qualidade de serviço

Page 12: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 12

Middleware

• Camada de software entre as aplicações e o sistema operacional / rede

• Torna transparente a distribuição• Resolve heterogeneidade de:

– Hardware

– Sistemas Operacionais

– Redes

– Linguagens de programação

• Provê um ambiente de desenvolvimento e de tempo de execução para sistemas distribuídos

Page 13: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 13

Tipos de Middleware

• Orientado a Transações– IBM CICS

– BEA Tuxedo

– Encina

• Orientado a Mensagens– IBM MQSeries

– DEC Message Queue

– NCR TopEnd

• Sistemas de RPC– ANSA

– Sun ONC

– OSF/DCE

• Orientado a objetos– OMG/CORBA

– DCOM

– Java/RMI

• Vamos primeiro estudar RPC para entender as origens de middleware orientado a objetos

Page 14: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 14

Remote Procedure Calls

• Permite que chamadas de procedimentos cruzem os limites entre máquinas diferentes

• Interfaces são definidas usando uma Linguagem de Definição de Interfaces (IDL)– Especifica os procedimentos disponíveis

remotamente

• Um compilador RPC gera a funcionalidade de camada de apresentação e de sessão a partir do código IDL

Page 15: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 15

Exemplo de IDL (Sun RPC)

const NL=64;struct Player { struct DoB {int day; int month; int year;} string name<NL>;};program PLAYERPROG { version PLAYERVERSION { void PRINT(Player)=0; int STORE(Player)=1; Player LOAD(int)=2; }= 0;} = 105040;

Page 16: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 16

Funcionalidade da Camada de Apresentação

Resolução de Heterogeneidade de Dados

Representação de dados comum

Transmissão da declaração dos dados

Marshalling e Unmarshalling

estático dinâmico

Page 17: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 17

Marshalling e Unmarshalling

• Marshalling:– Converter

estruturas de dados em um formato no qual possam ser transmitidas

– Seqüência de bytes• Unmarshalling:

– Remontar a estrutura de dados original a partir do formato serializado

char * marshal() { char * msg; msg=new char[4*(sizeof(int)+1) + strlen(name)+1]; sprintf(msg,"%d %d %d %d %s", dob.day,dob.month,dob.year, strlen(name),name); return(msg);};void unmarshal(char * msg) { int name_len; sscanf(msg,"%d %d %d %d ", &dob.day,&dob.month, &dob.year,&name_len); name = new char[name_len+1]; sscanf(msg,"%d %d %d %d %s", &dob.day,&dob.month, &dob.year,&name_len,name);};

Page 18: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 18

Chamada de Método Local vs. Requisição de Objeto

ChamadoChamadoChamadoChamado

StubStub

CallerCaller

ChamadoChamadoChamadoChamado

ChamadorChamador

StubStubStubStub

ChamadorChamador

Camada de Transportd (TCP ou UDP)Camada de Transportd (TCP ou UDP)Camada de Transportd (TCP ou UDP)Camada de Transportd (TCP ou UDP)

Page 19: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 19

Stubs

• A criação de código para marshalling e unmarshalling é tediosa e passível de erros

• Este código pode ser gerado automaticamente a partir de definições de interface

• Código gerado é embutido em stubs para cliente e servidor– Stub cliente: representa o servidor para o cliente

– Stub servidor: representa o cliente para o servidor

• Stubs implementam tipagem segura• Também realizam sincronização de requisições

Page 20: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 20

Sincronização

• Objetivo: obter sincronização similar à chamada de métodos locais

• Papel dos stubs:– Stub cliente envia a requisição e espera até que

o servidor termine– Stub servidor espera por requisições e chama o

objeto servidor quando a requisição chega

Page 21: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 21

Tipagem Segura (Type Safety)• Como verificar que:

– servidores são capazes de realizar as operações requisitadas pelos clientes

– argumentos fornecidos pelos clientes estão de acordo com os parâmetros esperados pelo servidor

– resultado fornecido pelo servidor está de acordo com as expectativas dos clientes

• A plataforma de middleware age como um mediador entre o cliente e o servidor para garantir a tipagem segura das requisições

• Através de definições de interfaces em uma linguagem padrão

Page 22: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 22

Provendo Tipagem Segura

Definição deInterface

ServidorCliente

RequisiçãoRequisição

RespostaResposta

Page 23: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 23

Camada de Sessão

• Implementa:– Identificação de

servidores de RPC– Ativação de servidores

de RPC– Despacho de operações

no servidor

– Binding – ligar clientes a servidores

Física

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace de Dados

Page 24: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 24

Exemplo: Identificação de Servidor de RPC

print_person(char * host, Player * person) { CLIENT *clnt;

//Cria stub cliente: clnt = clnt_create(host, 105040, 0, "udp"); if (clnt == (CLIENT *) NULL) exit(1); //Se criação bem sucedida, chama o stub: if (print_0(person, clnt)==NULL) clnt_perror(clnt, "call failed"); clnt_destroy(clnt);}

Page 25: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 25

Middleware Orientado a Objetos

Page 26: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 26

Linguagem de Definição de Interfaces

• Cada plataforma de middleware orientada a objetos possui uma linguagem de definição de interfaces (IDL) própria

• Além das características suportadas por uma IDL de RPCs, IDLs orientadas a objetos oferecem suporte para:– tipos de objetos como parâmetros

– tratamento de falhas (via exceções)

– herança (de interface)

• Compiladores IDL (providos pela plataforma) criam os stubs cliente e servidor para implementar as funcionalidades de camada de sessão e apresentação

Page 27: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 27

Exemplo de IDLinterface Player : Object { typedef struct Date { short day; short month; short year; } Date; attribute string name; readonly attribute Date DoB;};interface PlayerStore : Object { exception IDNotFound{}; short save (in Player p); Player load(in short id) raises(IDNotFound); void print(in Player p);};

Page 28: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 28

Implementação da Camada de Apresentação

• Além da funcionalidade de camada de apresentação típica de RPCs, plataformas de middleware orientadas a objetos precisam:– definir uma representação para referências de

objetos que seja apropriada para transmissão– lidar com exceções– fazer o marshalling de atributos herdados (de

outras interfaces)

Page 29: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 29

Implementação da Camada de Sessão

Referênciasde Objeto Hosts Processos Objetos

Page 30: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 30

Desenvolvendo comMiddleware Orientado a Objetos

Page 31: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 31

Etapas no Desenvolvimento

Definição deInterfaces

Design

Codificaçãodos Servidores

Codificaçãodos Clientes

Registro dosServidores

Geração deStubs Servidores

Geração deStubs Cliente

Page 32: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 32

Provendo Transparência de Acesso

• Stubs cliente possuem as mesmas operações que os respectivos objetos servidores– embora com diferentes implementações

• Portanto, clientes podem– fazer chamadas locais aos stubs cliente, ou

– fazer chamadas locais ao objeto servidorTudo isto sem precisar alterar a sintaxe de chamada

• A plataforma de • A plataforma de middleware pode acelerar a

comunicação se os objetos são locais aos clientes (não usando o stub)

Page 33: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 33

Provendo Transparência de Localização

• Identidade de objetos

• Referências de objetos

• Clientes requisitam operações ao objeto servidor identificado por uma referência de objeto

• Nenhuma informação sobre a localização física do objeto é necessária

• Como obter referências de objetos?

Page 34: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 34

Geração dos Stubs

Team.idlTeam.idl

incluído emgeralê

IDL-Compiler

Teamcl.hh

Teamcl.cc Teamsv.cc

Teamsv.hh

Page 35: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 35

Implementação de Clientes e Servidores

C++ Compiler, Linker

Server

Client.ccClient.cc Server.ccServer.cc

C++ Compiler, LinkerC++ Compiler, Linker

Client

Team.idlTeam.idl

included ingeneratesreads

IDL-Compiler

Teamcl.hh

Teamcl.cc Teamsv.cc

Teamsv.hh

Page 36: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 36

Registrando o Objeto Servidor

Adaptador de objetos– Componente da plataforma responsável por

adaptar uma mensagem recebida através da rede para uma chamada local a um objeto servidor específico

– Efetua a localização e ativação/inicialização do objeto servidor

– Isto é: funcionalidade de camada de sessão

Page 37: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 37

Registrando o Objeto Servidor (cont.)

• Objetos servidores são registrados em um repositório de implementações

• O processo de registro depende de cada plataforma de middleware específica

• O adaptador de objetos faz uma busca no repositório de implementações antes de ativar o objeto– Para obter a implementação do objeto

Page 38: Sistemas Distribuídos Princípios de Middleware para Objetos Distribuídos

Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG 38

Pontos-Chave• Plataformas de middleware são construídas sobre a

camada de transporte• Há vários tipos/formas de middleware• Plataformas de middleware orientadas a objetos

provêem IDLs• Plataformas de middleware orientado a objetos

implementam as camadas de sessão e apresentação• Implementação da camada de apresentação é feita

através de stubs clientes e servidores, derivados de definições de interfaces em IDL

• A camada de sessão é implementada em adaptadores de objetos