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
Broker can have several topics and each message published to certain topic will be broadcasted to all subscribers to that topic.
- 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);
}
chmod +x run.sh
./run.sh
this starts grpc server on port 8086. prometheus metrics can be accessed from :8000/metrics
cd k8
kubectl apply -f service.yml
kubectl apply -f deployment.yml
this project was part of Bale messenger's bootcamp