Trabalho De 4.4
Monografias: Trabalho De 4.4. Pesquise 862.000+ trabalhos acadêmicosPor: 5140 • 7/11/2013 • 1.465 Palavras (6 Páginas) • 241 Visualizações
Implementação e Funcionamento
A implementação do sistema distribuído se realizou com uma orientação aos casos de uso que deveriam ser feitos, os processos de comunicação entre filiais e matriz, e as leituras e escritas no banco de dados da matriz e filial.
A organização e estrutura do programa distribuído foram feitas com quatro classes Java, ou seja, quatro arquivos.Java. No programa matriz, estas classes são Matriz, Conexão, ComunicadorMatriz e ConversaMatriz. No programa filial as classes são Cliente, ConexãoCliente, Comunicador e Conversa.
Na matriz, a classe Matriz possui como atributos o número de filiais que estarão presentes no sistema distribuído e um objeto da classe ComunicadorMatriz. A classe Matriz possui o programa principal (main) de onde deve ser chamado o processso. Ao se executar o programa em linha de comando, deve ser passado como parâmetro o número de filiais da rede. Se o número de filiais da rede mudar, basta que o programa seja chamado novamente com o novo número como parâmetro. Este valor é atribuído para a variável local de classe de número de filiais. O programa principal da classe matriz é responsável por instanciar um novo objeto ComunicadorMatriz, que é uma thread. Este objeto é criado e seu método start() é chamado, assim inicia-se uma nova thread ComunicadorMatriz.
A classe e thread ComunicadorMatriz é responsável por criar um socket de comunicação para cada uma das filiais, criar a conexão de banco de dados da matriz, fazer a conexão de banco de dados da matriz, checar por requisições de casos de uso no banco de dados e encaminhar a realização do caso de uso. Desta forma, quando uma nova requisição de caso de uso, como alugar filme ou devolver filme, ocorre através do programa web, esta requisição é salva no banco de dados da matriz. O programa distribuído da matriz checa pela existência de requisições uma vez a cada intervalo de tempo determinado (5 segundos), e se houver algum requisição (retirada de uma tupla da tabela do banco de dados), esta requisição é encaminhada para ter sua realização. Para cada tipo de requisição, há um encaminhamento diferente. Por exemplo, se o caso de uso for “alugar filme”, então o encaminhamento feito é o de se iniciar um novo objeto ‘Conversa’ (classe Conversa) para cada uma das filiais, e iniciar sua execução (Conversa também é uma thread). Assim, no caso de uso de alugar, a o ComunicadorMatriz inicia um socket de comunicação com cada filial, e instacia uma thread de conversa para cada filial através de seu respectivo socket.
O conceito adotado de ‘conversa’, implementado na classe Conversa, foi o de um conjunto inteiro de comunicações entre matriz e filial para se realizar um caso de uso. Assim uma conversa é uma comunicação entre matriz e filial, nas suas várias possíveis mensagens que são enviadas e recebidas, de forma a se realizar o processo completo de algum caso de uso. No caso de uso ´alugar filme´, essa conversa é específica. E assim para cada caso de uso há uma conversa específica.
Ainda no caso de uso ´alugar filme´, o ComunicadorMatriz lança a execução de uma thread de conversa para cada filial. Essa thread está na implementação da classe ConversaMatriz. A classe ConversaMatriz, portanto, possui responsabilidade de realizar as passagens de mensagens entre a matriz e uma filial para realizar o caso de uso alugar. A primeira mensagem é a de confirmação do caso de uso (filial para matriz). Após isso a matriz obtém de seu banco de dados o endereço do cliente que requisita um aluguel. A matriz monta uma mensagem com o código do cliente, o código do filme e a localização do cliente (endereço relativo). Essa mensagem é a segunda, e é enviada ao cliente (matriz para filial). A filial, por sua vez, verifica o número de funcionários de entrega livres, o número de cópias do filme requisitado livres, e a sua distância até o endereço do cliente. A filial encapsula estes dados em uma mensagem e a envia para a matriz (terceira mensagem, filial -> matriz). A matriz recebe esta mensagem, decodifica-a, e armazena os valores em suas variáveis locais. Esta conversação ocorre não somente uma vez. Esta conversação ocorre para cada uma das filiais, e uma thread de conversa a realiza para cada filial.
Ao final, realizam-se todas as comunicações, a matriz coleta todos os dados necessários de cada filial, e as threads de conversa terminam. Para a continuidade do processamento do caso de uso ‘alugar’, o matriz processa os dados coletados e determina a melhor filial para entregar o filme para o cliente, de acordo com o número de funcionários de entrega livres, o número de cópias livres e principalmente a distância física entre filial e matriz. A filial que melhor satisfazer estes requisitos é escolhida para entregar o filme. Os dados da filial escolhida são atualizados no seu banco de dado apropriadamente, e o banco de dados da matriz também recebe atualização adequada. Ocorrem atualizações também no sistema distribuído. Estas atualizações são: o filme alugado, decremento no número de cópias disponíveis do filme, informações sobre o filme e cópia alugados, valor a pagar de conta do cliente, entre outros.
As comunicações que ocorrem entre matriz e filiais segue um protocolo criado para o projeto, ou seja, um protocolo próprio de aplicação. Nas camadas mais baixas, a comunicação pela rede ocorre usando a internet pelos protocolos
...