Upload
internet
View
103
Download
0
Embed Size (px)
Citation preview
Sistemas Distribuídos17/08/2011
IntroduçãoTudo tratado como Objeto;Serviços e recursos como objetos a serem
invocados;Facilita:
Transparência Oculta aspectos da distribuição
Sistemas DistribuídosBaseados em ObjetosArquiteturaProcessosComunicaçãoNomeaçãoSincronizaçãoConsistência e ReplicaçãoTolerância a FalhaSeguranç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 versusversus 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 versusversus 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.
ArquiteturaModelo de objetos
O Globe não adota modelo de objetos remotos.Estado do processo pode ser distribuído e
replicadoA 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.
ArquiteturaA 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.
ArquiteturaSubobjeto de semântica.Subobjeto do comunicação. Subobjeto de controle.
ProcessosServidor de objeto
Suporte a objetos distribuídosUm 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
ProcessosAbordagem alternativa, objetos compartilhem,
no mínimo o códigoAbordagem 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 controleNão conhecem a interface específica dos
objetos, por isso são genéricos.
ProcessosExemplo: sistema de execução lce
ComunicaçãoClientes remotos invocam objetos.
Baseado em RPC (chamada a procedimento remoto);
Sistemas que suportam objetos distribuídos X RPCSistemas: 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.
Vinculação implícitaCliente invoca métodos diretamente;Utiliza referência a um objeto.
Vinculação explícitaCliente chama função especial para se vincular ao
objeto.Após chamar, consegue invocar os métodos.
Comunicação
Vinculação Implícita versusVinculação Explícita
Implementação de referências do objetoEndereç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çãoImplementaçã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 dinamicaAplicação seleciona método a ser invocado em runtime;
Comunicação
Transferência de parâmetrosObjetos 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
Comunicação
Modelo de objetos distribuídos em JavaObjetos 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 JavaComo 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 CorbaFaz uma inerente abordagem da comunicação
baseada em objeto.Invocação assíncrona de métodoModelo de chamada de retorno do Corba
Troca de mensagens baseada em objetos
Nomeação Referências de objeto em CorbaReferências de objeto em Globe
SincronizaçãoSincronizaçã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 qTrava 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çãoProcesso 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çãoConsistê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
Granularidade:Threads processem requisições em ordem no
servidorNão é necessário escalonamento
determinístico para os threadsAssegurar que todas as requisições para o
mesmo objeto replicado sejam manipulados na ordem que são entregues
Consistência e Replicação
Consistência e Replicação
Ambientes de replicaçãoInvocaçõ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-asOs 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 ObjetosUm grupo consiste em uma ou mais cópias
idênticas do mesmo objeto.
Transparente para os clienteGerenciador de Replicações
Responsável por criar e gerenciar um grupo de objetos replicados.
Corba Tolerante a Falhas
Java Tolerante a FalhaBackups Primários
Um servidor coordena todas as ações que precisam ser executadas e institui periodicamente o backup para fazer o mesmo.
Replicação ativaAs 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 PlataformaControle Reverso de AcessoChave de ObjetoChave de RéplicaChave do Usuário
Globe
Invocação Segura de Métodos de objeto em GlobeA 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 GlobeNecessário usar um total de treze etapas