1 / 38

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

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

rufus
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  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 Prof. Fábio M. Costa - Instituto de Informática / UFG

  3. Redes de Computadores 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 Aplicação Apresentação Sessão Transporte Rede Enlace de Dados Física 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 Aplicação Apresentação Sessão Transporte Rede Enlace de Dados Física 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 Prof. Fábio M. Costa - Instituto de Informática / UFG

  7. 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

  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 Prof. Fábio M. Costa - Instituto de Informática / UFG

  9. 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

  10. Tipos de Middleware 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 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 Prof. Fábio M. Costa - Instituto de Informática / UFG

  13. 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

  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 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; 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 eUnmarshalling estático dinâmico Prof. Fábio M. Costa - Instituto de Informática / UFG

  17. 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

  18. 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

  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 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 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 Prof. Fábio M. Costa - Instituto de Informática / UFG

  22. Provendo Tipagem Segura Definição de Interface Servidor Requisição Cliente Resposta 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 Aplicação Apresentação Sessão Transporte Rede Enlace de Dados Física 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); } Prof. Fábio M. Costa - Instituto de Informática / UFG

  25. Middleware Orientado a Objetos 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 Prof. Fábio M. Costa - Instituto de Informática / UFG

  27. 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

  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) Prof. Fábio M. Costa - Instituto de Informática / UFG

  29. Implementação da Camada de Sessão Referências de Objeto Hosts Processos Objetos Prof. Fábio M. Costa - Instituto de Informática / UFG

  30. Desenvolvendo comMiddleware Orientado a Objetos Prof. Fábio M. Costa - Instituto de Informática / UFG

  31. 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

  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 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

  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? Prof. Fábio M. Costa - Instituto de Informática / UFG

  34. 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

  35. 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

  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 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 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 Prof. Fábio M. Costa - Instituto de Informática / UFG

More Related