1 / 27

Efficient, Flexible, and Typed Group Comunications in Java

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

ipo
Download Presentation

Efficient, Flexible, and Typed Group Comunications in Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Motivação “Invocação assíncrona de métodos sobre agrupamentos de objectos distribuídos…”

  3. 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

  4. 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. 1J. Maassen, T. Kielmann, and H. Bal. Generalizing Java RMI to support ecient group Communication. In ACM Java Grande Conference, 2000.

  5. 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)

  6. 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.

  7. 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

  8. 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.

  9. 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

  10. Independente de B. • Cria o objecto futuro e retorna-o ao stub. • Forward dos request objects para o body. • Subclasse de B • Transforma a invocação do método num request object. • Armazena os Pedidos numa fila de Prioridade. • Processa os Pedidos Objectos Activos – Invocação • Grafo de Objectos gerado na invocação

  11. 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.

  12. 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().

  13. 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.

  14. 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.

  15. 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!

  16. 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!

  17. 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)

  18. 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.

  19. Invocação de métodos sobre Grupos III

  20. 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.

  21. 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

  22. 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).

  23. 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. • + computadores -> - objectos/computador -> - tempo

  24. 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.

  25. 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)

  26. Conclusão II • Invocações Assíncronas • Evitam esperas, aumentando a eficiencia • Ideal em ambientes loosely coupled • Eliminam alguns deadlocks

  27. Fim Questões? http://mega.ist.utl.pt/~ajra/PADI

More Related