MOM Midleware orientada a objetos

1025 palavras 5 páginas
Comunicação orientada a mensagens

críticas a RPC





sincronismo modelo um a um dificuldades de tratamento de falhas dificuldades com arquiteturas não clienteservidor



volta ao modelo de troca de mensagens

com diferentes níveis de abstração

Sistemas de mensagens
• suporte para ponto a ponto e grupos
• desacoplamento
– temporal
• persistência das mensagens

– espacial
• canais e congêneres

Comunicação em grupo
• primitiva única transmite msgs a grupo de procs

• grupos abertos e fechados
• grupos estáticos e dinâmicos
– serviços de controle de participantes

Comunicação em Grupo
• motivações
– replicação e tolerância a falhas
– ferramentas para colaboração
• jogos
• conferências
• edição colaborativa

• um primeiro exemplo: no MPI, ligado a modelo SPMD
– operações coletivas

MPI - message passing interface
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0)
{
strcpy(message, "Hello, world"); for (i = 1; i < size; i++)
MPI_Send(message, 13, MPI_CHAR, i, type,
MPI_COMM_WORLD);
} else MPI_Recv(message, 20, MPI_CHAR, 0, type,
MPI_COMM_WORLD, &status); printf( "Message from process = %d : %s\n", rank, message);
MPI_Finalize();
}

grupos no MPI
• todos os processos de uma aplicação pertencem a um comunicador (grupo)
– MPI_COMM_WORLD

• grupos fechados com comunicação sincronizada
• operações coletivas têm como um de seus parâmetros um comunicador
– MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);

• novos comunicadores podem ser criados dentro do programa Operações Coletivas no MPI






Barrier: sincronização pura
Broadcast
Gather
Scatter
Reduction

 todas criam barreira implícita

exemplo: MPI_Scatterv

Header for MPI_Scatterv int MPI_Scatterv ( void *send_buffer, int *send_cnt, int *send_disp,
MPI_Datatype send_type, void *receive_buffer,

Relacionados