****************************************************************************
___ _ __ ____ ____ __ ___ __ __ __ ___ ______ ____ ___
/ _ )| | / /____ / __// _// |/ // / / // / / _ |/_ __// __ \ / _ \
/ _ || |/ //___/_\ \ _/ / / /|_/ // /_/ // /__ / __ | / / / /_/ // , _/
/____/ |___/ /___//___//_/ /_/ \____//____//_/ |_|/_/ \____//_/|_|
****************************************************************************
Este projeto é uma implementação do Algoritmo de Berkeley, um algoritmo que permite sincronizar diversos computadores em um sistema distribuído. Este projeto é particularmente focado em um sistema distribuído responsável pelo controle de compra/venda de ações em uma bolsa de valores. Ele foi desenvolvido como parte dos requisitos necessários para aprovação na disciplina de CC7261 - Sistemas Distribuídos do curso de Ciência da Computação do Centro Universitário FEI, orientado pelo Prof. Calebe de Paula Bianchini
O sistema distribuído é responsável pelo controle de compra/venda de ações em uma bolsa de valores (BV). A BV detém uma lista de ações, a quantidade dessas ações disponíveis para compra/venda e o valor atual de cada ação. Todas as vezes que a quantidade ou o preço de uma ação é modificado, essas informações são propagadas para as instituições intermediárias e seus sistemas de home-brokers (HB). Os sistemas de HB são responsáveis pelo envio dos pedidos de compra/venda para a BV.
Devido à implementação utilizando docker-compose
e dockerfiles
é possível escalar o sistema, adicionando quantos Homebrokers e Robôs desejar. A configuração Defaut inicia o ambiente com 1 Bolsa de Valores, 2 Homebrokers e 4 Robôs( 2 para cada Homebroker).
Um relatório mais completo está presente junto aos arquivos deste repositório.
- Mínimo de 1 processo representando a BV
- Mínimo de 2 processos de HB vinculados a BV
- Mínimo de 2 robôs para cada HB existente
- O relógio de cada processo, no início do seu funcionamento, deve ser recuperado do relógio do sistema
- A cada ciclo de 10 segundos, o relógio local de cada processo deve ser modificado aleatoriamente em ±2s
- Python
- Docker/ Docker Compose
- RabbitMQ
- Shell Script
Siga estas etapas para executar este projeto:
-
Conceder permissões
Após clonar o reposítorio utilizando o comando
git clone https://github.com/akajhon/BV-Simulation/
, é necessário conceder permissões de execução ao script principal:
chmod +x ./simulation.sh
-
Instalar o Docker
Primeiro, você precisa ter o Docker instalado em sua máquina. Se ainda não o instalou, você pode baixar o Docker aqui ou utilizar o parâmetro
requirements
junto ao scriptsimulation.sh
. O comando completo para esta tarefa é:
./simulation.sh requirements
-
Construir as Imagens e Iniciar os Contêineres Docker
No diretório raiz do projeto, onde estão localizados os Dockerfiles e o docker-compose.yml, execute o comando abaixo para construir e iniciar as imagens Docker para a Bolsa de Valores, os Home Brokers e os Robôs. Ao utilizar este parâmetro, os logs de execução serão exibidos em tempo real.
./simulation.sh start
-
Verificar a Execução
Os logs de cada contêiner podem ser visualizados usando o comando
docker logs
. Porém, podemos usar o parâmetrologs
junto ao scriptsimulation.sh
para visualizar as logs de todos os contâineres. Você pode usar:
./simulation.sh logs
-
Parar a Execução
Para parar a execução de todos os contêineres e cancelar a simulação, você pode usar o comando:
./simulation.sh stop
Note que todas estas etapas devem ser realizadas no terminal ou linha de comando e assumem que você está no diretório onde o docker-compose.yml e os Dockerfiles estão localizados.
Thales Oliveira Lacerda | João Pedro Rosa Cezarino | Vitor Martins Oliveira | Hugo Linhares Oliveira |
R.A: 22.120.056-1 | R.A: 22.120.021-5 | R.A: 22.120.067-8 | R.A: 22.120.046-2 |
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE.md para detalhes.