Sistemas Distribuídos Baseados em Objetos
Download
Report
Transcript Sistemas Distribuídos Baseados em Objetos
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