Pular para o conteúdo principal

Projeto de sistemas distribuídos usando CORBA, parte I : O projeto

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.

Comentários

Postagens mais visitadas deste blog

Projetos em Sala de aula

A educação baseada em projetos vem sendo usada como uma metodologia poderosa para melhor preparar estudantes do século 21, já que leva os alunos a trabalhar em conjunto, se organizar, pesquisar e executar harmonicamente. Porém, antes de levar a metodologia para a sala de aula, será que os professores sabem como e quais projetos trabalhar em suas disciplinas? Uma dessas novidades é o  PBLU (Project Based Learning University ), plataforma gratuita que ajuda a capacitar professores para o uso de projetos em suas disciplinas, como uma forma de agregar conteúdo e motivar os estudantes. Conheça os oito pontos principais para um bom programa de aprendizagem baseada em projeto: Ter conteúdo relevante.   O objetivo da abordagem é trabalhar os conceitos-chave das disciplinas acadêmicas a partir de um projeto. Desenvolver habilidades para o século 21.   Ao longo do projeto, os alunos deverão buscar uma resposta a um problema. Para isso, eles deverão buscar referências...

Meu kit de desenvolvimento de software do dia a dia

Conjunto de 10 ferramentas do dia a dia , as que mais utilizo para desenvolvimento de software, ainda tem outras mas essa pequena lista já é bem representativa  :-) , se você tem outras sugestões de aplicativos comente no post . 1 - Java  Principal linguagem que utilizo( vocês já devem ter percebido pelos posts : -)  ) , apresar de vez em quando usar o C/C++ , bash e mais recentemente o ruby ... Java SE - Downloads | Oracle Technology Network | Oracle 2 - IDE : Netbeans  Pra mim ainda é a mais completa apresar de reconhecer que o eclipse em muitas maquinas roda bem mais rápido , prefiro o netbeans pelo conjunto de ferramentas integradas, e no geral não preciso configurar nada , estou ficando preguiçoso de ter que mexer , configurar e fuçar tutoriais para que as coisas funcionem ... em fim , vou de Netbeans . Welcome to NetBeans 3- Editor de texto generico : TextWrangler Gratuito, bom para editar HTML , scripts em bash e ruby, não é uma ferramenta do...

Encurtador de URL Seguro

Essa é para quem usa o twitter : A McAfee lançou recentemente seu próprio serviço de encurtador de URLs com um plus a mais: ele verifica, antes de redirecionar, se o site de destino contém alguma ameaça. Para quem tinha receio (com razão) em clicar em URLs encurtadas como tinyurl.com e bit.ly esta solução com certeza trará mais tranquilidade no que diz respeito a segurança. Para acessar o serviço, que ainda está em beta, basta seguir para o endereço: http://mcaf.ee/ Fonte: Info Online