Na disciplina de Sistemas distribuídos (2º Trimestre -PPGEAS- UFSC - 2011) , tive que fazer um projeto em CORBA para 3 estações , a idéia era termos 3 estações funcionando em maquinas diferentes enviando mensagens uma para as outras, além disso utilizaríamos o conceito de relógios escalares de Lamport para poder ordenar os eventos e mensagens para cumprir a ordem total na entrega das mensagens na camada de aplicação , vou criar uma serie de posta explicando como fizemos o projeto e as dificuldades e detalhes da implementação.
Em tempo , foi por isso que passei um bom tempo sem publicar nada , a disciplina de sistemas distribuídos e muito extensa e por isso tive que me dedicar e fiquei sem tempo para o blog
Vamos começar com uma explicação simples sobre o CORBA, segundo a wikipedia :
"CORBA (abreviado de Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Em face da diversidade de hardware e software que encontramos atualmente, a CORBA atua de modo que os objetos (componentes dos softwares) possam se comunicar de forma transparente ao usuário, mesmo que para isso seja necessário interoperar com outro software, em outro sistema operacional e em outra ferramenta de desenvolvimento. CORBA é um dos modelos mais populares de objetos distribuídos."
Os posts não vão se aprofundar muito no corba já que isso daria um livro inteiro , mas sempre que achar necessário vamos explicar uma ou outra característica do CORBA.
O corba é rival do RMI do Java ou seja funciona com base no principio do RPC ( Remote Procedury Call - Chamada de procedimento remoto), o corba é mais complicado que o RMI mas em compensação tem implementações em diversas linguagens diferentes enquanto o RMI é só em java.
Bom voltando ao projeto de sistemas distribuídos ... o enunciado do projeto era o seguinte :
Implemente um mecanismo baseado em relógios escalares (relógios lógicos de Lamport) que defina a entrega de mensagens obedecendo ordem Total em estações. Considere três estações (ou processos) sujeitas aos seguintes eventos de emissão:
S1 ( e11, m21, m31, e41, m51, m61)
S2 ( e12, m22, e32, m42, m52, e62, m72)
S3 ( m13, m23, e33, e43, m53, m63)
Todos os eventos de emissão de mensagens descritos nas seqüências acima são produzidos em suas estações (ou processos) respectivamente segundo as ordens locais indicadas pelos seus índices. Os eventos eij são internos e eventos mij correspondem à mensagens enviadas a todas estações (às três consideradas). No processo de envio timestamps são concatenados às mensagens usando os relógios lógicos. Os eventos recepção não estão anotados nas seqüências acima, mas são importantes no funcionamento dos relógios lógicos (devem ser atualizados quando de recepções de mensagens).
Premissas:
Comunicação ponto a ponto confiável com ordem FIFO entre estações.
Condições para as decisões de entrega:
Decisões de ordem em cada nó baseadas em uma fila por emissor (ver
desenho abaixo);
A simulação dos eventos internos eij deve corresponder a simples ativação
dos respectivos Relógios Lógicos dos respectivos processos Pj.
A ordem total na liberação das mensagens mij em cada processo toma
como base os valores de timestamp.
Implementar a partir de objeto aplicação correspondente a dependência
da mensagem m53 como sendo precedida pela emissão dos eventos evento interno e32 e mensagem m21.
Mostre no final dos eventos simulados as filas de delivery de mensagens nas três estações, com as mensagens difundidas ordenadas por estampilhas do mecanismo implementado.


A partir das especificações do projeto teríamos que criar 3 aplicativos cliente/servidor utilizando o Corba na versão java que já vem na SDK do java SE.
Inicialmente criamos 3 aplicativos exatamente iguais só fazendo algumas distinções para caracteriza-los como rodando em estações diferentes , ao final tivemos que implementar varias modificações no aplicativo padrão da 3º estação para atender ao item de projeto : Implementar a partir de objeto aplicação correspondente a dependência da mensagem m53 como sendo precedida pela emissão dos eventos evento interno e32 e mensagem m21.
Acompanhe nos próximos posts como fizemos a implementação.
Em tempo , foi por isso que passei um bom tempo sem publicar nada , a disciplina de sistemas distribuídos e muito extensa e por isso tive que me dedicar e fiquei sem tempo para o blog
Vamos começar com uma explicação simples sobre o CORBA, segundo a wikipedia :
"CORBA (abreviado de Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Em face da diversidade de hardware e software que encontramos atualmente, a CORBA atua de modo que os objetos (componentes dos softwares) possam se comunicar de forma transparente ao usuário, mesmo que para isso seja necessário interoperar com outro software, em outro sistema operacional e em outra ferramenta de desenvolvimento. CORBA é um dos modelos mais populares de objetos distribuídos."
Os posts não vão se aprofundar muito no corba já que isso daria um livro inteiro , mas sempre que achar necessário vamos explicar uma ou outra característica do CORBA.
O corba é rival do RMI do Java ou seja funciona com base no principio do RPC ( Remote Procedury Call - Chamada de procedimento remoto), o corba é mais complicado que o RMI mas em compensação tem implementações em diversas linguagens diferentes enquanto o RMI é só em java.
Bom voltando ao projeto de sistemas distribuídos ... o enunciado do projeto era o seguinte :
Implemente um mecanismo baseado em relógios escalares (relógios lógicos de Lamport) que defina a entrega de mensagens obedecendo ordem Total em estações. Considere três estações (ou processos) sujeitas aos seguintes eventos de emissão:
S1 ( e11, m21, m31, e41, m51, m61)
S2 ( e12, m22, e32, m42, m52, e62, m72)
S3 ( m13, m23, e33, e43, m53, m63)
Todos os eventos de emissão de mensagens descritos nas seqüências acima são produzidos em suas estações (ou processos) respectivamente segundo as ordens locais indicadas pelos seus índices. Os eventos eij são internos e eventos mij correspondem à mensagens enviadas a todas estações (às três consideradas). No processo de envio timestamps são concatenados às mensagens usando os relógios lógicos. Os eventos recepção não estão anotados nas seqüências acima, mas são importantes no funcionamento dos relógios lógicos (devem ser atualizados quando de recepções de mensagens).
Premissas:
Comunicação ponto a ponto confiável com ordem FIFO entre estações.
Condições para as decisões de entrega:
Decisões de ordem em cada nó baseadas em uma fila por emissor (ver
desenho abaixo);
A simulação dos eventos internos eij deve corresponder a simples ativação
dos respectivos Relógios Lógicos dos respectivos processos Pj.
A ordem total na liberação das mensagens mij em cada processo toma
como base os valores de timestamp.
Implementar a partir de objeto aplicação correspondente a dependência
da mensagem m53 como sendo precedida pela emissão dos eventos evento interno e32 e mensagem m21.
Mostre no final dos eventos simulados as filas de delivery de mensagens nas três estações, com as mensagens difundidas ordenadas por estampilhas do mecanismo implementado.


A partir das especificações do projeto teríamos que criar 3 aplicativos cliente/servidor utilizando o Corba na versão java que já vem na SDK do java SE.
Inicialmente criamos 3 aplicativos exatamente iguais só fazendo algumas distinções para caracteriza-los como rodando em estações diferentes , ao final tivemos que implementar varias modificações no aplicativo padrão da 3º estação para atender ao item de projeto : Implementar a partir de objeto aplicação correspondente a dependência da mensagem m53 como sendo precedida pela emissão dos eventos evento interno e32 e mensagem m21.
Acompanhe nos próximos posts como fizemos a implementação.
Comentários
Postar um comentário
Ajude o blog a melhorar comente!!!