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

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Programação Avançada com Objetos Distribuídos"— 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 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
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

8 DOBuilder: Ambiente Visual para Programação Distribuída em Java
Juliano Malacarne 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

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 Introdução

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 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ção
Conjunto de conceitos e tecnologias Usados ou considerados No trabalho (DOBuilder) Ambientes de programação

15 Ambientes de programação
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 Ambientes de programação
Programação visual facilita a visualização da concorrência. Exemplo: CC++: T1.run() par { T2.run() T3.run() T4.run() } T5.run() 1 2 3 4 5 Ambientes de programação

17 Ambientes de programação
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 Ambientes de programação
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 Ambientes de programação
Ferramentas RAD RAD: Rapid Application Development geração automática e reutilização de código exemplo: JBuilder Ambientes de programação

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

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? Descrição da ferramenta

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

27 Descrição da ferramenta
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) Informações que devem ser adicionadas pelo programador: com RMI, tem que ser chamado o bind no servidor de nomes Lógica do negócio Descrição da ferramenta

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

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

31 Programação de aplicações
usuário ferramenta javac java edição/ geração de código criação de projeto criação de grafos compi- lação execução geração de código Voyager RMI 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) comunicação objeto distribuído 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
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 com código editado pelo programador nodos básicos O nodo básico representa um objeto que contém a lógica do programa e é editado pelo programador. A ele podem ser adicionados componentes. A ferramenta gera o código esqueleto da classe do nodo básico e o programador insere o seu código dentro dele. componentes Descrição da ferramenta

35 Nodos Interface com os métodos para invocação remota métodos
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 métodos O nodo de interface é traduzido por uma interface de Java, ou seja, ele representa um conjunto de métodos que um objeto deve implementar para que ele seja aceito nos métodos que recebem como parâmetro um objeto daquele tipo. nodos de interface Descrição da ferramenta

36 Descrição da ferramenta
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 Quando um objeto desse tipo é adicionado a um nodo, é feita uma declaração de método no objeto do nodo. No caso da interface, é acrescenta a declaração à 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 O objeto representado pelo nodo virtual é apenas uma indicação visual para o programa. Não há código gerado para este objeto. servidor TCP impressora Descrição da ferramenta

38 Descrição da ferramenta
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 Este objeto tem o seu código compilado incluído na aplicação. É em geral um nodo básico com componentes conectados cuja funcionalidade já está desenvolvida, não necessitando de alterações internas. Descrição da ferramenta

39 Nodos Componente de software que pode ser acoplado a um 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 O escopo de utilização do componente é o nodo básico, ou seja, o nodo básico possui referências ao componentes acoplados. São objetos prontos (não podem ter seu código alterado), mas oferecem cada um as funcionalidades das mais diversas. 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 Pode ser qualquer componente Java. No caso do DOBuilder, foram acrescentados os principais componentes utilizados na programação com objetos distribuídos. Descrição da ferramenta

41 Nodos Componente usado para invocar métodos remotos
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 client invoca métodos da interface interface em server O procurador é uma referência local a um objeto remoto. Descrição da ferramenta

42 Nodos Componente que cria objetos remotos dinamicamente
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 Componente que permite criar objetos remotos dinamicamente. É dependente da tecnologia (RMI, Voyager). Descrição da ferramenta

43 Nodos Interfaces de acesso ao grafo Encapsulamento de grafos
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 Interfaces de acesso ao grafo As interfaces de grafo indicam as portas pelas quais o grafo será acessado pelos outros grafos. No exemplo acima, somente o obj2 não poderá ser acessado fora do grafo. Descrição da ferramenta

44 Nodos Encapsulamento de grafos chamada a grafo 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 O objeto de chamada a grafo encapsula uma chamada a um grafo já pronto. Ele funciona como se o grafo fosse colocado aberto na tela. Essa forma de representação portanto serve para encapsular objetos e modularizar o software, além de melhorar a apresentação e entendimento da aplicação visual. Descrição da ferramenta

45 Descrição da ferramenta
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 Cliente Servidor Gráficos Descrição da ferramenta

46 Arcos Comunicação: combinação de propriedades normal host remoto
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 Indica visualmente um relacionamento entre dois componentes. As propriedades que possuirão o mesmo valor podem ser combinadas visualmente no ferramenta. Descrição da ferramenta

47 Arcos Indicação de que um nodo básico implementa determinada interface
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 Compartilhamento de dados entre dois nodos básicos
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 É semelhante à inclusão de componente. Mas como o componente já está desenvolvido, se for necessária uma funcionalidade mais complexa para um nodo básico, este pode incluir um outro nodo básico. No exemplo acima, o nodo básico obj1 tem uma referência ao objeto obj2, de forma que ele pode chamar métodos de obj2 diretamente. Descrição da ferramenta

49 Arcos Especificação de interface para componentes procuradores ou de
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 Este arco aparece quando é conectado um componente de criação dinâmica ou procurador a uma interface de objeto remoto. Descrição da ferramenta

50 Arcos Referência local a objeto remoto (RMI, ...)
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, ...) Este arco aparece quando é conectado um componente procurador a um nodo básico. O nodo básico em questão foi criado remotamente. Descrição da ferramenta

51 Arcos Objeto local cria objeto remoto criação de objeto remoto 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 Este arco aparece quando é conectado um componente de criação dinâmica a um nodo básico que vai executar remotamente. Descrição da ferramenta

52 Arcos Objeto local cria grafo criação de grafo 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 O exemplo indica que o objeto obj1 cria o grafo gr. Este arco aparece entre nodos básicos e objetos do tipo chamada a grafo. O objeto chamada a grafo é uma referência a um grafo já desenvolvido. Descrição da ferramenta

53 Arcos Objeto conectado à interface de grafo é visível externamente
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 Descrição da ferramenta
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 Descrição da ferramenta

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

57 Implementação Java ambiente de execução para os objetos distribuídos
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
propriedades métodos eventos remotePort open onConnectionAccept remoteHost close onConnectionRefuse protocol receive onReceive send onRemoteDisconnect 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 procurador
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 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 pela combinação de
propriedades Implementação

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

65 bate-papo com chamada remota de método
Exemplos bate-papo com chamada remota de método No exemplo, é utilizado o ambiente Voyager. Se o ambiente estiver inicializado nas duas máquinas (cliente e servidora), a parte de criação dos objetos remotos é gerenciada pela ferramenta (está implementada nos objetos da ferramenta utilizados pelo programador). O programador neste caso só precisa definir as propriedades dos objetos (como o servidor de nomes, por exemplo) para que as instâncias dos objetos sejam criadas corretamente. Se for utilizado RMI, o bind com o servidor de nomes deve ser feito pelo programador. Implementação

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

67 Trabalhos relacionados
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 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 Desvantagens as ferramentas textuais já têm base instalada o ambiente de programação é pesado a 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 Desvantagens sem visualização sem depuração sem 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 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 Trabalhos relacionados

71 Algumas referências 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

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

76 Links Avaliação Tutorial Visão geral
Tutorial Visão geral

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 [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, 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 Nov

80 Refêrencias Refêrencias
[BEG94] BEGUELIN, A. et al. HeNCE: A Users' Guide Version Disponível em: <ftp://netlib2.cs.utk.edu/hence/HeNCE-2.0-doc.ps.gz>. Acesso em: 20 nov [NEW92] NEWTON, P.; BROWNE, J. C. The CODE 2.0 Graphical Parallel Programming Language Disponível em: <ftp://ftp.cs.utexas.edu/pub/code2/CodeICS92.ps.Z>. Acesso em: 25 nov

81 Refêrencias Refêrencias
[NEW95] NEWTON, P.; DONGARRA, J. Overview of VPE: A Visual Environment for Message-Passing Disponível em: <ftp://cs.utk.edu/pub/newton/vpe/docs/hcw95.ps.Z>. 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 Sumário Motivação Objetivos Modelo Conclusão 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) 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

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

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 Monitoramento e gerência

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

111 ReMMoS - Replication Model in Mobility Systems
Replicação Processo de criação de réplicas ObS ReMMoS Nodo 1 Nodo 2 Cliente 1 RObS Cópia para o destino Se sucesso objeto replicado primário-backup Acesso local Mensagens liberadas na origem

112 ReMMoS - Replication Model in Mobility Systems
Replicação Protocolo de atualização réplica recebe solicitação de escrita atualização Nodo 2 Cliente resposta desbloqueio POb1 Nodo 1 bloqueio + atualização Ack + estado ROb1 Nodo 2 ROb1 Nodo 3 primário 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 ReMMoS - Implementação
Cliente 2

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

120 Silvana Campos de Azevedo Patrícia Kayser Vargas Cláudio Geyer
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 Modelo 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 DEPAnalyzer
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 A análise estática visa prever características que o programa terá em tempo de execução, através da sua representação textual. As informações estáticas podem auxiliar na otimização, depuração, paralelização e distribuição implícita de programas. O DEPAnalyzer é para disser o que está escrito :-)

123 Visão Geral Entidades Dependências Leitura/escrita de métodos
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ções Informações Análise
Leitura/Escrita Análise Dependências Informações de Dependência Informações de Leitura/Escrita Transformação Geração do Grafo Programa Fonte Transformado Grafo de Dependências

125 Modelo Coleta das Informações Classe nome descendência variáveis
métodos Variáveis acesso tipo objeto atribuído escopo As variáveis e os métodos estão de cor diferente para ressaltar que são classes, as quais tem informações, como mostra a seqüência.

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 O id é para tratar de chamadas a métodos com o mesmo nome mas com assinaturas diferentes, ou seja, com polimorfismo paramétrico segundo Agesen 95, o qual também é denominado redefinição por Cesta 97, então quando um método é chamado é verificada a assinatura deste método como um todo, ou seja, o tipo dos seus argumentos e a quantidade, para identificar qual método está sendo chamado. Aqui vai as referências [AGE95] AGESEN, O. The Cartesian Product Algorithm: Simple and Precise Type Inference of Parametric Polymorphism European Conference on Object-Oriented Programming, 1995 disponível em: [CES97] CESTA, A. A. Tutorial: A linguagem de Programação Java. Disponível em: Outro aspecto importante é que o campo objeto atribuído representa a informação de dois objetos apontarem para a mesma posição de memória, ou seja, a nível de classe, representa o fluxo dos objetos.

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. Aqui seria bom ressaltar que as comunicações indeterminadas serão vistas como o pior caso, ou seja, melhor não separar fisicamente as entidades que estabelecem este tipo de comunicação. Os outros dois tipos, preferencialmente não se escalonam, mas se o escalonamento perfeito não se mostrar presente, ou seja, entidades ou conjuntos de entidades totalmente independentes, estas é que devem ser escalonadas.

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 Grafo de 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

135 FIM Questões?


Carregar ppt "Sistemas Distribuídos Programação Avançada com Objetos Distribuídos"

Apresentações semelhantes


Anúncios Google