Go - Sistemas Distribuídos - Atividade
De Aulas
Atividades
Agora que já revisitamos conceitos sobre processo, comunicação entre processos, programação concorrente e distribuída, podemos trabalhar em um desafio mais complexo e divertido.
Vamos desenvolver uma aplicação distribuída envolvendo cliente e servidores. Nesse caso podemos imaginar uma aplicação que roda em um computador cliente e, para que sua execução seja mais rápida, distribuímos o processamento em servidores que estão em outros computadores.
Descrição
- Essa atividade pode ser feita em grupo de até 4 pessoas ou individual;
- Deve desenvolver um servidor que executa alguma(s) operação(s);
- O servidor pode resolver problemas como:
- operações matemáticas/cálculos
- ordenação de strings
- codificação e decodificação de strings
- etc. O legal é fazer uma pesquisa de que tipo de aplicação pode ser distribuída.
- O cliente pode ser no modo texto mesmo, ou se o grupo preferir um desafio maior, pode ser feito em modo gráfico (desktop). Existem várias bibliotecas pra isso, a exemplo da biblioteca fyne.io.
Funcionamento
- O usuário requisita alguma operação no cliente;
- O programa cliente distribui o processamento e envia para n servidores;
- O servidor recebe uma mensagem string que pode ser no formato JSON, ou XML, ou pode ser usando algum formato que o grupo mesmo cria. O legal é manter em um padrão já existente;
- Os servidores respondem para o cliente com o resultado em uma mensagem string, no mesmo formato recebido (ex. JSON);
- O cliente reúne os resultados para apresentar ao cliente.
- OBS: os servidores não precisam fazer as mesmas operações. Podem ser programadas diferentes operações para resolver o problema distribuído e pode dar uma maior complexidade ao desenvolvimento, deixando a atividade mais divertida.
Nessa atividade existem três tipos de processos envolvidos:
- Processo Cliente: localizado em um computador cliente. O usuário desse processo deve chamá-lo para efetuar alguma operação. O processo cliente envia uma mensagem para o servidor (via socket) que envia de volta o resultado. O programa cliente apresenta o resultado ao usuário.
- Processo Servidor: localizado em um computador servidor. Esse processo recebe uma requisição (via socket) de um cliente e inicia um processo filho para gerenciar a conexão. Depois de tratar a requisição, retorna o resultado ao cliente.
- Processo Executor: localizado no mesmo computador que o Processo Servidor. Recebe uma mensagem via pipes/canais da operação, executa o processamento e retorna o resultado também via pipe.
Atividade e A3
|