1 / 24

Palestrante: Eduardo Leal Guerra eguerra@imep.br Orientador: Alfredo Goldman gold@imep.br

ProActive: Um arcabouço para computação Paralela, Distribuída e Concorrente com Segurança e Mobilidade. Palestrante: Eduardo Leal Guerra eguerra@ime.usp.br Orientador: Alfredo Goldman gold@ime.usp.br. ProActive. API Java para programação Concorrente, Paralela, Distribuída e Computação Móvel

alia
Download Presentation

Palestrante: Eduardo Leal Guerra eguerra@imep.br Orientador: Alfredo Goldman gold@imep.br

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. ProActive:Um arcabouço para computação Paralela, Distribuída e Concorrente com Segurança e Mobilidade Palestrante: Eduardo Leal Guerra eguerra@ime.usp.br Orientador: Alfredo Goldman gold@ime.usp.br

  2. ProActive • API Java para programação Concorrente, Paralela, Distribuída e Computação Móvel • Criado pelo consórcio ObjectWeb desde Abil de 2002 sob licença LGPL • Principais características: • Padrão de programação Active Object • Objetos remotos acessíveis via invocação de métodos (RMI, JINI) • Comunicação Assíncrona com sincronização automática • Comunicação de Grupos • Descritores de Implantação em XML • Interface com vários protocolos: rsh, ssh, LSF, Globus • Visualização e monitoração: IC2D

  3. Agenda • Por quê ProActive ? • O Modelo • Active Objects • Exemplo: HelloWorld • Chamadas Assíncronas • Infra-estrutura de Componentes • Descritores de Implantação • Comunicação de Grupo • Migração de Active Objects • Exemplo: Processamento Paralelo • Aplicação IC2D

  4. ProActive: Justificativa • Separação entre o comportamento funcional e comportamento de baixo nível: distribuição • Transição de modelos facilitada • Sequencial  Multi-threaded  Distributed • Reuso do mesmo objeto • Prove: • Transparência de localização • Transparência deatividade • Sincronização • Modificações apenas no código de criação das instâncias

  5. ProActive: Modelo • Active Objects: subsistemas • Cada Active Object: • Pode ter vários Passive Objects • Tem exatamente um thread • Passive Object não-compartilhados • parâmetros são passados por deep-copy • Comunicação Assíncrona entre os Active Objects • Future Objects e wait-by-necessity • Controle total na recepção de requisições

  6. ProActive: Sistema em Execução B C A Não Subsistema Chamada Síncrona Active Object Chamada Assíncrona Passive Object Espaço Físico

  7. ProActive: Active Objects • Composto por 4 componentes: • O objeto em si (1) • O body: responsável pela sincronização e pelo serviço de requisições (2) • A pilha de requisições pendentes (3) • O proxy: repassa invocações de métodos (4) Caller Object (1) Body (2) Proxy (4) (3) Remote Node Local Node

  8. ProActive: Criando Active Objects • Baseado em instância: A a = (A) ProActive.newActive(“A”, params, nó) • Baseado em Objeto A a = new A(“nome”, 7); ... a = (A) ProActive.turnActive(a, nó);

  9. Exemplo: HelloWorld • Hello.java public class Hello { public Hello() {} ... public void sayHello() { System.out.println(“Hello, from : ” + getLocalHostName()) } public static void main (String[] args) { myServer = (Hello) ProActive.newActive( Hello.class.getName(), new Object[] {local}); } }

  10. Exemplo: HelloWorld • HelloClient.java public class HelloClient { ... public static void main(String[] args) { if (args.length > 0) { System.out.println(“Servidor em : “ + args[0]); myServer = (Hello) ProActive.lookupActive( Hello.class.getName(), args[0]); } myServer.sayHello(); } }

  11. ProActive: Chamadas Assíncronas • Future Objects A res = activeObject.foo(); Caller Stub_A res Future Proxy • O “caller” recebe um “Future”, e continua sua execução • Caso tente acessar o valor de res, fica bloqueado no Future Proxy (wait-by-necessity), até que o valor esteja disponível

  12. ProActive: Chamadas Assíncronas • Future Objects (cont.) A res = activeObject.foo(); Caller Stub_A res Future Proxy Object • Quando o objeto chamado terminar a computação de “res”, o valor é retornado ao “caller” • A referência do Future Object é atualizada tranparentemente

  13. ProActive: Infra-estrutura de Componentes • 3 tipos de componentes: • Primitive (A) • Composite (C) • Parallel (D) A A A B A D C B C D

  14. ProActive: Descritores de Implantação • Virtual Nodes (VN) • Usado no código fonte • Configurado em um arquivo XML • Operações nos descritores: • Mapeamento de VN para JVM (que está em um host) • Registro ou Busca de VNs • Criação ou Obtenção de JVMs

  15. ProActive: Descritores de Implantação • Mapeando Virtual Nodes (no descritor) <ProActiveDescriptor> <componentDefinition> <virtualNodesDefinition> <virtualNode name="Dispatcher"/> </virtualNodesDefinition> <componentDefinition/> … </ProActiveDescriptor>

  16. ProActive: Descritores de Implantação • Mapeando Virtual Nodes (no descritor) <ProActiveDescriptor> … <deployment> <mapping> <map virtualNode="Dispatcher"> <jvmSet> <vmName value="Jvm1"/> </jvmSet> </map> </mapping> <jvms> <jvm name="Jvm1"> <acquisition method="rmi"/> <creation> <processReference refid="jvmProcess"/> </creation> </jvm> </jvms> </deployment> … <infraestructure> /* Descreve a criação das JVMs */ </infraestructure> </ProActiveDescriptor>

  17. ProActive: Descritores de Implantação • Uso de Virtual Nodes (no código) Descriptor pad = ProActive.getDescritor(<path>); VirtualNode vn = pad.activeMapping(“Dispatcher”); Node node = vn.getNode(); ... C3D c3d = ProActive.newActive(“C3D”, param, node);

  18. ProActive: Comunicação de Grupo • Manipulação de grupos de Active Objects • Geração dinâmica de grupos de resultados • Capaz de expressar comunicação coletiva de alto nível • Broadcast • Scatter, gather • Baseada no mecanismo do ProActive • Comunicação Assíncrona

  19. ProActive: Comunicação de Grupo • Estrutura de Grupo: Jvm2 Jvm1 ObjRemoto Stub Stub Proxy Proxy do Grupo Jvm3 ObjRemoto Stub Proxy

  20. ProActive: Migração de Active Objects • Iniciada pelo próprio Active Object (AO) pela primitiva “migrateTo” • Também pode ser iniciada de fora do AO, através de um método público • A migração do AO é feita junto com : • Todas as requisições pendentes • Todos os Passive Objects • Todos os Future Objects

  21. Exemplo: Processamento Paralelo • Aplicação C3D: usa vários “engines” para fazer o “render” da imagem

  22. ProActive: IC2D • Interactive Control e Debug for Distribution • Características: • Visualização Gráfica de: • Hosts • JVMs • Nós • Active Objects • Topologia • Migração • Controle e Monitoração: • Migração de tarefas usando drag and drop • Criação de Nós e JVMs adicionais

  23. ProActive: IC2D

  24. Referências • Site ProActive - Documentation http://www-sop.inria.fr/oasis/ProActive/doc/index.html • Site ProActive – Applications http://www-sop.inria.fr/oasis/ProActive/apps/index.html

More Related