Treinamento no Treinamento no
GRADEpGRADEp
Treinamento no Treinamento no
GRADEpGRADEpServiço ExecutorExecutorDemo
Slide 2
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
AutoriaAutoria
• Autora Ingrid Oliveira de Nunes Versão (número, data, autor)
• V1, junho de 2005
• V2, 03 de agosto de 2005, Geyer
Slide 3
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
Sumário da ApresentaçãoSumário da Apresentação
• Sumário Visão Geral Activator Interfaces
• Migrable• SchedulingHeuristic
ExecutorDemo• classe Walker• classe WalkerActivator
Slide 4
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
Visão GeralVisão Geral
• Visão Geral define métodos para:
• disparar e terminar aplicações
• criar e migrar objetos (OXes)
• ligar heurísticas por aplicação que irão guiar a seleção de host tanto na instanciação como na migração remotas dos objetos
noção de um Activator por objeto instanciação através do Design Pattern Strategy
Slide 5
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
ActivatorActivator
• Activator responsável por:
• conectar o objeto ao seu ambiente de execução
• carregar e inicializar qualquer outro recurso extra antes do objeto iniciar sua execução
especificado quando o OX é instanciado• através do método createObject()
ligado ao objeto – carregado com ele mesmo que haja migração caso seja omitido, o sistema procurará um Activator que sirva para
o objeto
Slide 6
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
InterfaceInterface
• Interface do Executor métodos de instância
// Cria um objeto na aplicação que o invoca, invocando o construtor apropriado de acordo com a lista de parâmetros
public ObjectId createObject(Class c,Object[] p,Activator a,Object hint);
• Parâmetros: c – classe a ser instanciada p – parâmetros a serem passados ao construtor a – Activator customizado do objeto hint – dica para guiar o processo de seleçao de host
• Retorno: identificador do objeto
Slide 7
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
InterfaceInterface
• Interface do Executor
// Migra um OX existente entre dois nodos
public void moveObject(ObjectId ox,Object placementHint);
• Parâmetros: ox – objeto a ser migrado placementHint – dica para onde o objeto será migrado
Slide 8
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
InterfaceInterface
• Interface do Executor
// Desativa o objeto OX, armazenando seu estado e outras informações de gerenciamento no objeto MarshaledOX retornado
// Necessário por exemplo antes da migração de um objetopublic MarshaledOX deactivateObject(ObjectId ox);• Parâmetros:
ox – objeto a ser desativado
• Retorno: objeto com informações de estado do objeto desativado
// Retorna a execução de um objeto desativadopublic void activateObject(MarshaledOX oxState);• Parâmetros:
oxState – objeto com informações de estado do objeto a ser ativado
Slide 9
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
InterfaceInterface
• Interface do Executor
// Dispara a execução de uma aplicação descrita pelo documento com o descritor de disparo
public void startApplication(org.isam.util.xml.XmlElement launchingDesc) throws MalformedAppLaunchingDescriptorException;
• Parâmetros: lauchingDesc – documento com o descritor de disparo da aplicação
// Faz a aplicação abortar sua execução, parando todas as suas threads
public void exitApplication();// Retorna a aplicação cuja thread chamadora pertencepublic ApplicationId currentApplication();• Retorno: identificador da aplicação
Slide 10
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
InterfaceInterface
• Interface do Executor
// Executa a ação fornecida na aplicação, esperando seu término para retornar
public void runAction(ApplicationId app,Runnable action);• Parâmetros:
app – aplicação onde a ação será executada action – ação a ser executada
// Seta uma heurística de agendamento por aplicação. Este método está deprecated
public void setHeuristic(SchedulingHeuristic sh);• Parâmetros:
sh – a heurística de agendamento
Slide 11
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
Interface – SchedulingHeuristicInterface – SchedulingHeuristic
• Interface – SchedulingHeuristic interface definida dentro da interface Executor liga as heurísticas de agendamento à operação do Executor define os métodos:
• public HostId chooseCreationHost(String cls,Object[] params,Object hint,Vector toAvoid);
• public HostId chooseMigrationHost(ObjectId o,Object hint,Vector toAvoid);
Parâmetros:• cls – classe a ser instanciada• o – objeto a ser migrado• p – parâmetros a serem passados ao construtor• hint – dica para guiar o processo de seleçao de host• toAvoid – lista de hosts a evitar
Retorno: identificador do host escolhido
Slide 12
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
ExecutorDemoExecutorDemo
• ExecutorDemo exemplo de uma aplicação do serviço Executor no GRADEp local: /isam/isam-apps/executordemo/ arquivos:
• ExecutorDemo.java• fonte da aplicação.
• executordemo.isam• descritor de disparo da aplicação em formato XML do ISAM.
Slide 13
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
ExecutorDemo – classe WalkerExecutorDemo – classe Walker
• ExecutorDemo – classe Walker implementa as interfaces Runnable e Serializable
• opcionais ou dependentes do comportamento da aplicação
atributos:• String name – nome do objeto
• String where – localização do objeto
• int count – contador de passos da execução do objeto
métodos• run() – a cada 2 segundos, imprime a localização do objeto, enquanto
a Thread não é interrompida
• setWhere(String where) – seta a localização do objeto
Slide 14
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
ExecutorDemo – classe WalkerActivatorExecutorDemo – classe WalkerActivator
• Ativador da classe Walker Ativação:
public void activate(ObjectId oxID,Object obj,MarshaledOX extState);
• seta localização do objeto• cria uma thread para o objeto• inicia a execução da thread
Desativação:
public void deactivate(ObjectId oxID,Object obj,MarshaledOX oxState)
throws InterruptedException;• interrompe a thread• espera término da thread
Slide 15
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
ExecutorDemoExecutorDemo
• ExecutorDemo recebe como parâmetro três identificadores de Host (HostId) cria instância do serviço Executor:
Executor executor = (Executor)Exehda.getService(Executor.SERVICE_NAME);
cria objeto no primeiro Host fornecido:
ObjectId walkerID =executor.createObject(
Walker.class, //Classe a ser instanciadanew Object[] { "Walker#0" },
//Argumentosnew WalkerActivator(), //Ativatorh1); //Host
Slide 16
Rede Nacional de Ensino e PesquisaTreinamento em Gradep - julho 2005
Serviço Executor
ExecutorDemoExecutorDemo
• ExecutorDemo migra o objeto entre o segundo e o terceiro host indefinidamente:
while (true) {
sleep(10000);
executor.moveObject(walkerID,h2);
System.out.println("Moved to "+h2);
sleep(10000);
executor.moveObject(walkerID,h3);
System.out.println("Moved to "+h3);
} método sleep(long millis): faz a thread corrente parar sua execução
durante os milisegundos fornecidos
Treinamento no Treinamento no
GRADEpGRADEp
Treinamento no Treinamento no
GRADEpGRADEpServiço ExecutorExecutorDemo