MessageMingle 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/Scylla/Postrgres/Redis
- Load Testing using simple golang client
- Unit Testing
- Monitoring using Prometheus and Grafana
- Tracing using Jaeger
- Rate Limiting using envoy
- Load balancing using envoy
- Deploying using docker and kubernetes (helm)
- Creating helm chart for easy deployment
- ServerCluster for high availability
Features:
- Ready to be deployed on kubernetes
- Prometheus metrics
- Handling up to 34k requests per second
- All message get stored in DB
- 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
- Kubernetes
- Helm
docker-compose up broker
helm install MessageMingle ./messageMingle --values ./messageMingle/values.yaml