Sistemas Distribuídos
Programação Avançada com Objetos Distribuídos
Cláudio Geyer
Instituto de Informática
UFRGS
2
Versão slides
• Versão– V9– Junho 2011
• Disciplinas– POD
3
Equipe
• Adenauer Yamin Corrêa• Cláudio Geyer• Débora N. Ferrari• Edvar Bergmann Araújo• Juliano Malacarne• Luciano Cavalheiro da Silva• Patrícia Kayser Vargas• Silvana Campos de Azevedo
4
Sistemas Distribuídos
• Sistemas Distribuídos– conjunto de computadores interconectados– visão única para programador ou usuário
• Objetos Distribuídos– objeto: entidade de distribuição, concorrência– paradigma mais aceito para aplicações
distribuídas
• Ambientes de Programação Distribuída– RPC, DCE– Java RMI, CORBA, DCOM, DotNet Remoting
5
DOAP - Distributed Object Advanced Programming
• Ambiente integrado• Objetos Distribuídos• DOBuilder: Interface gráfica de programação
– simplicidade de programação– programação mais implícita
• DOMonitor: monitoração da execução– depuração– melhoria do desempenho
6
DOAP - Distributed Object Advanced Programming
• REMMOS: Mobilidade mais Replicação– aumento de desempenho– programação
• replicação (quase) implícita• migração: explícita
• DEPAnalyzer: Análise estática– obtenção de informações em tempo de
compilação– usadas para
• melhorar o desempenho• simplificar a programação
7
DOAP - Distributed Object Advanced Programming
• Primos: Suporte para execução em alto desempenho– criação remota de objetos– coleta de eventos de POD– RMI sobre redes de alto desempenho– suporte a escalonamento
• Linguagem de base: Java
DOBuilder: Ambiente Visual para Programação Distribuída em Java
Juliano [email protected]
Cláudio Geyer
9
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
10
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
Introdução 11
Motivação
• complexidade da programação concorrente– interações entre diversos elementos– estruturas bidimensionais
• programação visual• ferramentas visuais atuais (2000/2001)
– priorização de aplicações paralelas• deficiências em aplicações cliente-servidor
– deficiências no desenvolvimento de software: orientação a objeto, reutilização, encapsulamento
Objetivo
projetar e implementar uma ferramenta de programação visual para aplicações de objetos distribuídos em Java, utilizando
orientação a objeto e componentes
13
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
Ambientes de programação 14
Ambientes de Programação
• Conjunto de conceitos e tecnologias– Usados ou considerados– No trabalho (DOBuilder)
Ambientes de programação 15
Programação visual
• programação visual: linguagem ou sistema de programação onde:– entidades gráficas de alto nível estão disponíveis
como átomos manipuláveis– elementos gráficos formam uma parte integral e
não apenas decorativa da programação
• vantagens: bidimensionalidade, exibição dos relacionamentos, natural ao ser humano
• desvantagem: escalabilidade
Ambientes de programação 16
Programação visual
• facilita a visualização da concorrência. Exemplo: CC++:
1
2 3 4
5
T1.run()par{
T2.run()T3.run()T4.run()
}T5.run()
Ambientes de programação 17
Programação visual
• facilita a visualização da comunicação. Exemplo: VPE:
N1: vpe_psend(&v,1,VPE_INT,P1);......N2: vpe_precv(&v,1,VPE_INT,&n,X);
Ambientes de programação 18
Ambientes de programação paralela e distribuída
• ferramentas atuais (2000):– programação visual paralela– geração de código para PVM e MPI– exemplos: CODE, HeNCE, VisualProg, VPE
• problemas da maioria dessas ferramentas:– não oferecem programação cliente/servidor– não usam orientação a objetos– não empregam reutilização, modularidade,
componentes
Ambientes de programação 19
Programação orientada a eventos
• o fluxo de execução é comandado pelo surgimento e tratamento de eventos
• importância para a programação distribuída:– não há necessidade de pesquisar continuamente
as diversas fontes de dados– quando algo importante acontece, o evento ocorre
de forma assíncrona
• eventos em PDP– Usualmente eventos de comunicação– send e receive, ...
Ambientes de programação 20
Componentes de software
• módulos de software independentes de contexto– reutilização de projeto e implementação– implementados segundo interfaces padronizadas– desvantagens: falta de confiabilidade,
incompatibilidade de versões
• JavaBeans– arquitetura de componentes de Java
Ambientes de programação 21
Objetos distribuídos
• invocação de métodos remotos e criação remota de objetos de forma transparente
• problemas: latência, erros de comunicação• principais implementações
– CORBA (OMG)– DCOM (Microsoft)– RMI (SunSoft - Java)– Voyager (ObjectSpace - Java)– JMS (Java, J2EE)– C#/Remote
Ambientes de programação 22
Ferramentas RAD
• RAD: Rapid Application Development• geração automática e reutilização de código
• exemplo: JBuilder
23
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
Descrição da ferramenta 24
Objetivos e requisitos
• programação visual• facilidade de uso• flexibilidade• portabilidade• programação orientada a objetos• reutilização de código• extensão do sistema
Descrição da ferramenta 25
Objetivos e requisitos
• Exercícios– Objetivos foram atendidos?– Ferramentas de hoje atendem os requisitos com
outra abordagem?
Objetivos e requisitos
• Dificuldades– Compatibilizar
• facilidade de uso versus• flexibilidade• portabilidade
26
Descrição da ferramenta 27
Alvo
• aplicações– cliente-servidor– objetos distribuídos– comunicação
• inicialmente por sockets, RMI, Voyager• usuários
– não ideal para usuários totalmente iniciantes
– devem ter conhecimento de Java e de programação concorrente
Descrição da ferramenta 28
Descrição da ferramenta
• manipulação visual de objetos– edição gráfica da estrutura da aplicação– edição das propriedades dos objetos
• código fonte dos objetos distribuídos– esqueleto gerado pela ferramenta
conforme as ações do usuário durante a edição visual
– edição da lógica da aplicação feita diretamente pelo usuário (formato texto)
Descrição da ferramenta 29
Descrição da ferramenta
• Não voltada à programação paralela como– HenCE, ...
30
Propriedadese Eventos
Propriedadese Eventos
Paleta deComponentes
Paleta deComponentes
Barra deFerramentas
Barra deFerramentas
Editor decódigo fonte
Editor decódigo fonteEditor do GrafoEditor do Grafo
Estruturado Grafo
Estruturado Grafo
Mensagens dosistema
Mensagens dosistema
Descrição da ferramenta 31
Programação de aplicações
ferramenta javac javausuário
criaçãode
projeto
edição/geração
de código
Voyager
RMI
criaçãode
grafos
compi-lação
execução
geraçãode
código
Descrição da ferramenta 32
Modelo de programação visual
• representação explícita da concorrência e da comunicação– grafo dirigido
• nodos: objetos distribuídos• arcos: relacionamentos (comunicação)
objeto distribuídocomunicação
Descrição da ferramenta 33
Modelo de programação visual
• nodos– tipos escolhidos conforme as
necessidades das aplicações, p. ex.:• chamadas remotas de método• criação remota de objetos• grafos
• arcos– relacionamentos entre os nodos
Descrição da ferramenta 34
Nodos
Objeto com código editado pelo programador
nodos básicos
componentes
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Descrição da ferramenta 35
Nodos
• nodo básico• nodo de interface • nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Interface com os métodospara invocação remota
nodos de interface
métodos
Descrição da ferramenta 36
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Objeto visual utilizado para representar o método de uma classe ou interface
Descrição da ferramenta 37
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Representação visual de um recurso externo
acessado pela aplicação
servidor TCP impressora
Descrição da ferramenta 38
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Objeto distribuídojá desenvolvido
Descrição da ferramenta 39
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Componente de software que pode ser acoplado a
um nodo básico
componentes
Descrição da ferramenta 40
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Diversos tipos: em geral associados a tecnologias:
RMI, sockets, ...
componentes
Descrição da ferramenta 41
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Componente usado parainvocar métodos remotos client invoca métodos da
interface interface em server
Descrição da ferramenta 42
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Componente que cria objetosremotos dinamicamente
objeto criador cria criatura
Descrição da ferramenta 43
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Encapsulamento de grafos
Interfaces de acessoao grafo
Descrição da ferramenta 44
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Encapsulamento de grafos
Descrição da ferramenta 45
Nodos
• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação
Informação auxiliar para documentação
Textos
Gráficos
Cliente Servidor
Descrição da ferramenta 46
Arcos
• normal• implementação de
interface• compartilhamento de
memória• referência a objeto
remoto• criação de obj. remoto• interface de obj.
remoto• criação de grafo• interface de grafo• documentação
Comunicação: combinação de propriedades
host remotoporta remota
host localporta local
Descrição da ferramenta 47
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de obj.
remoto• referência a objeto
remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Indicação de que um nodo básico implementa
determinada interface
Descrição da ferramenta 48
Arcos
• normal• implementação de
interface• compartilhamento
de memória• interface de obj.
remoto• referência a objeto
remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Compartilhamento de dados entre dois nodos básicos
Descrição da ferramenta 49
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de
objeto remoto • referência a objeto
remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Especificação de interface para componentes procuradores ou decriação dinâmica
Descrição da ferramenta 50
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de obj.
remoto• referência a
objeto remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Referência local a objeto remoto (RMI, ...)
Descrição da ferramenta 51
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de obj.
remoto• referência a objeto
remoto• criação de objeto
remoto• criação de grafo• interface de grafo• documentação
Objeto local cria objeto remoto
Descrição da ferramenta 52
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de obj.
remoto• referência a objeto
remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Objeto local cria grafo
Descrição da ferramenta 53
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de obj.
remoto• referência a objeto
remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Objeto conectado à interface de grafo é visível
externamente
Descrição da ferramenta 54
Arcos
• normal• implementação de
interface• compartilhamento de
memória• interface de obj.
remoto• referência a objeto
remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação
Comentário visual
55
Arcos x Nós
• Questão–Há informação redundante entre um
tipo de arco associado a um tipo de nó?
–Por exemplo,• Arco de chamada RMI com objeto
RMI?
56
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
Implementação 57
Implementação
• Java– portabilidade, orientação a objeto, eventos– componentes JavaBeans– interface gráfica: Swing– 1º trabalho sobre Java no grupo
• ambiente de execução para os objetos distribuídos– Voyager: bastante usado e conhecido, simples de
se utilizar e com muitos recursos– RMI: disponível com Java
Implementação 58
Componentes
• Componentes– técnica muito usada na implementação– características
• reutilização• extensão: implementação de novos
componentes para estender as capacidades da ferramenta
– definição• propriedades• métodos• eventos
Implementação 59
Exemplo – Porta de conexão
onRemoteDisconnectsend
onReceivereceiveprotocol
onConnectionRefusecloseremoteHost
onConnectionAcceptopenremotePort
eventosmétodospropriedades
Implementação 60
Nodo básico
• implementados como classes Java• métodos start, shutdown
– dependentes do ambiente de execução usado– operações de configuração na rede
• registro no servidor de nomes• método run
– código executado inicialmente• gerador de código
– operações durante a edição visual do objeto
Implementação 61
Componentes
• componente geral– componente JavaBean tradicional– design patterns para classes Java
• componente procurador– se torna método para busca de referência remota– método é inserido no nodo básico que o contém
• componente de criação dinâmica– se torna método para criação do objeto remoto– método é inserido no nodo básico que o contém
Implementação 62
Relacionamentos - arcos
• implementação diferente para cada tipo• a implementação é implícita
– não existe objeto representando o relacionamento– o relacionamento está no código fonte
• a visualização no grafo não é fixa– pode ser configurada pelo usuário– leva em conta os objetos do relacionamento– Questão chave
• Alteração pelo programador do código gerado pela ferramenta => pode-se refazer grafo?
Implementação 63
Arco normal
O relacionamento é implementado pelacombinação de propriedades
Implementação 64
Exemplos
bate-papo com troca de mensagens
Implementação 65
Exemplos
bate-papo com chamada remota de método
66
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
Trabalhos relacionados 67
Comparação geral
Vantagens programação orientada a objeto modelo de componentes de software portabilidade geração automática de código
Desvantagensdesempenho menor de Javanecessidade de adaptação do usuário
Trabalhos relacionados 68
Ferramentas de programação textual
Vantagens identificação dos relacionamentos visualização geral da aplicação Java é orientada a objeto componentes de software
Desvantagensas ferramentas textuais já têm base instaladao ambiente de programação é pesadoa concorrência é definida explicitamente
Trabalhos relacionados 69
Ferramentas de programação visual paralela e distribuída
Vantagens programação com objetos distribuídos possibilidade de extensão da ferramenta modularidade programação cliente/servidor portabilidade
Desvantagenssem visualizaçãosem depuraçãosem suporte direto a paralelismo de alto
desempenho (paralelismo de dados, p. ex.)
Trabalhos relacionados 70
Ferramentas de programação visual em Java
Vantagens visualização global da aplicação desenvolvimento integrado de clientes e servidores desenvolvimento hierárquico das aplicações
Desvantagensfalta de suporte à geração de interfaces gráficasnão há depuração seqüencialgeração de código não totalmente transparente
71
Algumas referências
• http://www.informatik.uni-trier.de/~ley/db/journals/vlc/vlc12.html– Lista de diversos artigos (2001)
• GeoVISTA Studio: a codeless visual programming environment for geoscientific data analysis and visualization (2002)
• Pegasus: A framework for mapping complex scientific workflows onto distributed systems (2005).
72
Sumário
• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros
Conclusões e trabalhos futuros 73
Resultados
• problema: dificuldade de avaliação teórica da facilidade de uso da ferramenta
• solução: implementar e por à prova com usuários reais
• impressões de usuários:– componentes para programação distribuída– semelhanças com ferramentas já conhecidas– documentação gráfica do sistema
Conclusões e trabalhos futuros 74
Trabalhos futuros
• integração com os outros trabalhos do grupo:– monitoração e visualização– escalonamento– ambiente de execução com réplica de objetos
• depuração do código seqüencial de cada objeto e de toda a aplicação
• implementação de novos componentes
Conclusões e trabalhos futuros 75
Considerações finais
• principal contribuição: projeto e implementação de uma ferramenta visual para programação distribuída onde é possível se visualizar toda a aplicação simultaneamente
• aplicação dos principais conceitos de engenharia de software: reutilização, modularidade e encapsulamento
76
Links
• Avaliação– http://www.inf.ufrgs.br/procpar/disc/cmp167/
trabalhos/sem2000-1/T2/kenzo_pilla/
• Tutorial– http://www.inf.ufrgs.br/procpar/disc/cmp167/
trabalhos/sem2000-1/T2/kenzo_pilla/
• Visão geral– http://www.inf.ufrgs.br/procpar/hetnos/
rf003.html#dobuilder– http://www.inf.ufrgs.br/procpar/hetnos/DOBuilder/
index.html
77
Referências
• Referências– [MAL97] MALACARNE, J. Implementação de um
Ambiente Gráfico para o Desenvolvimento de Aplicações Distribuídas. Trabalho de Diplomação, Instituto de Informática, UFRGS, pp. 91, Dez. 1997.
– [MAL98] MALACARNE, J.; GEYER, C. F. R. Monitoração na Ferramenta VisualProg. In X Simpósio Brasileiro de Arquitetura de Computadores e Processamento de Alto Desempenho, Búzios, RJ, setembro 1998.
78
Referências
• Refrências– [MAL99] MALACARNE, J. Ambientes de
Programação Visual Paralela e Distribuída: trabalho individual. Porto Alegre: PPGC da UFRGS, 1999. 91 p. (TI-776).
– [MAL01] MALACARNE, J.; GEYER, C. F. R. DOBuilder. Ambiente de Programação Visual com Objetos Distribuídos em Java. . In: 19 SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES, 2001, Florianópolis. Anais... Florianópolis: SBC, 2001
79
Referências
• Referências– [SCH96] SCHRAMM, J. F. L. Ambiente Gráfico
para o Desenvolvimento de Aplicações Distribuídas. CPGCC-UFRGS, pp. 78, 1996.
– [SCH97] SCHRAMM, J. F. L.; MALACARNE, J.; GEYER, C. F. R. Ambiente Gráfico para o Desenvolvimento de Aplicações Distribuídas. XXIII Conferência Latinoamericana de Informática. Universidad Tecnica Federico Santa Maria, Valparaiso, Chile, p.505-514. Nov. 1997.
80
Refêrencias
• Refêrencias– [BEG94] BEGUELIN, A. et al. HeNCE: A Users'
Guide Version 2.0. 1994. Disponível em: <ftp://netlib2.cs.utk.edu/hence/HeNCE-2.0-doc.ps.gz>. Acesso em: 20 nov. 1998.
– [NEW92] NEWTON, P.; BROWNE, J. C. The CODE 2.0 Graphical Parallel Programming Language. 1992. Disponível em: <ftp://ftp.cs.utexas.edu/pub/code2/CodeICS92.ps.Z>. Acesso em: 25 nov. 2000.
81
Refêrencias
• Refêrencias– [NEW95] NEWTON, P.; DONGARRA, J. Overview
of VPE: A Visual Environment for Message-Passing. 1995. Disponível em: <ftp://cs.utk.edu/pub/newton/vpe/docs/hcw95.ps.Z>. Acesso em: 25 nov. 2000.
– [LOQ98] LOQUES, O.; LEITE, J.; CARRERA, E. V. P-RIO: A Modular Parallel-Programming Environment. IEEE Concurrency, Los Alamitos, CA, v. 6, n. 1, p. 47-57, Jan.-Mar. 1998.
DOVisualizerUma Ferramenta de Visualização para Aplicações Distribuídas em
Java
Edvar Bergmann Araujo
Cláudio Geyer
83
Sumário
• Motivação• Objetivos• Modelo
– Coleta de Informações– Processamento das Informações– Geração dos Gráficos
• Conclusão
84
Motivação
• Programação Orientada a Objetos escolhida para desenvolvimento de aplicações distribuídas
• Comportamento complexo• Problemas de desempenho
85
Motivação
• As Ferramentas de Visualização para o modelo Orientado a Objetos:– são raras ou mais recentes que para processos– auxiliam o refinamento e a depuração das
aplicações– não tratam de aplicações do tipo cliente/servidor
86
Objetivos
• Demonstrar graficamente o comportamento que a aplicação apresentou durante a execução
• Facilitar a depuração e o refinamento• Visualização dos objetos e de seus
relacionamentos
87
Objetivos
• Visualização de aplicações distribuídas• Visualização de aplicações do tipo
cliente/servidor• Gráficos com enfoque para sistemas
distribuídos
88
Modelo - DOVisualizer
• A ferramenta é voltada para aplicações compostas por objetos distribuídos
• Caracteriza-se por identificar principalmente:– A comunicação entre os objetos– A utilização dos métodos de sincronização
• Suporta aplicações cliente/servidor• Pode ser utilizada para aplicações Java pura• Será integrada ao DOBuilder
89
Modelo - DOVisualizer
90
Coleta de Informações
• Informações sobre as chamadas de métodos• Traçar a interação entre clientes e servidor
– resolver as Invocações de Métodos Remotos - RMI
• O overhead pode ser minimizado a partir da escolha dos métodos que serão traçados
• O módulo obtém os eventos apropriados à ferramenta, como os relacionados a:– Threads, sincronização e RMI
91
O que é preciso coletar?
• Thread– ID– JVM– Tempo Inicial– Tempo Final– Estado (Executando, Finalizada, Bloqueada)
• JVM– Máquina
92
Processamento das Informações
• Processamento Post-Mortem• Realiza a ligação entre eventos de JVM´s
diferentes • Ordenação causal entre os eventos de JVM´s
diferentes• Possibilita a geração parcial das informações• Armazena as mesmas em arquivos com um
layout definido
93
Geração dos Gráficos
• Gargalos de desempenho• Estado dos objetos• Interação entre as threads• Interação entre os objetos
94
Diagrama de mapeamento de objetos
95
Conclusão
• Utilização de gráficos para demonstrar o comportamento da execução
• Auxilia o desenvolvimento de aplicações distribuídas– Depuração– Problemas de desempenho
• Suporte a aplicações cliente/servidor• Integrado ao DOBuilder
Um Modelo de Replicação em Ambientes que Suportam
Mobilidade
Débora Nice [email protected]
Patrícia Vargas [email protected]
Cláudio [email protected]
97
Sumário
• Mobilidade e Replicação• ReMMoS - Um Modelo de Replicação em
Ambientes que suportam Mobilidade• Conclusões
98
Introdução
• Mobilidade e Replicação– Mobilidade
• capacidade das entidades envolvidas na computação deslocarem-se através de um sistema distribuído [FUG 98]
• não existem cópias das entidades computacionais
99
Introdução
• Mobilidade e Replicação– Mobilidade
• entidades movidas sob demanda para uso local
• diferentes tipos de mobilidade, em especial:– fraca: somente de código– forte: código e estado
100
Introdução
• Mobilidade e Replicação– Replicação
• permite que várias cópias de uma mesma entidade computacional residam em diferentes máquinas do sistema distribuído [GUE 97]
• existem cópias de uma mesma entidade computacional
101
Introdução
• Mobilidade e Replicação– Replicação
• acesso simultâneo de diferentes nodos à mesma entidade computacional
• problema clássico:– manter a consistência das diferentes cópias
• diferentes técnicas classificadas sob diferentes aspectos
102
Introdução
• Problemas– como permitir replicação em ambientes com
mobilidade?• e vice-versa
– como oferecer replicação com aumento de desempenho?
– quando oferecer replicação com aumento de desempenho?
– como permitir replicação sem nunca perder desempenho?
103
ReMMoS - Replication Model in Mobility Systems
• Entidade básica– objeto
• Mobilidade– objetos não replicados– objetos replicados
• Replicação– estratégia de replicação parcial– protocolo de atualização– atualização pela técnica de cópia primária-
secundária
104
ReMMoS - Replication Model in Mobility Systems
• Mobilidade– objetivo
• acesso local para objetos não replicados– mobilidade para objetos não replicados
• baseada no modelo de mobilidade do Voyager• mobilidade explícita• cliente ou servidor
105
ReMMoS - Replication Model in Mobility Systems
• Mobilidade– mobilidade para objetos replicados
• objetos não são movidos• cópia na nova localização é tratada conforme
replicação– por exemplo, escritas futuras via cópia
primária• cópia primária é responsável pelo controle
– se cópia já existe na máquina destino?• sim: não move• não: cria uma cópia na máquina destino
106
ReMMoS - Replication Model in Mobility Systems
• Replicação– objetivos
• reduzir quantidade de mensagens• permitir paralelismo no acesso ao objeto
– replicação implícita• programador não precisa tratá-la
107
ReMMoS - Replication Model in Mobility Systems
• Replicação– técnica de replicação parcial
• divisão dos acessos (métodos) em leitura/escrita
• ambiente de execução– responsável pela criação e localização das
cópias– criação de cópias quando houver aumento
de desempenho
108
ReMMoS - Replication Model in Mobility Systems
• Replicação– técnica cópia primária-secundária
• escrita– sempre via cópia primária– protocolo de 2 fases síncrono– sobre todas as cópias secundárias
• leitura– acesso somente à cópia secundária local
– replicação ocorre sobre os objetos servidores
109
ReMMoS - Replication Model in Mobility Systems
• Visão geral da organização
Ambiente
Sistema de Replicação
Sistema de Mobilidade
Plataforma de Objetos Distribuídos
Sistema Operacional / Hardware
Aplicação
ReMMoS
Aplicação Aplicação
– Monitoramento e gerência
110
ReMMoS - Replication Model in Mobility Systems
ObS
ReMMoS
Nodo 1 Nodo 2
Cliente1
Controle de objeto potencialmente replicável
ObS
ReMMoS
Nodo 1 Nodo 2
Cliente1
Indicação de criação de réplica
bloqueio do objeto e fila de mensagens
• Replicação– Processo de criação de réplicas
111
ReMMoS - Replication Model in Mobility Systems
Cópia para o destino
Se sucesso
objeto replicado
primário-backup
ObS
ReMMoS
Nodo 1 Nodo 2
Cliente1
RObS
ReMMoS
ObS
ReMMoS
Nodo 1 Nodo 2
Cliente1
RObS
ReMMoS Acesso local
Mensagens liberadas na origem
• Replicação– Processo de criação de réplicas
112
ReMMoS - Replication Model in Mobility Systems
Cliente
POb1
ROb1
ROb1
atualização
Ack + estadobloqueio+
atualização
resposta
desbloqueio
Nodo 2
Nodo 1
Nodo 2
Nodo 3
• primário recebe solicitação de escrita
• Replicação– Protocolo de atualização
• réplica recebe solicitação de escrita
113
ReMMoS - Replication Model in Mobility Systems
• Replicação– Controle dinâmico do número de réplicas
• objetivos– adaptação ao perfil da aplicação– custo de atualização de réplicas ociosas
• que não estão processando leitura
114
ReMMoS - Replication Model in Mobility Systems
• Replicação– Controle dinâmico do número de réplicas
• funcionamento– método LRU (last recently used)– uso de contador de acesso local – uso do protocolo de atualização para
controle• descarte na terceira atualização
115
ReMMoS - Replication Model in Mobility Systems
• Integração com a DOBuilder– DOBuilder
• ferramenta para programação visual com objetos distribuídos
• uso de Java e Voyager• não possui replicação
116
ReMMoS - Replication Model in Mobility Systems
• Integração com a DOBuilder– DOBuilder + ReMMoS
• ambiente de desenvolvimento + ambiente de execução
• a ferramenta permite que o programador especifique o ambiente de execução ReMMoS
– indicação na estruturas de menus– padrão: sem replicação
117
– Cliente 2
ReMMoS - Implementação
Gráfico comparativo para cliente com característica de leitura predominante
2337
1185 1102 1357
0
1000
2000
3000
4000
5000
característica da aplicação com relação a mobilidade e replicação
Te
mp
o e
m
mil
ise
gu
nd
os sem mobilidade e sem
replicação
com mobilidade e comreplicação
sem mobilidade e comreplicação
com mobilidade e semreplicação
118
Conclusões
• Trabalhos futuros– outras estratégias de replicação– integração do ReMMoS com o DOBuilder– integração do ReMMoS com o trabalho de análise
estática DEPAnalyzer• informações necessárias + comportamento da
aplicação, tamanho dos argumentos e do objeto
– outros sistemas de mobilidade
119
Conclusões
• Trabalhos futuros– estudo, projeto e implementação de mobilidade
implícita– otimizações no protótipo– testes com outras aplicações em redes mais
rápidas e outros sistemas operacionais– tolerância a falhas
DEPAnalyser - Análise Estática para Melhoria de Programas com
Objetos Distribuídos
Silvana Campos de Azevedo
Patrícia Kayser Vargas
Cláudio Geyer
121
Sumário
• Visão geral– Análise Estática– DEPAnalyzer– Classes - conjuntos de objetos– Dependências– Leitura/escrita de métodos
• Modelo– Estrutura– Funcionalidade dos módulos
122
Visão Geral
• Análise Estática– prevê, em nível de código fonte, características da
execução de um programa.• otimização, depuração, paralelização,
distribuição
• DEPAnalyzer– analisar estaticamente as dependências entre as
entidades de um programa Java– determinar se os métodos, destas entidades, são
de escrita ou de leitura
123
Visão Geral
• Entidades– classes: estaticamente– conjuntos de objetos: dinamicamente
• Dependências– invocação de método (comunicação) entre
classes
• Leitura/escrita de métodos– identifica se um método altera o estado de alguma
variável global (escrita) ou não (leitura)
124
Modelo
Programa Fonte
Coleta das InformaçõesColeta das Informações
TransformaçãoGeração
do Grafo
Informações de Leitura/Escrita
Informações de Dependência
Programa Fonte Transformado
Grafo de Dependências
Análise Leitura/Escrita
Análise Dependências
Informações
125
Modelo
• Coleta das Informações– Classe
• nome• descendência• variáveis• métodos
– Variáveis• acesso• tipo• nome• objeto atribuído• escopo
126
Modelo
• Coleta das Informações– Métodos
• acesso• nome• id• leitura/escrita• parâmetros• variáveis locais• métodos chamados• variáveis atribuídas
127
Modelo
• Coleta das Informações– Métodos Chamados
• objeto• nome• escopo• argumentos
128
Modelo
• Escopo X Dependências– dependências relativas
• em escopos condicionais• podem ou não acontecer
– dependências indeterminadas• em escopos iterativos (loops)• o número de vezes de ocorrências é
indeterminado.
129
Modelo
• Escopo X Dependências– dependências efetivas
• em outros escopos• acontecem somente uma vez naquela
invocação
130
Modelo
• Análise de Leitura/Escrita– método de escrita
• modifica uma variável global• ou chama um método que modifica
– método de leitura• não modifica variáveis globais• e não chama nenhum método que modifique
– invocação de método de escrita• manter a consistência das cópias (replicação)
– invocação de método de leitura• problema de consistência inexistente
131
Modelo
• Transformação– o código fonte analisado é transformado– segundo as informações de leitura/escrita– para que contenha automaticamente as primitivas
necessárias à implementação ReMMos
132
Modelo
• Dependências– se dentro do escopo do método for invocado
métodos de outra classe– o método invocador estabelece uma relação de
dependência com a classe do método chamado.
• Grafo de Dependências– os nodos são os conjuntos de objetos– as setas são as dependências entre os nodos
133
Modelo
• Conclusão– as informações geradas visam auxiliar
• no escalonamento dos objetos (dependências)• e no processo de replicação (leitura/escrita)
134
Conclusões Gerais
• Síntese das anteriores• Dificuldade de integração em ambiente
acadêmico• Trabalhos futuros
– balanceamento de carga
• Semântica de replicação relaxada
FIM
Questões?
Top Related