24
ProActive: Um arcabouço para computação Paralela, Distribuída e Concorrente com Segurança e Mobilidade Palestrante: Eduardo Leal Guerra [email protected] Orientador: Alfredo Goldman [email protected]

Palestrante: Eduardo Leal Guerra [email protected] Orientador: Alfredo Goldman [email protected]

  • Upload
    alia

  • View
    32

  • Download
    3

Embed Size (px)

DESCRIPTION

ProActive: Um arcabouço para computação Paralela, Distribuída e Concorrente com Segurança e Mobilidade. Palestrante: Eduardo Leal Guerra [email protected] Orientador: Alfredo Goldman [email protected]. ProActive. API Java para programação Concorrente, Paralela, Distribuída e Computação Móvel - PowerPoint PPT Presentation

Citation preview

Page 1: 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 [email protected]

Orientador: Alfredo [email protected]

Page 2: Palestrante:  Eduardo Leal Guerra eguerra@imep.br Orientador: Alfredo Goldman gold@imep.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

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

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

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

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 de atividade Sincronização

Modificações apenas no código de criação das instâncias

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

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

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

ProActive: Sistema em Execução

CA

B

Active Object

Passive Object

Chamada Síncrona

Chamada Assíncrona

Subsistema

Espaço Físico

Não

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

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)

Proxy (4)

Object (1)Caller Body (2)

Remote Node Local Node

(3)

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

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ó);

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

Exemplo: HelloWorld

Hello.javapublic 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});

}}

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

Exemplo: HelloWorld

HelloClient.javapublic 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();}

}

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

ProActive: Chamadas Assíncronas Future Objects

A res = activeObject.foo();

Caller Stub_AFuture 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

res

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

ProActive: Chamadas Assíncronas Future Objects (cont.)

A res = activeObject.foo();

Caller Stub_AFuture Proxy

Quando o objeto chamado terminar a computação de “res”, o valor é retornado ao “caller”

A referência do Future Object é atualizada tranparentemente

res

Object

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

ProActive: Infra-estrutura de Componentes 3 tipos de componentes:

Primitive (A) Composite (C) Parallel (D)

A

A D

BC D

A

A

B

C

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

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

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

ProActive: Descritores de Implantação Mapeando Virtual Nodes (no descritor)

<ProActiveDescriptor>

<componentDefinition>

<virtualNodesDefinition>

<virtualNode name="Dispatcher"/>

</virtualNodesDefinition>

<componentDefinition/>

</ProActiveDescriptor>

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

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>

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

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);

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

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

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

ProActive: Comunicação de Grupo Estrutura de Grupo:

Jvm2

Jvm3

Jvm1

ObjRemoto

ObjRemoto

Proxy do Grupo

Stub

Stub Proxy

Stub Proxy

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

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

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

Exemplo: Processamento Paralelo Aplicação C3D: usa vários “engines” para fazer o

“render” da imagem

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

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

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

ProActive: IC2D

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

Referências

Site ProActive - Documentationhttp://www-sop.inria.fr/oasis/ProActive/doc/index.html

Site ProActive – Applications

http://www-sop.inria.fr/oasis/ProActive/apps/index.html