Carregando...
 

INF623

Programação Distribuí­da (28h)
Professor Allan Edgard Silva Freitas
Ementa

Middlewares para Objetos Distribuí­dos. Comunicação baseada em eventos. Web Services. Serviço de Nomes. Espaço de Tuplas. Frameworks de Comunicação em Grupo.

Objetivos Gerais

Apresentar aspectos práticos de implementação de Sistemas Distribuí­dos, viabilizando o entendimento de alguns dos principais componentes.

Objetivos Especí­ficos

Habilitar o aluno a desenvolver aplicações distribuí­das utilizando diferentes arquiteturas e frameworks.

Cronograma Previsto*:
Aula 1: Threads.
Aula 2: Explicação do Paradigma IPC por troca de mensagens. Prática com Sockets e RMI.

Aula 3: Explicação de comunicação baseada em eventos. Prática com JMS.
Aula 4: Explicação de comunicação baseada em eventos. Prática com JMS.
Aula 5: Replicação Ativa. Uso de Comunicação em Grupo.
Aula 6: Replicação Ativa. Uso de Comunicação em Grupo.
Aula 7: Reservado para desenvolvimento de entregáveis
Aula 8: Avaliação do Entregável (1) e dos demais entregáveis (2).
* Tanto o conteúdo quanto as datas podem ser alterados.

Entregáveis:

As implementações serão em duplas e no dia da entrega a avaliação será com apresentação e entrevista.

 

(1) Construção de um Serviço Replicado de Banco de Dados, o serviço deve funcionar sob uma plataforma de comunicação em grupo. Deve ser instanciado em duas e três máquinas e deve operar sob falhas, com ao menos uma máquina ativa. Ao se submeter um comando ao serviço, o mesmo deve ser executado em todas as réplicas ou em nenhuma. Seu serviço deve usar o middleware de comunicação em grupo para concordar na ordem e entrega do comando a uma aplicação que o executa. Uma máquina ao se recuperar da falha deve requerer a entrada novamente no grupo e realizar a atualização do seu estado para o estado atual do serviço replicado.

 

Middleware de comunicação em grupo: JGroups

Replicação em Banco de Dados: Um conjunto de servidores de BD deve ser replicado de forma ativa por meio de comunicação em grupo.

 

Cada servidor é composto por:

- MySQL Server ou postgres.

- uma interface de acesso formada por um web service que recebe o comando SQL e retorna o dataset de resultados

 

A interface de acesso deve ao receber a requisição, submeter ao grupo.

 

Somente quando a requisição é entregue pelo grupo, a mesma é processada.

 

Após o processamento, o web service deve retornar a resposta com o total de linhas afetadas e em caso de SELECT o dataset.

 

Passos:

1 - cliente requisita a um dos Web Services com USER, PASS e REQ SQL;

2 - REQ SQL é enviada ao JGroups;

3 - REQ SQL é entregue do JGroups a cada réplica;

4 - REQ SQL é enviada pela camada de DAO para o mySQL;

5 - após processar, mySQL responde ao DAO;

6 - a resposta é enviada por XML ao cliente.

 

Arquivo não encontrado.

 

O cliente deve ser instanciado em várias vezes, um cenário de testes a ser exercitado é gerar INSERTs com dados aleatórios em uma mesma tabela que tenha a chave primária auto-incrementável. Em todas as réplicas deve-se verificar a mesma ordem de inserção.

 

 

(2) Pequenas implementações baseadas em Roteiros de RMI, JMS, Web Service, JNDI e DSM. (Exemplo: Toy-Problem usando JMS: Os Subscribers devem utilizar JMS ser notificados de conteúdo novo de uma dada "tag" do IDTVS Provider que assinou, utilizando publish-subscribe).

 

Entregáveis:

- threads: Produtor-consumidor;

- dll: Comunicação IPC;

- Sockets: implementação de Publish-Subscribe;

- RMI: implementação de Publish-Subscribe;

- Java Message Service: Notificação de informações relacionadas a ações de empresas (stocks);

- Web Services: Controle de Agência Bancária (Criação de conta, depósito, saque e saldo);

 

Todas as aplicações serão testadas em máquinas com IP distinto para o cliente e o server;

Todas as aplicações devem ser testadas com mais de um cliente simultaneamente, no caso do JMS, deve ser possí­vel ter mais de um Publisher e mais de um Subscriber simultí¢neos.

 

Nota computada a partir da apuração dos trabalhos (1) e (2).

 

Referência:

FARLEY, J. . JAVA Distributed Computing. ISBN 1-56592-206-9E, ed. 1, Editora O'Relly, Janeiro 1998. Disponí­vel on-line em http://docstore.mik.ua/orelly/java-ent/dist/index.htm
ORACLE. Java Message Service Tutorial. Disponí­vel on-line em http://docs.oracle.com/javaee/1.3/jms/tutorial/ 

(ver também o tutorial especí­fico para o J2EE 6 em http://docs.oracle.com/javaee/6/tutorial/doc/bncfa.html )


MAMOUD, Q. H. . Getting started with JavaSpaces Technology: Beyond Conventional Distributed Programming Paradigms. Disponí­vel on-line em http://www.oracle.com/technetwork/articles/javase/javaspaces-140665.html
PAMPLONA, V. F. . Web Services: Construindo, disponibilizando e acessando Web Services via J2SE e J2ME. Disponí­vel on-line em http://vitorpamplona.com/deps/papers/2004_WebServices2.pdf
BAN, B. et al. . JGroups - A Toolkit for Reliable Multicast Communication. Disponí­vel on-line em 
http://www.jgroups.org 

 

Método:

Curso prático. Uso de exemplos motivadores e um "toy-problem" associado a cada. Uso de slides (esporádico).