Sistemas Distribuídos: Conceitos e Projeto RPC e RMI Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 15 de abril de 2013 Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 1 / 1
Agenda Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 2 / 1
Chamada de Procedimento Remoto (RPC) Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 3 / 1
Objetivo RPC Permitir que a chamada a um procedimento remoto se assemelhe ao programador o máximo possível com a chamada a um procedimento convencional; A idéia surgiu em 1984 em um artigo escrito por Birrell e Nelson. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 4 / 1
Chamada a Procedimento Local count = read(fd, buf, nbytes) Figura: a) Passagem de parâmetros em uma chamada local: a pilha antes da chamada ao procedimento b) A pilha enquanto o procedimento chamado está ativo Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 5 / 1
Passagem de Parâmetros Por valor (fd e nbytes): O parâmetro é copiado para a pilha. Mudanças em seu valor não afetam quem chamou o procedimento; Por referência (buf): É copiado para a pilha a referência ao parâmetro, isto é, um apontador (endereço de memória) da variável. Portanto, Alterações em seu valor no procedimento chamado afeta quem o chamou; Copy/restore: O parâmetro é copiado para a pilha e depois da chamada copiado de volta, sobrescrevendo o valor original. Normalmente possui a mesma semântica da cópia por referência exceto em situações como o mesmo parâmetro sendo enviado mais de uma vez. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 6 / 1
Funcionamento RPC Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 7 / 1
Considerações do Mecanismo RPC Dado que os procedimentos executam em máquinas diferentes, os seguintes aspectos devem ser levados em consideração: A semântica da passagem de parâmetros deve ser adaptada; Parâmetros devem traduzidos caso as máquinas não sejam idênticas; As duas máquinas podem falhar, causando problemas. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 8 / 1
Implementação da Chamada a Procedimento Remoto Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 9 / 1
Implementação da Chamada a Procedimento Remoto 1 O procedimento cliente chama localmente o stub cliente; 2 Stub cliente constrói a mensagem e chama o SO local; 3 O SO local envia a mensagem ao SO remoto; 4 O SO Remoto entrega a mensagem ao stub servidor; 5 O stub servidor desempacota os parâmetros e chama o procedimento servidor; 6 O servidor realiza o trabalho retornando o resultado ao stub; 7 O stub servidor empacota o resultado em uma mensagem e chama o SO local; 8 O SO do servidor envia a mensagem ao SO do cliente; 9 O SO do cliente entrega a mensagem ao stub cliente; 10 O stub cliente desempacota o resultado e o retorna ao cliente. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 10 / 1
Aspectos Semânticos Ponteiros não possuem significado no ambiente do procedimento chamado; A semântica da passagem de parâmetros por referência pode ser simulada utilizando-se call-by-copy/restore ; Não é possível o acesso a variáveis globais; Estruturas complexas, como árvores, devem ser achatadas e remontadas. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 11 / 1
Passagem de Parâmetros Marshalling: processo de se empacotar uma coleção de itens de dados em um formato específico para sua transmissão em uma mensagem; Unmarshalling: é o processo inverso. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 12 / 1
Empacotamento da Chamada Remota Além dos parâmetros, outras informações como o nome do procedimento sendo invocado devem constar da mensagem; Caso as máquinas não sejam idênticas, os bits que compõem a mensagem podem ser erroneamente interpretados: Codificação de caracteres: EBCDIC / ASCII Representação de números: little endian / big endian Portanto um formato externo deve ser utilizado Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 13 / 1
Programando Chamadas a Procedimentos Remotos: IDL: Linguagem de Definição de Interfaces Especifica as características dos procedimentos disponibilizado por um servidor: nome dos procedimentos e seus parâmetros (assinaturas); Um compilador de interface gera: Stub cliente Stub servidor Cabeçalhos dos procedimentos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 14 / 1
Exemplo IDL: Sun XDR Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 15 / 1
Compilação e Geração do Programas Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 16 / 1
Binding (em DCE) Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 17 / 1
Chamada a Métodos Remotos (RMI) Chamada a Métodos Remotos (RMI) Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 18 / 1
Chamada a Métodos Remotos (RMI) Objetos Distribuídos No paradigma orientado a objetos o estado de um programa é separado em partes, associadas a cada objeto. A distribuíção física dos objetos é, portanto, uma extensão natural; Invocações de métodos em objetos remotos são chamadas RMI (Remote Method Invocation). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 19 / 1
Chamada a Métodos Remotos (RMI) Invocações Remota e Local Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 20 / 1
Chamada a Métodos Remotos (RMI) Objeto Remoto Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 21 / 1
Chamada a Métodos Remotos (RMI) Mecanismo de Chamada a Objeto Remoto Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 22 / 1
Chamada a Métodos Remotos (RMI) Algumas Tecnologias de Objetos Distribuídos Java RMI (Remote Method Invocation); OMG CORBA (Common Object Request Broker Architecture); Microsoft DCOM (Distributed Common Object Model). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 23 / 1
Chamada a Métodos Remotos (RMI) IDL Uma linguagem (IDL) é utilizada para definição de interfaces remotas; Objetos remotos podem ser implementados em várias linguagens, como Java, C++, Cobol ou Phyton desde que haja um mapeamento para IDL e compiladores específicos; Java RMI permite a definição de interfaces remotas da mesma forma que interfaces convencionais, extendendo-se a interface Remote. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 24 / 1
Chamada a Métodos Remotos (RMI) Exemplo CORBA IDL Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 25 / 1
Chamada a Métodos Remotos (RMI) Arquitetura CORBA Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 26 / 1
Chamada a Métodos Remotos (RMI) Arquitetura CORBA ORB - Object Request Broker: age como um barramento para troca de mensagens entre objetos distribuídos; Stub: código gerado pelo compilador IDL a ser linkeditado ao código cliente; Skeleton: código gerado pelo compilador IDL a ser linkeditado ao código servidor; Object Adapter: gera referências a objetos, ativa e desativa serventes, mapea a referência a um objeto ao servente que o implementa, implementa poĺıticas; Servente: uma implementação de objeto que disponibiliza a semântica em tempo de execução de um ou mais objetos CORBA. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 27 / 1
Chamada a Métodos Remotos (RMI) Ciclo de Vida de um Objeto CORBA Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 28 / 1
Chamada a Métodos Remotos (RMI) Serviços CORBA Naming Trading Notification Persistent state Transactions Security Etc... Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 15 de abril de 2013 29 / 1