Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer...

Post on 18-Apr-2015

120 views 2 download

Transcript of Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer...

Sistemas Distribuídos

Programação Avançada com Objetos Distribuídos

Cláudio Geyer

geyer@inf.ufrgs.br

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 Malacarnemalacarn@inf.ufrgs.br

Cláudio Geyer

geyer@inf.ufrgs.br

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

edvar@inf.ufrgs.br

Cláudio Geyer

geyer@inf.ufrgs.br

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 Ferrarinice@inf.ufrgs.br

Patrícia Vargas Kayserkayser@inf.ufrgs.br

Cláudio Geyergeyer@inf.ufrgs.br

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?