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