Distributed Services with Go is a great learn-by-building book for distributed systems: https://pragprog.com/titles/tjgo/distributed-services-with-g...
> This book walks the reader through building a real-world software project (a self-contained, persistent event-stream service) from start to finish. There isn’t a book that walks through building a complete system like this in any language. This book introduces distributed systems practically, explaining the pieces that make up a distributed system and showing how they fit together.