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
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!
- 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);
}
docker-compose -f deployments/docker-compose.yml up
cd hermod
helm install hermod