Sistemas Distribuídos 17/08/2011 Introdução Tudo tratado como Objeto; Serviços e recursos como objetos a serem invocados; Facilita: Transparência Oculta aspectos da distribuição Sistemas Distribuídos Baseados em Objetos Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Tolerância a Falha Segurança Arquitetura Neste seção, em primeiro lugar, examinaremos com mais profundidade a arquitetura geral de sistemas distribuídos baseados em objetos. E logo após iremos ver como foram desenvolvidos princípios específicos nesses sistemas. Objetos distribuídos A característica fundamental de um objeto é que ele encapsula dados, denominados estado, e as operações executadas nesses dados, denominadas métodos. Métodos são disponibilizado por meio de uma interface . É importante entender que não há nenhuma modo legal pelo qual um processo possa acessar ou manipular o estado de um objeto, exceto pela invocação dos métodos disponibilizado para ele por meio de uma interface de objeto Objetos distribuídos Para começar a ter um entendimento sobre o objetos distribuídos. Quando um cliente se vincula a um objeto distribuído, uma implementação da interface do objeto, denominada Proxy, é carregada no espaço de endereço do cliente. Um Proxy é a análogo a um apêndice de cliente em sistemas RPC. A única coisa que ele faz é montar invocações a métodos em mensagens e desmontar mensagens de respostas. Objetos distribuídos O objeto propriamente dito reside em uma maquina do servidor, onde oferece a mesma interface oferecida na maquina cliente. Requisições de invocações que chegam são passadas para um apêndice servidor, que as desmonta para fazer invocações de métodos na interface de objetos que esta no servidor. O apêndice do servidor também é responsável por montar mensagens de respostas para o cliente. O apêndice do lado servidor é denominado esqueleto, por fornecer o necessário para fazer com que o middeware acesse os objetos . Objetos de tempo de compilação versus objetos de tempo de execução A utilização de objetos de tempo de compilação em sistemas distribuídos muitas vezes facilita bastante a construção de aplicações. A compilação da definição de classe resulta em códigos que permite a ela instanciar objetos em Java. Sendo assim interfaces pode ser compilados do lado do cliente e do servidor o que permite que objetos em Java pode ser invocados remotamente. A desvantagem deste tempo de compilação seria a dependência de determinada linguagem. Objetos de tempo de compilação versus objetos de tempo de execução Para isso o objeto de tempo de execução seu modo de implementar é basicamente deixado aberto. A essência é como deixar que tal implementação aparente ser um objeto cujos métodos possam ser invocados de uma maquina remota. Uma abordagem comum e usar um adaptador de objeto. O adaptador de objeto desempenha o papel registrar uma implementação de uma interface e na seqüência, disponibiliza aquela interface para invocações( remotas ). Objetos persistente e transientes Um objeto persistente é o que continua a existir mesmo que, no momento em questão, ele não esteja contido no espaço de endereços de qualquer processo servidor. Um objeto transiente é um objeto que existe somente enquanto existir o servidor que o está hospedando. Quando o servidor sai ele deixa de existir. Enterprise Java Beans UM EJB (Enterprise Java Beans) e um objeto em java hospedado por um servidor especial que oferece aos clientes remotos modos diferentes para invocar aquele objeto. Este servidor tem que fornecer suporte para separar funcionalidade de aplicação de funcionalidade orientada a sistemas. Arquitetura Modelo de objetos O Globe não adota modelo de objetos remotos. Estado do processo pode ser distribuído e replicado A figura 10.3 apresenta um objeto distribuído por 4 processos, cada um executando em uma máquina diferente. Em Globe, objetos são denominados objetos compartilhados distribuídos. Arquitetura A implementação local é denominada representação local ou objeto local. Há dois tipos de objetos locais Objeto local primitivo Objeto local composto A composição é usada para construir objeto local que é necessário para implementar objetos compartilhados distribuídos. Arquitetura Subobjeto de semântica. Subobjeto do comunicação. Subobjeto de controle. Processos Servidor de objeto Suporte a objetos distribuídos Um objeto consiste em duas partes. (podem estar separadas) Alternativas para invocar objetos Considerar que há somente um modo de invocar objetos Servidor suportar políticas diferentes (objetos transientes) Vantagens: Só necessita de recurso quando for utilizado Desvantagem: Pode demorar algum tempo para ser concluída Processos Abordagem alternativa, objetos compartilhem, no mínimo o código Abordagem mais simples com um único thread de controle. Adaptador de objetos Software que implementa uma política de ativação específica. Tem mais de um objeto sob seu controle Não conhecem a interface específica dos objetos, por isso são genéricos. Processos Exemplo: sistema de execução lce Comunicação Clientes remotos invocam objetos. Baseado em RPC (chamada a procedimento remoto); Sistemas que suportam objetos distribuídos X RPC Sistemas: referência dos objetos no âmbito do sistema. Transparência de distribuição aprimorada com implementação de referência de objeto sendo ocultada. Processos vinculados à objetos; Proxy no espaço de endereços do processo; Interface com métodos acessíveis. Comunicação Vinculação implícita Cliente invoca métodos diretamente; Utiliza referência a um objeto. Vinculação explícita Cliente chama função especial para se vincular ao objeto. Após chamar, consegue invocar os métodos. Vinculação Implícita versus Vinculação Explícita Comunicação Implementação de referências do objeto Endereço de rede da máquina do objeto; Porta que identifica o servidor; Indicação do objeto. Desvantagens da implementação: Se servidor cair e novas portas forem designadas para ele, referências serão inválidas; Solução: Daemon local para monitorar designações servidor/porta com tabela de portas; Comunicação Desvantagens da implementação: Servidor muda de máquina: necessário invalidar referências aos seus objetos; Solução: servidor de localização – monitora a máquina que o servidor executa num momento e mantém referência do objeto; Cliente e servidor devem ter mesmos protocolos: de transporte; para montar/desmontar parâmetros; para estabelecer conexão inicial; etc. Comunicação Manipulador de implementação Implementação completa do proxy referenciada; Cliente carrega de forma dinâmica quando vincula ao objeto e não precisa implementação de protocolo específico; Proxy pode ser específico para cada objeto; Comunicação Invocação de método remoto (RMI) Invocação do objeto por proxy; Melhor que RPC; Invocação estática Interface do objeto tem que ser reconhecida quando aplicação cliente em desenvolvimento; Se interface mudar, aplicação cliente tem que ser recompilada Invocação dinamica Aplicação seleciona método a ser invocado em runtime; Comunicação Transferência de parâmetros Objetos distribuídos acessados por máquinas remotas. Referência à objeto remoto: Copiada e transferida como parâmetro de valor; Referencia à objeto local: Objeto copiado e passado junto à invocação; Comunicação Modelo de objetos distribuídos em Java Objetos distribuídos Java também adota objetos remotos como a única forma de objetos distribuídos Interfaces são implementadas do modo usual por meio de um proxy, que oferece exatamente as mesmas interfaces que o objeto remoto. Invocação de objeto remoto em Java Objetos locais e remotos em Java Como a distinção entre objetos locais e remotos dificilmente é visível no nível de linguagem ,Java pode ocultar a maioria das diferenças durante a invocação de um método remoto Distinção feita entre objetos locais e objetos remotos durante uma RMI Construção do objeto remoto Em essência é construído com base em duas classes diferentes. • Função do Proxy Troca de mensagens baseada em objetos Troca de mensagem em Corba Faz uma inerente abordagem da comunicação baseada em objeto. Invocação assíncrona de método Modelo de chamada de retorno do Corba Troca de mensagens baseada em objetos Nomeação Referências de objeto em Corba Referências de objeto em Globe Sincronização Sincronização no Servidor de objetos Se chegarem varias requisições para o mesmo objeto o servidor pode decidir serializar as requisições e travar o objeto quando ele precisar fazer requisições remotas Problema- se o o cliente q Trava pode ser feita no lado servidor Abordagem adotada em JAVA, se dois processos chamarem um método sincronizado, um será bloqueado o outro seguirá Sincronização Processo de trava visível para o processo que acessa os recursos Processo que acessa os recursos não tem conhecimento de possíveis travas *Travas ocorre quando o objeto é protegidos contra acessos concorrentes Consistência e Replicação Consistência de entrada Quando um método do objeto estiver em execução, nenhum outro método poderá ser executado Nunca duas invocações de métodos independentes ocorram em replicas diferentes ao mesmo tempo Como? Baseado em primarios: esforço do desenvolvedor para serializar invocaçoes do objeto Multicast totalmente ordenado:Realizado no middleware, sem esforço do desenvolvedor Consistência e Replicação Granularidade: Threads processem requisições em ordem no servidor Não é necessário escalonamento determinístico para os threads Assegurar que todas as requisições para o mesmo objeto replicado sejam manipulados na ordem que são entregues Consistência e Replicação Ambientes de replicação Invocações para objetos são interceptadas em: No lado do cliente-um pouco antes de a invocação ser passada para o apêndice. Dentro do apendice do cliente, onde a intercepção é parte do algoritmo de replicação No lado do servidor, um pouco antes do objeto ser invocado. Ambientes de replicação Invocações Replicadas É quando um objeto chama outro que esta chamando outro, se o intermediário for replicado o ultimo objeto também será invocado essa quantidade de vezes. Como resolver: Não permitíla-as Os outros modos serão detalhados no slide 10 de acordo com as figuras. Invocações Replicadas Invocações Replicadas Corba Tolerante a Falhas Replicar Objetos em Grupos de Objetos Um grupo consiste em uma ou mais cópias idênticas do mesmo objeto. Transparente para os cliente Gerenciador de Replicações Responsável por criar e gerenciar um grupo de objetos replicados. Corba Tolerante a Falhas Java Tolerante a Falha Backups Primários Um servidor coordena todas as ações que precisam ser executadas e institui periodicamente o backup para fazer o mesmo. Replicação ativa As réplicas são mantidas atualizadas permitindo que cada uma delas execute as mesmas operações na mesma ordem. Globe Repete o tópico em cima se precisar Segurança de Plataforma Controle Reverso de Acesso Chave de Objeto Chave de Réplica Chave do Usuário Globe Invocação Segura de Métodos de objeto em Globe A invocação segura de método pode ser subdividida em pequenas unidades, sendo que cada uma delas é necessária para assegurar que um cliente autenticado possa executar uma invocação autorizada em uma réplica autenticada. Invocação Segura de Métodos de objeto em Globe Necessário usar um total de treze etapas