Kafka is a distributed event streaming platform often used for high-performance data pipelines. In this challenge, you’ll build a Kafka broker from scratch. Along the way, you’ll learn about TCP servers, the Kafka wire protocol and more.
We’re starting out with a set of base stages + 2 extensions:
Currently available in Rust, Go, Python and JavaScript, with more languages on the way.
The challenge will be free during beta (about a month or two). The instructions for later stages are still a work in progress, but we’ve added notes on how the tester works.
Start building now and let us know which languages you’d like to see next!
A warning to those brave enough to attempt this: the Kafka docs are absolutely horrible
@ryan-gang (author of this challenge), @andy1li and I spent countless hours banging our heads against the wall, inspecting hexdumps and wading through the Kafka source just to make sense of what’s going on.
We’ve tried to make this easier for you folks by building a parser that highlights errors well, for example:
If you’ve got ideas on how we can make this more approachable / easy to work with - please let us know! Maybe we could work on an “Unofficial guide to the Kafka protocol”? Or a more interactive version like what Wireshark does with network protocols?
I’m a little bit confused. If this “challenge” is about guessing what to do then that doesn’t seem that much fun and challenging at all.
There’s no guessing here - the challenge is to re-implement Kafka. We just don’t have a friendly re-interpretation of Kafka docs like we have for the previous stages (yet). We’ve added tester notes so that it’s clear what exact tests you need to pass. Our tests are run against an official Kafka server to ensure that they’re valid.
I think it is better to release something a little bit more polished than to beta test on users:
The challenge is marked as beta for a reason This is our style – we release early and often. If you’re looking for a more polished experience, I’d recommend checking out our other challenges that have been around for a while, like Redis.
I am experiencing this warning today just getting to the ApiVersionRequest stage. I didn’t think the Kafka docs were too bad until now, it loosely defines what this request is then goes on to entirely disregard defining what it actually looks like in the docs!
Thanks for putting this together, I’ve been wanting to learn more about how Kafka works before potentially starting on a large real-world project with it soon that would interface directly with its APIs. I’m looking forward to the upcoming additional instructions on it.