400 likes | 554 Views
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
E N D
Sistemas DistribuídosPrincípios de Middleware para Objetos Distribuídos Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática - UFG 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 • Remote Procedure Calls • Middleware orientado a objetos • Exemplos: CORBA, COM, Java RMI Prof. Fábio M. Costa - Instituto de Informática / UFG
Redes de Computadores Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Aplicação Apresentação Sessão Transporte Rede Enlace de Dados Física Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Aplicação Apresentação Sessão Transporte Rede Enlace de Dados Física Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
Uso de TCP para Implementação de Requisições Client Server Aplicação Aplicação Apresentação Apresentação Sessão Sessão Requisições Transporte Fluxo de Entrada Transporte Fluxo de Saída Resultados Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
Uso de UDP na Implementação de Requisições Cliente Servidor Apliicação Aplicação Apresentação Apresentação Sessão Sessão Datagramas de Requisição Transporte Transporte Datagramas de Resultado Prof. Fábio M. Costa - Instituto de Informática / UFG
Tipos de Middleware Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Tipos de Middleware Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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; Prof. Fábio M. Costa - Instituto de Informática / UFG
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 eUnmarshalling estático dinâmico Prof. Fábio M. Costa - Instituto de Informática / UFG
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); }; Marshalling e Unmarshalling Prof. Fábio M. Costa - Instituto de Informática / UFG
Chamado Caller Chamador Chamado Stub Chamada de Método Local vs. Requisição de Objeto Chamador Stub Camada de Transportd (TCP ou UDP) Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
Provendo Tipagem Segura Definição de Interface Servidor Requisição Cliente Resposta Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Aplicação Apresentação Sessão Transporte Rede Enlace de Dados Física Prof. Fábio M. Costa - Instituto de Informática / UFG
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); } Prof. Fábio M. Costa - Instituto de Informática / UFG
Middleware Orientado a Objetos Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
Exemplo de IDL interface 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); }; Prof. Fábio M. Costa - Instituto de Informática / UFG
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) Prof. Fábio M. Costa - Instituto de Informática / UFG
Implementação da Camada de Sessão Referências de Objeto Hosts Processos Objetos Prof. Fábio M. Costa - Instituto de Informática / UFG
Desenvolvendo comMiddleware Orientado a Objetos Prof. Fábio M. Costa - Instituto de Informática / UFG
Geração de Stubs Servidores Geração de Stubs Cliente Etapas no Desenvolvimento Design Definição de Interfaces Codificação dos Servidores Codificação dos Clientes Registro dos Servidores Prof. Fábio M. Costa - Instituto de Informática / UFG
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 servidor • Tudo 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) Prof. Fábio M. Costa - Instituto de Informática / UFG
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? Prof. Fábio M. Costa - Instituto de Informática / UFG
Team.idl IDL-Compiler Teamcl.hh Teamsv.hh Teamcl.cc Teamsv.cc incluído em gera lê Geração dos Stubs Prof. Fábio M. Costa - Instituto de Informática / UFG
Team.idl Client.cc Server.cc IDL-Compiler Teamcl.hh Teamsv.hh Teamcl.cc Teamsv.cc C++ Compiler, Linker C++ Compiler, Linker included in generates reads Client Server Implementação de Clientes e Servidores Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG
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 Prof. Fábio M. Costa - Instituto de Informática / UFG