240 likes | 349 Views
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
E N D
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 • 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
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
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
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
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
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
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ó);
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}); } }
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(); } }
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
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
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
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
ProActive: Descritores de Implantação • Mapeando Virtual Nodes (no descritor) <ProActiveDescriptor> <componentDefinition> <virtualNodesDefinition> <virtualNode name="Dispatcher"/> </virtualNodesDefinition> <componentDefinition/> … </ProActiveDescriptor>
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>
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);
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
ProActive: Comunicação de Grupo • Estrutura de Grupo: Jvm2 Jvm1 ObjRemoto Stub Stub Proxy Proxy do Grupo Jvm3 ObjRemoto Stub Proxy
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
Exemplo: Processamento Paralelo • Aplicação C3D: usa vários “engines” para fazer o “render” da imagem
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
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