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
Download

objeto local.