Skip to content

fernandomarca/rust-gRPC-Kafka-microservices-codepix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Imersão Full Stack && Full Cycle

rust

Sobre o repositório

Esse repositório contém o código do Codepix modulo da imersão FullCycle escrito em Rust para referência didáticas.

Se for útil para seus estudo Rust dê uma estrelinha.

O projeto também conta com as integrações:

  • Prisma-rust-client experimental.
  • Tonic gRPC HTTP/2.
  • gerador Prost Protocol Buffers proto3.
  • Diesel Orm.
  • Postgres.
  • Kafka/rdkafka.

Erd do projeto

erd

Erd criado pelo do dev.dbml

dbml

Instruções de inicialização

1 - Ambos os projetos dependem do Apache-kafka para comunicação, então este é o primeiro serviço que deve ser inicializado. Para tal:

  • entre no diretório do apache-kafka e execute "docker-compose up -d" pressupõe-se que tenha docker e docker-compose instalados.

2 - O segundo serviço a ser inicializado pode ser o bank-api. Para tal:

  • entre no diretório bank-api e execute npm install ou yarn para instalar as dependências do projeto.
  • Para teste possuímos no diretório o docker-compose_bbx.yaml isso inicializa uma instância da bank-api para simular um dos banco. Então execute "docker-compose -f docker-compose_bbx.yaml", está instância roda na porta 8001.
  • E possível manter em execução 2 instâncias de bancos para testes. Então execute "docker-compose -f docker-compose_cter.yaml" em outro terminal para iniciar o segundo banco, está instância roda na porta 8002.

3 - Por último execute o servidor gRPC e o serviço do Kafka. Para executar estes serviços a aplicação rust-codepix possui uma CLI(command line interface).

  • Os serviço podem ser inicializados independentes com "cargo run -- start" para o servidor gRPC e "cargo run -- kafka" para o kafka.
  • Como precisamos de ambos os serviços em execução, o Rust nós permite que os serviço sejam executados na mesma "thread" mais de forma simultânea sem bloqueios (assíncrona), também foi configurado um comando único para isso, execute "cargo run -- all".
  • Utilizamos Tokio runtime dependência para esse gerenciamento. É uma ótima oportunidade para experimentar também o desempenho desses serviços os executando de forma assíncrona em 2 "threads independentes". Para isso altere o comando em /cmd/mod.rs linhas 88 e 92 seguindo as configurações de Tokio runtime para está finalidade.

About

rust-gRPC-Kafka-microservices-codepix

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published