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.

Formulário para envio da atividade: https://forms.gle/BG7d94W3upPGYytB9

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.
Trabalho SO Esquema.png

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

Tpl warning.png

Essa atividade valerá 10 pontos da A3 nessa UC. Lembrando que a A3 são 40 pontos ao total.