/Hermod

Mythic, Mighty, Simple Message Broker written in Go.

Primary LanguageGo

Hermod: Mythic, Mighty, Simple Message Broker

Hermod is a fast and simple gRPC based broker. It's a mini practical project to sail through the Golang and most common used tools and frameworks including:

  • gRPC/Protobuf
  • Concurrent programming
  • Storing data using Cassandra/Postrgres/Redis
  • Load Testing using K6 and simple golang client
  • Unit Testing
  • Monitoring using Prometheus and Grafana
  • Tracing using Jaeger
  • Rate Limiting using envoy
  • Caching and batching for highly better performance
  • Deploying using docker and kubernetes
  • Creating helm chart for easy deployment

Structure

overall architecture For better understanding the core and logical concept of Hermod, i've created a simple prezi presentation. You can find it here. Make sure to check it out!

RPCs Description

  • Publish Requst
message PublishRequest {
  string subject = 1;
  bytes body = 2;
  int32 expirationSeconds = 3;
}
  • Fetch Request
message FetchRequest {
  string subject = 1;
  int32 id = 2;
}
  • Subscribe Request
message SubscribeRequest {
  string subject = 1;
}
  • RPC Service
service Broker {
  rpc Publish (PublishRequest) returns (PublishResponse);
  rpc Subscribe(SubscribeRequest) returns (stream MessageResponse);
  rpc Fetch(FetchRequest) returns (MessageResponse);
}

Up and Running

Docker

docker-compose -f deployments/docker-compose.yml up

Kubernetes

cd hermod
helm install hermod