Solução para o agronegócio que coleta dados via sensores de temperatura e umidade. Esses sensores são instalados em um drone com uma altíssima autonomia de energia, A cada 10 segundos são enviados para o droneDTO broker os dados de temperatura e umidade capturado naquele instante. Além da primeira função também é possível acionar o rastreamento do drone. Esta funcionalidade resulta na localização do equipamento em um mapa.
usage in this project:
- MySQL
- RabbitMQ
- Java
- ReactJs
- Docker (compose) :
Estamos utilizando o docker compose para a orquestração e automatização de containers.
Todos as imagens pré-compilada, ou seja, empacotada, foi adicionada no repositório do docker hub
Link das imagens :
https://hub.docker.com/r/gabrielltr/droneproducer
https://hub.docker.com/r/gabrielltr/dronebackend
https://hub.docker.com/r/gabrielltr/icc-react-web-app
No compose temos as seguintes imagens:
rabbitmq:3-management -> Servidor de mensageria
mysql -> Banco de dados Relacional
adminer -> O Adminer é uma solução acessível via browser para a administração do MySQL
droneProducer -> Responsável por receber as atualizações de dados dos “drones” essas atualizações seriam (longitude, latitude, temperatura)
dronebackend -> Responsável pela manutenção das informações dos ‘drones’, como a criação do ‘drone’ contendo (id,nome do drone,temperatura,longitude,latitude)
icc-react-web-app -> Responsável por exibir a ‘interface’ gráfica e realizar as chamadas nas apis para manter a atualização dos dados do ‘drone’
loadbalance:nginx -> Responsável por realizar o balanceamento de carga dos microserviços : icc-react-web-app end e dronebackend
First setup the environment:
export MS_VERSION=0.1.1-SNAPSHOT
export WEB_VERSION=0.1.0
echo $REACT_APP_GMAPSKEY $MS_VERSION $WEB_VERSIONdocker build icc-react-web-app/ -t gabrielltr/icc-react-web-app:0.1.0
docker build droneBackend/ -t gabrielltr/icc-react-web-app:0.1.1-SNAPSHOT
Local compose:
docker-compose up -dTo check backend health check
http://localhost:8090/actuator/health
this show health of this backend and if there is a rabbit and mysql connection
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "MySQL",
"validationQuery": "isValid()"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 269490393088,
"free": 233015492608,
"threshold": 10485760,
"exists": true
}
},
"ping": {
"status": "UP"
},
"rabbit": {
"status": "UP",
"details": {
"version": "3.8.9"
}
}
}
}-
Assista a demonstração em detalhes aqui:
https://www.loom.com/share/b86948b290b8490c9c44e98019f11f91 https://www.loom.com/share/30e400ed77334ea288f9bafebb6d4580 https://www.loom.com/share/8edf32012d624960898af84f86e10149 https://www.loom.com/share/64bb64d6feea469b8621d4a602ca2e5a -> Load Balance
docker swarm init
docker swarm join-token worker
The response will be like above, then you can add your workers
docker swarm join --token SWMTKN-1-22h12q8oxptbi8ivc143mx07yixzqirdww0h641mewq3zs909h-eqyfsev9tff5mj8s83uj32bw1 192.168.65.3:2377
cd portainer
docker stack deploy -c portainer-agent-stack.yml portainercd portainer
docker-compose up -dWhen ready you can access portainer by URL http://localhost:9000
docker stack deploy -c docker-compose.yml microservices --prune