A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer Instituto de Informática UFRGS.

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer Instituto de Informática UFRGS."— Transcrição da apresentação:

1 Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer Instituto de Informática UFRGS

2 2 Versão slides Versão –V9 –Junho 2011 Disciplinas –POD

3 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 4 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 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 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 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

8 DOBuilder: Ambiente Visual para Programação Distribuída em Java Juliano Malacarne Cláudio Geyer

9 9 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

10 10 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

11 Introdução11 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

12 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 13 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

14 Ambientes de programação14 Ambientes de Programação Conjunto de conceitos e tecnologias –Usados ou considerados –No trabalho (DOBuilder)

15 Ambientes de programação15 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

16 Ambientes de programação16 Programação visual facilita a visualização da concorrência. Exemplo: CC++: T1.run() par { T2.run() T3.run() T4.run() } T5.run()

17 Ambientes de programação17 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);

18 Ambientes de programação18 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

19 Ambientes de programação19 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,...

20 Ambientes de programação20 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

21 Ambientes de programação21 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

22 Ambientes de programação22 Ferramentas RAD RAD: Rapid Application Development geração automática e reutilização de código exemplo: JBuilder

23 23 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

24 Descrição da ferramenta24 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

25 Descrição da ferramenta25 Objetivos e requisitos Exercícios –Objetivos foram atendidos? –Ferramentas de hoje atendem os requisitos com outra abordagem?

26 Objetivos e requisitos Dificuldades –Compatibilizar facilidade de uso versus flexibilidade portabilidade 26

27 Descrição da ferramenta27 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

28 Descrição da ferramenta28 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)

29 Descrição da ferramenta29 Descrição da ferramenta Não voltada à programação paralela como –HenCE,...

30 30 Propriedades e Eventos Propriedades e Eventos Paleta de Componentes Paleta de Componentes Barra de Ferramentas Barra de Ferramentas Editor de código fonte Editor de código fonte Editor do Grafo Estrutura do Grafo Estrutura do Grafo Mensagens do sistema Mensagens do sistema

31 Descrição da ferramenta31 Programação de aplicações ferramentajavacjavausuário criação de projeto edição/ geração de código Voyager RMI criação de grafos compi- lação execução geração de código

32 Descrição da ferramenta32 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ído comunicação

33 Descrição da ferramenta33 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

34 Descrição da ferramenta34 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

35 Descrição da ferramenta35 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étodos para invocação remota nodos de interface métodos

36 Descrição da ferramenta36 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

37 Descrição da ferramenta37 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 TCPimpressora

38 Descrição da ferramenta38 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ído já desenvolvido

39 Descrição da ferramenta39 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

40 Descrição da ferramenta40 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

41 Descrição da ferramenta41 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 para invocar métodos remotos client invoca métodos da interface interface em server

42 Descrição da ferramenta42 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 objetos remotos dinamicamente objeto criador cria criatura

43 Descrição da ferramenta43 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 acesso ao grafo

44 Descrição da ferramenta44 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

45 Descrição da ferramenta45 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

46 Descrição da ferramenta46 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 remoto porta remota host local porta local

47 Descrição da ferramenta47 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

48 Descrição da ferramenta48 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

49 Descrição da ferramenta49 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 de criação dinâmica

50 Descrição da ferramenta50 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,...)

51 Descrição da ferramenta51 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

52 Descrição da ferramenta52 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

53 Descrição da ferramenta53 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

54 Descrição da ferramenta54 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 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 56 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

57 Implementação57 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

58 Implementação58 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

59 Implementação59 Exemplo – Porta de conexão onRemoteDisconnectsend onReceivereceiveprotocol onConnectionRefusecloseremoteHost onConnectionAcceptopenremotePort eventosmétodospropriedades

60 Implementação60 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

61 Implementação61 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

62 Implementação62 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?

63 Implementação63 Arco normal O relacionamento é implementado pela combinação de propriedades

64 Implementação64 Exemplos bate-papo com troca de mensagens

65 Implementação65 Exemplos bate-papo com chamada remota de método

66 66 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

67 Trabalhos relacionados67 Comparação geral Vantagens programação orientada a objeto modelo de componentes de software portabilidade geração automática de código Desvantagens desempenho menor de Java necessidade de adaptação do usuário

68 Trabalhos relacionados68 Ferramentas de programação textual Vantagens identificação dos relacionamentos visualização geral da aplicação Java é orientada a objeto componentes de software Desvantagens as ferramentas textuais já têm base instalada o ambiente de programação é pesado a concorrência é definida explicitamente

69 Trabalhos relacionados69 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 Desvantagens sem visualização sem depuração sem suporte direto a paralelismo de alto desempenho (paralelismo de dados, p. ex.)

70 Trabalhos relacionados70 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 Desvantagens falta de suporte à geração de interfaces gráficas não há depuração seqüencial geração de código não totalmente transparente

71 Algumas referências trier.de/~ley/db/journals/vlc/vlc12.htmlhttp://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). 71

72 72 Sumário introdução ambientes de programação descrição da ferramenta implementação trabalhos relacionados conclusões e trabalhos futuros

73 Conclusões e trabalhos futuros73 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

74 Conclusões e trabalhos futuros74 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

75 Conclusões e trabalhos futuros75 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 76 Links Avaliação –http://www.inf.ufrgs.br/procpar/disc/cmp167/trabal hos/sem2000-1/T2/kenzo_pilla/ Tutorial –http://www.inf.ufrgs.br/procpar/disc/cmp167/trabal hos/sem2000-1/T2/kenzo_pilla/ Visão geral –http://www.inf.ufrgs.br/procpar/hetnos/rf003.html#d obuilder –http://www.inf.ufrgs.br/procpar/hetnos/DOBuilder/i ndex.html

77 77 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 –[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 78 Referências Refrências –[MAL99] MALACARNE, J. Ambientes de Programação Visual Paralela e Distribuída: trabalho individual. Porto Alegre: PPGC da UFRGS, 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 79 Referências –[SCH96] SCHRAMM, J. F. L. Ambiente Gráfico para o Desenvolvimento de Aplicações Distribuídas. CPGCC-UFRGS, pp. 78, –[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 Nov

80 80 Refêrencias –[BEG94] BEGUELIN, A. et al. HeNCE: A Users' Guide Version Disponível em:. Acesso em: 20 nov –[NEW92] NEWTON, P.; BROWNE, J. C. The CODE 2.0 Graphical Parallel Programming Language Disponível em:. Acesso em: 25 nov

81 81 Refêrencias –[NEW95] NEWTON, P.; DONGARRA, J. Overview of VPE: A Visual Environment for Message- Passing Disponível em:. Acesso em: 25 nov –[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 , Jan.-Mar

82 DOVisualizer Uma Ferramenta de Visualização para Aplicações Distribuídas em Java Edvar Bergmann Araujo Cláudio Geyer

83 83 Sumário Motivação Objetivos Modelo –Coleta de Informações –Processamento das Informações –Geração dos Gráficos Conclusão

84 84 Motivação Programação Orientada a Objetos escolhida para desenvolvimento de aplicações distribuídas Comportamento complexo Problemas de desempenho

85 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 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 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 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 89 Modelo - DOVisualizer

90 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 91 O que é preciso coletar? Thread –ID –JVM –Tempo Inicial –Tempo Final –Estado (Executando, Finalizada, Bloqueada) JVM –Máquina

92 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 93 Geração dos Gráficos Gargalos de desempenho Estado dos objetos Interação entre as threads Interação entre os objetos

94 94 Diagrama de mapeamento de objetos

95 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

96 Um Modelo de Replicação em Ambientes que Suportam Mobilidade Débora Nice Ferrari Patrícia Vargas Kayser Cláudio Geyer

97 97 Sumário Mobilidade e Replicação ReMMoS - Um Modelo de Replicação em Ambientes que suportam Mobilidade Conclusões

98 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 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 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 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 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 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 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 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 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 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 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 109 ReMMoS - Replication Model in Mobility Systems Visão geral da organização –Monitoramento e gerência

110 110 ReMMoS - Replication Model in Mobility Systems ObS ReMMoS Nodo 1Nodo 2 Cliente 1 lControle de objeto potencialmente replicável ObS ReMMoS Nodo 1Nodo 2 Cliente 1 lIndicação de criação de réplica lbloqueio do objeto e fila de mensagens Replicação –Processo de criação de réplicas

111 111 ReMMoS - Replication Model in Mobility Systems lCópia para o destino lSe sucesso l objeto replicado l primário-backup ObS ReMMoS Nodo 1Nodo 2 Cliente 1 RObS ReMMoS ObS ReMMoS Nodo 1Nodo 2 Cliente 1 RObS ReMMoS lAcesso local lMensagens liberadas na origem Replicação –Processo de criação de réplicas

112 112 ReMMoS - Replication Model in Mobility Systems Cliente POb1 ROb1 atualização Ack + estado bloqueio+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 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 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 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 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 117 –Cliente 2 ReMMoS - Implementação

118 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 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

120 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 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 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 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 124 Modelo Programa Fonte Coleta das Informações Transformação Geraçã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 125 Modelo Coleta das Informações –Classe nome descendência variáveis métodos –Variáveis acesso tipo nome objeto atribuído escopo

126 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 127 Modelo Coleta das Informações –Métodos Chamados objeto nome escopo argumentos

128 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 129 Modelo Escopo X Dependências –dependências efetivas em outros escopos acontecem somente uma vez naquela invocação

130 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 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 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 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 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

135 FIM Questões?


Carregar ppt "Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer Instituto de Informática UFRGS."

Apresentações semelhantes


Anúncios Google