Skip to content
HeyJared

Hands On Kafka

StreamSocial - a global social media analytics and engagement platform designed to handle 50M requests. This system will process user interactions, generate real-time trends, personalized feeds, and analytics across multiple services.

Newsletter · By Systems · English · Official site

Indexed issues, last 90 days
17
Latest publication
Sep 29, 2026
Audience
Checking…
Earliest in this view
Aug 28, 2026

Latest issues

  1. Issue · Sep 29, 2026

    Lesson 64: Building the REST Controller (opens the original)

    Excerpt · Critical tone

    Read excerpt

    The “Naive” ApproachThe standard-issue instinct here is: add spring-boot-starter-web, slap @RestController on a class, write @GetMapping("/drivers/near/{lat}/{lon}"), and call store.get() inside the method body. It compiles, it demos, and it is wrong in three separate ways that only surface under load.Thread pool exhaustion. Spring’s embedded Tomcat services requests from a bounded platform-thread pool — typically 200 threads by default. But a /drivers/near request is not a cheap local lookup; p

  2. Issue · Sep 27, 2026

    Day 15: Custom Partitioning Logic (opens the original)

    Excerpt

    Read excerpt

    What we’ll build todayGeoAwarePartitioner: a real, from-scratch implementation of Kafka’s Partitioner interface — not the default hash-based one every producer in this course has used since Day 4A two-level routing scheme: region decides a range of partitions, then a hash decides where within that rangeA fully offline test suite proving it against synthetic global traffic — no broker, no Docker, none needed<a class="image-link image2 is-vie

  3. Issue · Sep 25, 2026

    Lesson 63: Local vs. Remote Queries — The In-Process Fast Path (opens the original)

    Excerpt · Critical tone

    Read excerpt

    The Named ConstraintLesson 62’s HostInfoRouter solved correctness: every query reaches an instance that can actually answer it, honestly flagged if the answer came from a lagging standby. But it solved correctness uniformly — every single query, including the roughly one-in-three that lands on an instance that already owns the data locally, pays the exact same cost: build an HttpRequest, hand it to HttpClient, cross the loopback socket, parse a response, deserialize JSON. The constraint for this

  4. Issue · Sep 23, 2026

    Day 14: Message Ordering & Keys (opens the original)

    Excerpt

    Read excerpt

    What we’ll build todayUserActionEvent.partitionKey(): naming a decision that’s been in place since Day 4, not changing itA precise account of what per-key ordering actually guarantees, and where it stopsMessageOrderingIT: real concurrent producer threads, a real topic, real proof — not an argument from documentation<a class="image-link image2 is-viewable-img" href="https://substackcdn.com/image/fetch/$s_!yFuI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2F

  5. Issue · Sep 21, 2026

    Lesson 62: The HostInfo API — Building a Metadata Service on (opens the original)

    Excerpt · Critical tone

    Read excerpt

    The Named ConstraintLesson 61 built a scatter-gather RPC layer that fans queries out across the fleet using allMetadataForStore(). That worked, but it quietly leaned on an assumption we never justified: that the metadata telling us who owns what is always accurate and always current. It isn’t. Kafka Streams’ partition assignment is a moving target — every rebalance re-shuffles which StreamThread, on which instance, owns which partition, and there is a real window where an instance holds a partit

Publishing over time

Last 90 days. Choose a month to open its work.

Recurring subjects

Named in the text we hold. One piece can cover several.

Audience

No verified audience measurement yet.

About this data

Counts cover the work we have indexed. Tone needs enough text and a confident classification. Excerpts and episode notes are not full articles or transcripts.

Identity or attribution wrong? Suggest a correction.

See coverage about Hands On Kafka