Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouYago Cerda Alterado mais de 10 anos atrás
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?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.