Skip to content

An end-to-end Microservice project in GoLang that uses different protocols like REST, RPC, gRPC for communications.

Notifications You must be signed in to change notification settings

ayushthe1/go-micro

Repository files navigation

Go-micro

This is a project consisting of 6 different microservices written in GoLang. This is an End-to-End Distributed System that uses different protocols like rpc, GRPC , REST API's and Queueing Systems for communication between the services.

The main goal of this project is to provide a clear and concise understanding of the communication mechanisms utilized by this microservice architecture-based distributed system. By doing so, users can gain a comprehensive understanding of how the system operates and how these communication mechanisms enable seamless integration between different software services, leading to a more efficient and scalable application..

This project can be deployed either via a docker swarm (also via minikube cluster in future).

Project Architecture

Demo Video

Screencast.from.01-05-24.11.14.35.AM.IST.webm

These are the core services that perform distributed actions

  • authentication-service for Authenticating users. Stores the users data in a Postgres Container.
  • Broker Service is the central node point for handling each request from the client and rendering a response to the client. This Service calls the right service(authentication, listener, logger and mailer ) when a request is called from the front-end
  • logger-service receives and accepts the data from the authentication, listener and mailer service ,when each service has been called through the broker service . The data from each service is stored in a MongoDb database.It also handles the gRPC and RPC actions when called by the broker service.
  • mail-service Handles sending of mails
  • listener-service This service consumes messages in RabbitMQ (running in a different container) and initiates a process.
  • front-end just displays outputs for each action performed internally
  • Caddy-service acts as a reverse proxy. It forwards requests coming to http://localhost to the front-end service.

To deploy via Docker swarm

  1. Ensure you have docker installed and running on your system.

  2. In your terminal ,type sudo nano /etc/hosts and enter your password.

  3. In the file ,add a line 127.0.0.1 backend . The updated file should look something like this :


image

  1. Clone this repo

  2. From inside the repo, cd into /project directory.

  3. Type command make deploy_swarm in the terminal.

  4. The project will be deployed on docker swarm.

About

An end-to-end Microservice project in GoLang that uses different protocols like REST, RPC, gRPC for communications.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published