Efficient, Flexible, and Typed
Group Comunications in Java
Laurent Baduel
Françoise Baude
Denis Caromel
http://mega.ist.utl.pt/~ajra/PADI
1
Por: Adriano Andrade
Susana Rijo
José Faustino Santos
53811
53868
53921
Motivação
“Invocação assíncrona de métodos
sobre agrupamentos de objectos
distribuídos…”
2
Desafios





3
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
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.
4
1J.
Maassen, T. Kielmann, and H. Bal. Generalizing Java RMI to support ecient group Communication. In
ACM Java Grande Conference, 2000.
ProActive - o que é?




5
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)
ProActive - Características I

Tipo de Objectos
–
–



6
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.
ProActive - Características II

Parâmetros de Invocação
–
–


7
Passagem por Valor (deep copy) – Objectos
passivos
Passagem por Referência – Objectos Activos
Invocação Assíncrona
Funciona sobre o RMI do Java
Objectos Activos - Características




8
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.
Objecto Activo - Constituição

2 classes
–
Body



–
Objecto

9
invisível
gestão dos pedidos (requests) que
chegam ao objecto activo sendo
armazenados numa fila de prioridade.
configurável
Objecto padrão do Java
Objectos Activos – Invocação

Grafo de Objectos gerado na invocação
••Subclasse
Independente
de B de B.
• Armazena os Pedidos numa fila de Prioridade.
••Transforma
Cria o objecto
futuro edo
retorna-o
stub.
a invocação
métodoao
num
request object.
• Processa os Pedidos
• Forward dos request objects para o body.
10
Objectos Activos – Future Objects




11
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.
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




13
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.
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
–
–

Criação de um grupo com membros
–

15
Especificar classe base do grupo
Adicionar elementos ao grupo posteriormente
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!
Representação de Grupos

Duas representações complementares
–
–
16
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!
Invocação de métodos sobre Grupos I




17
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)
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:
–
–
18
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.
Invocação de métodos sobre Grupos III
19
Invocação de métodos sobre Grupos IV

Group Stub:
–
–

Group Proxy:
–
–
20
Objecto de uma subclasse comum ao grupo de
objectos
Representa o grupo de objectos
Constituído por um conjunto de proxies.
Cada proxy envia o request object ao respectivo
objecto activo.
Result Groups




21
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
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.
–
–
22
É passado como argumento um grupo de objectos.
Para conseguir espalhar os argumentos há que invocar o
método estático setScatterGroup (para voltar,
unsetScatterGroup).
Performance I
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.
23
+ computadores -> - objectos/computador -> - tempo
Performance II
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.
24
Conclusão I

Comunicação em grupo
–
–
–
25
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)
Conclusão II

Invocações Assíncronas
–
–
–
26
Evitam esperas, aumentando a eficiencia
Ideal em ambientes loosely coupled
Eliminam alguns deadlocks
Fim
Questões?
http://mega.ist.utl.pt/~ajra/PADI
27
Download

Apresentação