efficient, flexible, and typed group comunications in java

27
Laurent Baduel Françoise Baude Denis Caromel 1 Efficient, Flexible, and Typed Group Comunications in Java Por: Adriano Andrade 5 Susana Rijo 53868 José Faustino Santos 53921 http://mega.ist.utl.pt/~ajra/PADI

Upload: ipo

Post on 11-Jan-2016

29 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 2: Efficient, Flexible, and Typed Group Comunications in Java

Motivação

“Invocação assíncrona de métodos sobre agrupamentos de objectos

distribuídos…”

2

Page 3: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 4: Efficient, Flexible, and Typed Group Comunications in Java

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.

Page 5: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 6: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 7: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 8: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 9: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 10: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 11: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 12: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 13: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 14: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 15: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 16: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 17: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 18: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 19: Efficient, Flexible, and Typed Group Comunications in Java

Invocação de métodos sobre Grupos III

19

Page 20: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 21: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 22: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 23: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 24: Efficient, Flexible, and Typed Group Comunications in Java

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.

Page 25: Efficient, Flexible, and Typed Group Comunications in Java

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

Page 26: Efficient, Flexible, and Typed Group Comunications in Java

Conclusão II

Invocações Assíncronas – Evitam esperas, aumentando a eficiencia– Ideal em ambientes loosely coupled– Eliminam alguns deadlocks

26

Page 27: Efficient, Flexible, and Typed Group Comunications in Java

Fim

Questões?

27

http://mega.ist.utl.pt/~ajra/PADI