<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Concurrency on Home</title><link>https://bala-krishnan.com/tags/concurrency/</link><description>Recent content in Concurrency on Home</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 23 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://bala-krishnan.com/tags/concurrency/index.xml" rel="self" type="application/rss+xml"/><item><title>Building a load balancer in Go, part 2: round robin and a counter that can't count</title><link>https://bala-krishnan.com/posts/25-steer-round-robin/</link><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><guid>https://bala-krishnan.com/posts/25-steer-round-robin/</guid><description>In part 1 I built the smallest possible load balancer: one backend, and Go&amp;rsquo;s httputil.ReverseProxy doing almost all the work. This time I wanted it to actually balance something, so phase 2 of steer is round robin across several backends.
Round robin is the simplest load balancing algorithm there is: request 1 goes to backend A, request 2 to B, request 3 to C, request 4 back to A, and so on.</description></item></channel></rss>