/ChizBroker

grpc based message broker in go

Primary LanguageGo

Chiz Broker: a broker for fun

ChizBroker is a fast and simple GRPC based implementation of kafka. Features:

  • Ready to be deployed on kubernetes
  • Prometheus metrics
  • Handling up to 7k publish rpcs on a single node
  • All message get stored in DB

Architecture

overall architecture Broker can have several topics and each message published to certain topic will be broadcasted to all subscribers to that topic.

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);
}

How to Run it?

docker

chmod +x run.sh
./run.sh

this starts grpc server on port 8086. prometheus metrics can be accessed from :8000/metrics

kubernetes

cd k8
kubectl apply -f service.yml
kubectl apply -f deployment.yml

this project was part of Bale messenger's bootcamp