efficient, flexible, and typed group comunications in java
DESCRIPTION
Efficient, Flexible, and Typed Group Comunications in Java. Laurent Baduel Françoise Baude Denis Caromel. http://mega.ist.utl.pt/~ajra/PADI. Por: Adriano Andrade53811 Susana Rijo 53868 José Faustino Santos 53921. Motivação. - PowerPoint PPT PresentationTRANSCRIPT
Laurent Baduel
Françoise Baude
Denis Caromel
1
Efficient, Flexible, and Typed Group Comunications in Java
Por: Adriano Andrade 53811 Susana Rijo 53868
José Faustino Santos 53921
http://mega.ist.utl.pt/~ajra/PADI
Motivação
“Invocação assíncrona de métodos sobre agrupamentos de objectos
distribuídos…”
2
Desafios
Garantir transparência na invocação remota Elevados requisitos de performance Independência da plataforma Suportar invocação assíncrona de métodos
remotos Suportar paralelismo
3
Trabalho Relacionado
Group.setInvoke(stub, "double get()", Group.GROUP);1
O modo de comunicação entre os vários membros do grupo tem de ser definido para cada método
Avanço: Na solução proposta no artigo todos os métodos da classe dos
membros do grupo podem ser invocados de forma transparente sobre o grupo de objectos.
41J. Maassen, T. Kielmann, and H. Bal. Generalizing Java RMI to support ecient group Communication. In ACM Java Grande Conference, 2000.
ProActive - o que é?
Uma biblioteca para desenvolvimento de aplicações distribuídas
Suporta invocações assíncronas Permite agrupamento de objectos em
máquinas diferentes Independente da plataforma (Java)
5
ProActive - Características I
Tipo de Objectos– Objectos Activos – podem ser referenciados fora da JVM
onde se executam. – Objectos Passivos – não podem ser referenciados fora da
JVM onde se executam.
Não há partilha de Objectos Passivos Apenas os Objectos Activos são visíveis do exterior Todos os objectos podem manter referências para
objectos activos.
6
ProActive - Características II
Parâmetros de Invocação– Passagem por Valor (deep copy) – Objectos
passivos– Passagem por Referência – Objectos Activos
Invocação Assíncrona Funciona sobre o RMI do Java
7
Objectos Activos - Características
Unidade Básica de Construção de Aplicações distribuídas
Possuem uma thread própria. São manipulados como objectos comuns. Dentro de um objecto activo não há
paralelismo.
8
Objecto Activo - Constituição
2 classes– Body
invisível gestão dos pedidos (requests) que
chegam ao objecto activo sendo armazenados numa fila de prioridade.
configurável
– Objecto Objecto padrão do Java
9
Objectos Activos – Invocação
10
Grafo de Objectos gerado na invocação
•Subclasse de B•Transforma a invocação do método num request object.• Independente de B.• Cria o objecto futuro e retorna-o ao stub.• Forward dos request objects para o body.
• Armazena os Pedidos numa fila de Prioridade.• Processa os Pedidos
Objectos Activos – Future Objects
Resulta de uma invocação remota Gerado pelo Proxy A thread que invoca o método não fica
bloqueada à espera do resultado – invocação assíncrona
O objecto futuro representa o verdadeiro objecto retornado pelo método de forma transparente.
11
Objectos Activos – Future Objects
Exemplo
Um pedaço qualquer de código num instância da classe A vai precisar de invocar o método foo() sobre uma instância b da classe B (para a qual detém uma referência), este método retorna uma instância v da classe V, sobre a qual o nosso pedaço de código quer executar o método bar().
12
Objectos Activos - Restrições
Classes Final não podem dar origem a um objecto activo.
Classes não públicas não podem dar origem a um objecto activo.
Métodos Final não podem ser usados. Não se pode invocar um método não público
sobre um objecto activo.
13
Typed Group Communication
O mecanismo apresentado no artigo chama-se typed group communication, typed porque
apenas os métodos definidos na classe correspondente aos membros do grupo podem
ser invocados.
14
Criação de um grupo
Criação de um grupo vazio– Especificar classe base do grupo– Adicionar elementos ao grupo posteriormente
Criação de um grupo com membros– Especificar as listas de parâmetros
correspondentes aos construtores dos membros e os nós onde os membros vão ser criados.
Não são permitidos grupos polimórficos!
15
Representação de Grupos
Duas representações complementares– Representação com propósitos funcionais– Representação para efeitos de gestão de grupos
Deve ser possível obter uma representação a partir da outra
Há que manter a coerência entre as duas representações!
16
Invocação de métodos sobre Grupos I
A invocação é propagada assincronamente a todos os membros do grupo, usando multithreading
A invocação de um método sobre um grupo é não bloqueante
Os parâmetros a passar ao método que se pretende invocar são enviados a todos os elementos do grupo.
Disponibiliza de imediato um conjunto de objectos futuros (resultados)
17
Invocação de métodos sobre Grupos II
Quando é invocado um método sobre um grupo, o método vai ser invocado sobre todos os elementos, assim sendo, dado um qualquer elemento do grupo temos duas hipóteses:
– objecto JAVA standard – invocação normal - o objecto tem de se encontrar na JVM onde o método é invocado.
– objecto activo –invocação ProActive - o objecto pode existir noutra JVM.
18
Invocação de métodos sobre Grupos III
19
Invocação de métodos sobre Grupos IV
Group Stub:– Objecto de uma subclasse comum ao grupo de
objectos– Representa o grupo de objectos
Group Proxy:– Constituído por um conjunto de proxies.– Cada proxy envia o request object ao respectivo
objecto activo.
20
Result Groups
Tem um objecto futuro por cada resultado elementar.
É dinamicamente actualizado à medida que os resultados chegam.
Pode ser utilizado mesmo que nem todos os resultados estejam disponíveis (wait by necessity).
O ProActive disponibiliza um conjunto de mecanismos para sincronização de grupos
21
Broadcasting vs Scattering
Default – Os argumentos são enviados por broadcasting a todos os elementos do grupo.
Pode ser preciso transmitir diferentes parâmetros a diferentes membros do grupo – Scattering.
– É passado como argumento um grupo de objectos.– Para conseguir espalhar os argumentos há que invocar o
método estático setScatterGroup (para voltar, unsetScatterGroup).
22
Performance I
23
Tempo de criação de objectos activos considerando:
– diferentes números de computadores na rede local.
– Existência ou não de grupo.
Invocação assíncrona não tem tempos de espera associados.
+ computadores -> - objectos/computador -> - tempo
Performance II
24
Tempo de invocação de métodos sobre objectos:
– Com grupo;– Sem grupo.
Com grupo demora menos tempo porque é lançada uma thread para tratar cada invocação.
Conclusão I
Comunicação em grupo– Crucial para a alta-performance– Grid Computing– Coordenação do grupo conseguida à custa de
configurações (semântica de espera por todas as execuções dos elementos do grupo vs. abordagem default)
25
Conclusão II
Invocações Assíncronas – Evitam esperas, aumentando a eficiencia– Ideal em ambientes loosely coupled– Eliminam alguns deadlocks
26
Fim
Questões?
27
http://mega.ist.utl.pt/~ajra/PADI